diff -urN /usr/ports/math/superlu/Makefile math/superlu/Makefile --- /usr/ports/math/superlu/Makefile 2015-08-24 03:58:04.541186000 +0900 +++ math/superlu/Makefile 2016-01-09 00:00:00.000000000 +0900 @@ -3,11 +3,11 @@ PORTNAME= superlu PORTVERSION= ${P_VERSION} -PORTREVISION= 3 CATEGORIES= math -MASTER_SITES= http://crd.lbl.gov/~xiaoye/SuperLU/ \ - http://crd.lbl.gov/~xiaoye/:doc +MASTER_SITES= http://crd-legacy.lbl.gov/~xiaoye/SuperLU/ \ + http://crd-legacy.lbl.gov/~xiaoye/:doc DISTNAME= ${PORTNAME}_${P_VERSION} +DISTFILES= ${DISTNAME}${EXTRACT_SUFX} DIST_SUBDIR= ${PORTNAME} EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} @@ -17,80 +17,71 @@ LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/README -USES= fortran +WRKSRC= ${WRKDIR}/SuperLU_${P_VERSION} +USES= fortran +ALL_TARGET= lib +TEST_TARGET= testing USE_LDCONFIG= yes +MAKE_JOBS_UNSAFE= yes -P_VERSION= 4.3 -P_VER= ${P_VERSION:R} -WRKSRC= ${WRKDIR}/SuperLU_${P_VERSION} -ALL_TARGET= lib PLIST_SUB= P_VERSION=${P_VERSION} P_VER=${P_VER} -ARCH2FIX= SRC/Makefile TESTING/MATGEN/Makefile CBLAS/Makefile make.inc \ +ARCH2FIX= make.inc \ + SRC/Makefile TESTING/MATGEN/Makefile CBLAS/Makefile \ MAKE_INC/make.alpha MAKE_INC/make.inc +P_VERSION= 5.1 +P_VER= ${P_VERSION:R} -MAKE_JOBS_UNSAFE= yes - -.include - -.if ${PORT_OPTIONS:MDOCS} -DISTFILES= ${DISTNAME}${EXTRACT_SUFX} superlu_ug.pdf SLU_general.ps.gz:doc simax95.ps.gz:doc -.endif - -.if exists(${LOCALBASE}/lib/libgoto2.so) -WITH_BLAS?= gotoblas -.elif exists(${LOCALBASE}/lib/libatlas.so) -WITH_BLAS?= atlas -.else -WITH_BLAS?= reference -.endif - -. if ${WITH_BLAS} == reference -LIB_DEPENDS+= libblas.so:${PORTSDIR}/math/blas -BLAS= -lblas -.elif ${WITH_BLAS} == gotoblas -LIB_DEPENDS+= libgoto2.so:${PORTSDIR}/math/gotoblas -BLAS= -lgoto2p -.elif ${WITH_BLAS} == atlas -LIB_DEPENDS+= libatlas.so:${PORTSDIR}/math/atlas -BLAS= -lptf77blas -.endif +OPTIONS_DEFINE= DOCS +OPTIONS_SINGLE= BLAS +OPTIONS_SINGLE_BLAS= ATLAS GOTOBLAS REFERENCE +OPTIONS_DEFAULT= REFERENCE + +ATLAS_USES= blaslapack:atlas +DOCS_DISTFILES= superlu_ug.pdf \ + SLU_general.ps.gz:doc \ + simax-29176.pdf:doc +GOTOBLAS_DESC= GotoBLAS blas implementation +GOTOBLAS_USES= blaslapack:gotoblas +REFERENCE_DESC= Reference blas implementation +REFERENCE_USES= blaslapack pre-build: - ${REINPLACE_CMD} -e 's+%%BLAS%%+-L${LOCALBASE}/lib ${BLAS}+ ; \ - s+%%CC%%+${CC}+; s+%%FC%%+${FC}+; \ - s+%%WRKSRC%%+${WRKSRC}+; \ - s+%%CFLAGS%%+${CFLAGS}+; \ - s+%%FFLAGS%%+${FFLAGS}+' \ - ${WRKSRC}/make.inc + @${REINPLACE_CMD} -e \ + 's|%%BLASLIB%%|-L${LOCALBASE}/lib ${BLASLIB}| ; \ + s|%%CC%%|${CC}| ; \ + s|%%FC%%|${FC}| ; \ + s|%%WRKSRC%%|${WRKSRC}| ; \ + s|%%CFLAGS%%|${CFLAGS}| ; \ + s|%%FFLAGS%%|${FFLAGS}|' ${WRKSRC}/make.inc .for fmk in ${ARCH2FIX} - ${REINPLACE_CMD} -e 's|^ARCH *.= ar|ARCMD = ar| ; \ - s|\$$(ARCH)|$$(ARCMD)|' ${WRKSRC}/${fmk} + @${REINPLACE_CMD} -e \ + 's|^ARCH .*= ar|ARCMD = ar| ; \ + s|\$$(ARCH)|$$(ARCMD)|' ${WRKSRC}/${fmk} .endfor - ${FIND} ${WRKSRC} -name Makefile | ${XARGS} \ - ${REINPLACE_CMD} -E -e 's|\( cd (.*); \$$\(MAKE\) \)|\$$(MAKE) -C \1|' + @${FIND} ${WRKSRC} -name Makefile | ${XARGS} ${REINPLACE_CMD} -E -e \ + 's|\( cd (.*); \$$\(MAKE\) \)|\$$(MAKE) -C \1|' do-install: - ${INSTALL_DATA} ${WRKSRC}/lib/libsuperlu_${P_VERSION}.a \ - ${STAGEDIR}${PREFIX}/lib/libsuperlu.a - ${INSTALL_LIB} ${WRKSRC}/libsuperlu_${P_VERSION}.so \ - ${STAGEDIR}${PREFIX}/lib/libsuperlu.so.${P_VER} + @${MKDIR} ${STAGEDIR}${PREFIX}/include/superlu + (cd ${WRKSRC}/SRC && ${INSTALL_DATA} *.h \ + ${STAGEDIR}${PREFIX}/include/superlu) + (cd ${WRKSRC}/lib && ${INSTALL_DATA} libsuperlu_${P_VERSION}.a \ + ${STAGEDIR}${PREFIX}/lib/libsuperlu.a) + (cd ${WRKSRC} && ${INSTALL_LIB} libsuperlu_${P_VERSION}.so \ + ${STAGEDIR}${PREFIX}/lib/libsuperlu.so.${P_VER}) ${LN} -fs libsuperlu.so.${P_VER} \ ${STAGEDIR}${PREFIX}/lib/libsuperlu_${P_VERSION}.so ${LN} -fs libsuperlu_${P_VERSION}.so \ ${STAGEDIR}${PREFIX}/lib/libsuperlu.so - @${MKDIR} ${STAGEDIR}${PREFIX}/include/superlu - ${INSTALL_DATA} ${WRKSRC}/SRC/*.h ${STAGEDIR}${PREFIX}/include/superlu -.if ${PORT_OPTIONS:MDOCS} + +post-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} - ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/SLU_general.ps.gz ${STAGEDIR}${DOCSDIR} - ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/simax95.ps.gz ${STAGEDIR}${DOCSDIR} - ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/superlu_ug.pdf ${STAGEDIR}${DOCSDIR} -.endif + (cd ${DISTDIR}/${DIST_SUBDIR} && ${INSTALL_DATA} *.pdf *.ps.gz \ + ${STAGEDIR}${DOCSDIR}) -regression-test: build - (cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} testing ) +post-test: (cd ${WRKSRC}/TESTING && ${CAT} *.out ) -.include +.include diff -urN /usr/ports/math/superlu/distinfo math/superlu/distinfo --- /usr/ports/math/superlu/distinfo 2015-08-24 03:58:04.567638000 +0900 +++ math/superlu/distinfo 2016-01-09 00:00:00.000000000 +0900 @@ -1,8 +1,8 @@ -SHA256 (superlu/superlu_4.3.tar.gz) = 169920322eb9b9c6a334674231479d04df72440257c17870aaa0139d74416781 -SIZE (superlu/superlu_4.3.tar.gz) = 2875951 -SHA256 (superlu/superlu_ug.pdf) = 4657e60fb7832465b60e208613992d29b6bbd8110103bfe0f5cee0ab79b67766 -SIZE (superlu/superlu_ug.pdf) = 458405 +SHA256 (superlu/superlu_5.1.tar.gz) = 307ef10edef4cebc6c7f672cd931ae6682db4c4f5f93a44c78e9544a520e2db1 +SIZE (superlu/superlu_5.1.tar.gz) = 2562892 +SHA256 (superlu/superlu_ug.pdf) = cc6c0a9c94e69041e2f7bf55780458a79c5bfb31af370d31771fb5f541837226 +SIZE (superlu/superlu_ug.pdf) = 679830 SHA256 (superlu/SLU_general.ps.gz) = 00d00cedfadd96a42014d22b30c0cc451a575d8d309774519068b11d4be1ebe5 SIZE (superlu/SLU_general.ps.gz) = 89463 -SHA256 (superlu/simax95.ps.gz) = b7e7705a280336474a25b0a1aef57226d81ea0dc6f18728b7347cb1726f91d2a -SIZE (superlu/simax95.ps.gz) = 138096 +SHA256 (superlu/simax-29176.pdf) = 1411a3976b932a834157064dbaf0cdda10763f321bae10eb6f18925432250226 +SIZE (superlu/simax-29176.pdf) = 521916 diff -urN /usr/ports/math/superlu/files/patch-SRC+sp_coletree.c math/superlu/files/patch-SRC+sp_coletree.c --- /usr/ports/math/superlu/files/patch-SRC+sp_coletree.c 2015-08-24 03:58:04.518235000 +0900 +++ math/superlu/files/patch-SRC+sp_coletree.c 2016-01-09 00:00:00.000000000 +0900 @@ -1,6 +1,6 @@ ---- SRC/sp_coletree.c.orig Fri Sep 26 08:22:05 2003 -+++ SRC/sp_coletree.c Thu Apr 1 20:29:10 2004 -@@ -2,6 +2,9 @@ +--- SRC/sp_coletree.c.orig 2015-07-24 02:28:27 UTC ++++ SRC/sp_coletree.c +@@ -23,6 +23,9 @@ /* Elimination tree computation and layout routines */ #include @@ -8,5 +8,5 @@ +#include +#endif #include - #include "dsp_defs.h" + #include "slu_ddefs.h" diff -urN /usr/ports/math/superlu/files/patch-SRC-Makefile math/superlu/files/patch-SRC-Makefile --- /usr/ports/math/superlu/files/patch-SRC-Makefile 2015-08-24 03:58:04.496668000 +0900 +++ math/superlu/files/patch-SRC-Makefile 2016-01-09 00:00:00.000000000 +0900 @@ -1,8 +1,8 @@ ---- SRC/Makefile.orig 2011-10-27 21:49:47.000000000 +0200 -+++ SRC/Makefile 2014-08-28 21:11:48.000000000 +0200 -@@ -111,35 +111,43 @@ +--- SRC/Makefile.orig 2015-12-04 01:06:38 UTC ++++ SRC/Makefile +@@ -98,31 +98,43 @@ ZLUSRC = \ ilu_zcolumn_dfs.o ilu_zpanel_dfs.o ilu_zcopy_to_ucol.o \ - ilu_zpivotL.o zdiagonal.o + ilu_zpivotL.o zdiagonal.o zlacon2.o dzsum1.o izmax1.o -all: single double complex complex16 +SINGLE = $(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX) @@ -12,24 +12,20 @@ + +all: static shared - single: $(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX) -- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \ -- $(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX) + single: $(SLUSRC) $(ALLAUX) $(SCAUX) +- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) $(SLUSRC) $(ALLAUX) $(SCAUX) - $(RANLIB) $(SUPERLULIB) - double: $(DLUSRC) $(ALLAUX) $(LAAUX) $(DLASRC) $(DZLAUX) -- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \ -- $(DLUSRC) $(ALLAUX) $(LAAUX) $(DLASRC) $(DZLAUX) + double: $(DLUSRC) $(ALLAUX) $(DZLAUX) +- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) $(DLUSRC) $(ALLAUX) $(DZLAUX) - $(RANLIB) $(SUPERLULIB) - complex: $(CLUSRC) $(ALLAUX) $(LAAUX) $(CLASRC) $(SCLAUX) -- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \ -- $(CLUSRC) $(ALLAUX) $(LAAUX) $(CLASRC) $(SCLAUX) + complex: $(CLUSRC) $(ALLAUX) $(SCAUX) +- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) $(CLUSRC) $(ALLAUX) $(SCAUX) - $(RANLIB) $(SUPERLULIB) - complex16: $(ZLUSRC) $(ALLAUX) $(LAAUX) $(ZLASRC) $(DZLAUX) -- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \ -- $(ZLUSRC) $(ALLAUX) $(LAAUX) $(ZLASRC) $(DZLAUX) + complex16: $(ZLUSRC) $(ALLAUX) $(DZLAUX) +- $(ARCH) $(ARCHFLAGS) $(SUPERLULIB) $(ZLUSRC) $(ALLAUX) $(DZLAUX) + +static: single double complex complex16 + $(ARCMD) $(ARCHFLAGS) $(SUPERLULIB) $(SINGLE) @@ -38,8 +34,8 @@ + $(ARCMD) $(ARCHFLAGS) $(SUPERLULIB) $(COMPLEX16) $(RANLIB) $(SUPERLULIB) -+shared: single double complex complex16 -+ $(CC) -shared -Wl,-soname=$(SUPERLULIB_SHARED) -o ../$(SUPERLULIB_SHARED) \ ++shared: single double complex complex16 ++ $(CC) -shared -Wl,-soname,$(SUPERLULIB_SHARED) -o ../$(SUPERLULIB_SHARED) \ + $(ALLAUX) $(LAAUX) $(SCLAUX) $(DZLAUX) \ + $(SLUSRC) $(SLASRC) \ + $(DLUSRC) $(DLASRC) \ @@ -50,16 +46,16 @@ ################################## # Do not optimize these routines # ################################## --slamch.o: slamch.c ; $(CC) -c $(NOOPTS) $(CDEFS) $< --dlamch.o: dlamch.c ; $(CC) -c $(NOOPTS) $(CDEFS) $< +-smach.o: smach.c ; $(CC) -c $(NOOPTS) $(CDEFS) $< +-dmach.o: dmach.c ; $(CC) -c $(NOOPTS) $(CDEFS) $< -superlu_timer.o: superlu_timer.c ; $(CC) -c $(NOOPTS) $< -+slamch.o: slamch.c ; $(CC) -fpic -c $(NOOPTS) $(CDEFS) $< -+dlamch.o: dlamch.c ; $(CC) -fpic -c $(NOOPTS) $(CDEFS) $< ++smach.o: smach.c ; $(CC) -fpic -c $(NOOPTS) $(CDEFS) $< ++dmach.o: dmach.c ; $(CC) -fpic -c $(NOOPTS) $(CDEFS) $< +superlu_timer.o: superlu_timer.c ; $(CC) -fpic -c $(NOOPTS) $< ################################## .c.o: -@@ -149,4 +157,4 @@ +@@ -132,4 +144,4 @@ superlu_timer.o: superlu_timer.c ; $(CC $(FORTRAN) $(FFLAGS) -c $< clean: diff -urN /usr/ports/math/superlu/files/patch-TESTING_Makefile math/superlu/files/patch-TESTING_Makefile --- /usr/ports/math/superlu/files/patch-TESTING_Makefile 2015-08-24 03:58:04.526071000 +0900 +++ math/superlu/files/patch-TESTING_Makefile 2016-01-09 00:00:00.000000000 +0900 @@ -1,6 +1,6 @@ ---- TESTING/Makefile.orig 2011-10-27 21:49:47.000000000 +0200 -+++ TESTING/Makefile 2014-08-27 19:38:04.000000000 +0200 -@@ -54,7 +54,7 @@ +--- TESTING/Makefile.orig 2015-07-24 02:28:27 UTC ++++ TESTING/Makefile +@@ -54,7 +54,7 @@ single: ./stest stest.out ./stest: $(SLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) $(LOADER) $(LOADOPTS) $(SLINTST) $(ALINTST) \ @@ -9,7 +9,7 @@ stest.out: stest stest.csh @echo Testing SINGLE PRECISION linear equation routines -@@ -64,7 +64,7 @@ +@@ -64,7 +64,7 @@ double: ./dtest dtest.out ./dtest: $(DLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) $(LOADER) $(LOADOPTS) $(DLINTST) $(ALINTST) \ @@ -18,7 +18,7 @@ dtest.out: dtest dtest.csh @echo Testing DOUBLE PRECISION linear equation routines -@@ -74,7 +74,7 @@ +@@ -74,7 +74,7 @@ complex: ./ctest ctest.out ./ctest: $(CLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) $(LOADER) $(LOADOPTS) $(CLINTST) $(ALINTST) \ @@ -27,7 +27,7 @@ ctest.out: ctest ctest.csh @echo Testing SINGLE COMPLEX linear equation routines -@@ -84,7 +84,7 @@ +@@ -84,7 +84,7 @@ complex16: ./ztest ztest.out ./ztest: $(ZLINTST) $(ALINTST) $(SUPERLULIB) $(TMGLIB) $(LOADER) $(LOADOPTS) $(ZLINTST) $(ALINTST) \ diff -urN /usr/ports/math/superlu/files/patch-make.inc math/superlu/files/patch-make.inc --- /usr/ports/math/superlu/files/patch-make.inc 2015-08-24 03:58:04.504034000 +0900 +++ math/superlu/files/patch-make.inc 2016-01-09 00:00:00.000000000 +0900 @@ -1,24 +1,26 @@ ---- make.inc.orig 2011-12-12 23:34:18.000000000 +0100 -+++ make.inc 2014-08-26 23:26:34.000000000 +0200 -@@ -21,14 +21,15 @@ +--- make.inc.orig 2015-12-04 01:06:38 UTC ++++ make.inc +@@ -21,8 +21,9 @@ PLAT = _linux # # The name of the libraries to be created/linked to # --SuperLUroot = $(HOME)/Codes/SuperLU/SuperLU_4.3 +-SuperLUroot = $(HOME)/Dropbox/Codes/SuperLU/SuperLU +SuperLUroot = %%WRKSRC%% - SUPERLULIB = $(SuperLUroot)/lib/libsuperlu_4.3.a -+SUPERLULIB_SHARED = libsuperlu_4.3.so - TMGLIB = libtmglib.a + SUPERLULIB = $(SuperLUroot)/lib/libsuperlu_5.1.a ++SUPERLULIB_SHARED = libsuperlu_5.1.so + + #BLASLIB = $(SuperLUroot)/lib/libblas.a - ## BLASLIB = $(SuperLUroot)/lib/libblas.a +@@ -32,7 +33,7 @@ SUPERLULIB = $(SuperLUroot)/lib/libsu + ## This BLAS causes single-precision to fail the test in SuperLU BLASDEF = -DUSE_VENDOR_BLAS --BLASLIB = -L$(HOME)/lib/GotoBLAS -lgoto -+BLASLIB = %%BLAS%% +-BLASLIB = -L/usr/lib -lblas ++BLASLIB = %%BLASLIB%% - ## ATLAS BLAS causes single-precision to fail - #BLASLIB = -L/usr/lib/atlas -lblas -@@ -41,15 +42,14 @@ + TMGLIB = libtmglib.a + LIBS = $(SUPERLULIB) $(BLASLIB) +@@ -41,17 +42,17 @@ LIBS = $(SUPERLULIB) $(BLASLIB) # The archiver and the flag(s) to use when building archive (library) # If your system has no ranlib, set RANLIB = echo. # @@ -28,20 +30,24 @@ RANLIB = ranlib -CC = gcc --CFLAGS = -DPRNTlevel=0 -O3 -+CFLAGS = -DPRNTlevel=0 %%CFLAGS%% -fpic +-CFLAGS = -O3 -g ++#CC = gcc ++CFLAGS = %%CFLAGS%% -fpic NOOPTS = --FORTRAN = g77 --FFLAGS = -O2 +-FORTRAN = gfortran #g77 +-FFLAGS = -O2 -g -fopenmp +FORTRAN = %%FC%% +FFLAGS = %%FFLAGS%% LOADER = $(CC) - LOADOPTS = +-LOADOPTS = -fopenmp ++#LOADOPTS = -fopenmp -@@ -61,5 +61,5 @@ + # + # C preprocessor defs for compilation for the Fortran interface +@@ -61,5 +62,5 @@ CDEFS = -DAdd_ # # The directory in which Matlab is installed # -MATLAB = /usr/sww/matlab -+#MATLAB = /usr/sww/pkg/matlab ++#MATLAB = /usr/sww/matlab diff -urN /usr/ports/math/superlu/pkg-descr math/superlu/pkg-descr --- /usr/ports/math/superlu/pkg-descr 2015-08-24 03:58:04.578678000 +0900 +++ math/superlu/pkg-descr 2016-01-09 00:00:00.000000000 +0900 @@ -1,24 +1,16 @@ - SuperLU (Version 3.0) - ===================== +SuperLU is a general purpose library for the direct solution of large, +sparse, nonsymmetric systems of linear equations on high performance +machines. The library is written in C and is callable from either C or +Fortran. The library routines will perform an LU decomposition with +partial pivoting and triangular system solves through forward and back +substitution. The LU factorization routines can handle non-square +matrices but the triangular solves are performed only for square +matrices. The matrix columns may be preordered (before factorization) +either through library or user supplied routines. This preordering for +sparsity is completely separate from the factorization. Working +precision iterative refinement subroutines are provided for improved +backward stability. Routines are also provided to equilibrate the +system, estimate the condition number, calculate the relative backward +error, and estimate error bounds for the refined solutions. -SuperLU is a general purpose library for the direct solution of large, -sparse, nonsymmetric systems of linear equations on high performance -machines. The library is written in C and is callable from either C or -Fortran. The library routines will perform an LU decomposition with -partial pivoting and triangular system solves through forward and back -substitution. The LU factorization routines can handle non-square matrices -but the triangular solves are performed only for square matrices. The -matrix columns may be preordered (before factorization) either through -library or user supplied routines. This preordering for sparsity is -completely separate from the factorization. Working precision iterative -refinement subroutines are provided for improved backward stability. -Routines are also provided to equilibrate the system, estimate the -condition number, calculate the relative backward error, and estimate -error bounds for the refined solutions. - -WWW: http://crd.lbl.gov/~xiaoye/SuperLU/ - -Developers: Sherry Li - Jim Demmel - John Gilbert -NOTE: This library has to be linked with BLAS or a compatible library. +WWW: http://crd-legacy.lbl.gov/~xiaoye/SuperLU/ diff -urN /usr/ports/math/superlu/pkg-plist math/superlu/pkg-plist --- /usr/ports/math/superlu/pkg-plist 2015-08-24 03:58:04.535179000 +0900 +++ math/superlu/pkg-plist 2016-01-09 00:00:00.000000000 +0900 @@ -15,5 +15,5 @@ lib/libsuperlu.so.%%P_VER%% lib/libsuperlu_%%P_VERSION%%.so %%PORTDOCS%%%%DOCSDIR%%/SLU_general.ps.gz -%%PORTDOCS%%%%DOCSDIR%%/simax95.ps.gz +%%PORTDOCS%%%%DOCSDIR%%/simax-29176.pdf %%PORTDOCS%%%%DOCSDIR%%/superlu_ug.pdf