Index: head/lang/smlnj/Makefile =================================================================== --- head/lang/smlnj/Makefile (revision 370815) +++ head/lang/smlnj/Makefile (revision 370816) @@ -1,389 +1,419 @@ # $FreeBSD$ PORTNAME= smlnj -PORTVERSION= 110.76 -PORTREVISION= 1 +PORTVERSION= 110.77 CATEGORIES= lang MASTER_SITES= http://smlnj.cs.uchicago.edu/dist/working/${PORTVERSION}/ \ ftp://mirror.free.de/http/smlnj.cs.uchicago.edu/dist/working/${PORTVERSION}/ DISTFILES= config.tgz runtime.tgz DIST_SUBDIR= smlnj/${PORTVERSION} EXTRACT_ONLY= config.tgz MAINTAINER= joemann@beefree.free.de COMMENT= Compiler and tools for Standard ML (SML '97) +LICENSE= SMLNJ +LICENSE_NAME= Standard ML of New Jersey License +LICENSE_TEXT= The text of the license can be obtained from the following URL:\ + http://www.smlnj.org/license.html +LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept + NO_WRKSUBDIR= yes SUB_FILES= pkg-install SUB_LIST= EXEBINDIR=${MLBINRELATIVE} EXENAMES="${MLEXE}" PKGDEINSTALL= ${PKGINSTALL} # Calm portlint CALM= OPTIONS_RADIO= RG1 OPTIONS_RADIO_RG1= EVERYTHING RECOMPILE POSITION64 OPTIONS_EXCLUDE_amd64= RECOMPILE POSITION64 EVERYTHING_DESC= install${CALM} everything from the SML/NJ distribution RECOMPILE_DESC= recompile the SML compiler - implies EVERYTHING POSITION64_DESC= use 64bit file${CALM} positions - implies RECOMPILE .include # Recompiling the compiler currently fails on amd64 .if ${ARCH} == "i386" ML_RECOMPILE_OPTIONS= RECOMPILE POSITION64 .endif .if (${ARCH} == "amd64") && (${OSVERSION} >= 1000029) ONLY_FOR_ARCHS= i386 amd64 .elif (${ARCH} == "amd64") && (${OSVERSION} >= 800000) ONLY_FOR_ARCHS= i386 amd64 # Compilation of the i386 runtime source on older amd64 systems requires # i386 system headers from the respective FreeBSD Version, taken from # stable/N/sys/i386/include, r196045 (N=8) and r225736 (N=9). EXTRA_DEFS+= -DINCLUDE_FREEBSD_I386_SIGNAL=\\\"freebsd-8-i386-signal.h\\\" EXTRA_DEFS+= -DINCLUDE_FREEBSD_I386_IEEEFP=\\\"freebsd-8-i386-ieeefp.h\\\" .if (${OSVERSION} < 900000) EXTRA_DEFS+= -DINCLUDE_FREEBSD_I386__TYPES=\\\"freebsd-8-i386-_types.h\\\" EXTRA_DEFS+= -DINCLUDE_FREEBSD_I386_ENDIAN=\\\"freebsd-8-i386-endian.h\\\" .else EXTRA_DEFS+= -DINCLUDE_FREEBSD_I386__TYPES=\\\"freebsd-9-i386-_types.h\\\" EXTRA_DEFS+= -DINCLUDE_FREEBSD_I386_ENDIAN=\\\"freebsd-9-i386-endian.h\\\" .endif .else ONLY_FOR_ARCHS= i386 .endif .if (${ARCH} == "amd64") CFLAGS+= -m32 AS?= as AS+= --32 .endif .if (${ARCH} == "i386" || ${ARCH} == "amd64") MLARCH= x86 DISTFILES+= boot.x86-unix.tgz .endif -DISTFILES+= MLRISC.tgz ckit.tgz cml.tgz heap2asm.tgz ml-burg.tgz \ - ml-lpt.tgz ml-lex.tgz ml-yacc.tgz nlffi.tgz \ +DISTFILES+= MLRISC.tgz ckit.tgz cml.tgz doc.tgz heap2asm.tgz \ + ml-burg.tgz ml-lpt.tgz ml-lex.tgz ml-yacc.tgz nlffi.tgz \ smlnj-lib.tgz trace-debug-profile.tgz PLIST_SUB= MLARCH=${MLARCH} .if ${PORT_OPTIONS:MPOSITION64} || defined(ML_POSITION64) ML_POSITION64?= ${PORT_OPTIONS:MPOSITION64} ML_RECOMPILE?= ${ML_POSITION64} ML_EVERYTHING?= ${ML_POSITION64} CMB_COMMAND= '(\#set o CMB.symval) "USE_64_BIT_POSITIONS" (SOME 1);' .else CMB_COMMAND= .endif .if ${PORT_OPTIONS:MRECOMPILE} || defined(ML_RECOMPILE) ML_RECOMPILE?= ${PORT_OPTIONS:MRECOMPILE} ML_EVERYTHING?= ${ML_RECOMPILE} .endif .if ${PORT_OPTIONS:MEVERYTHING} || defined(ML_EVERYTHING) ML_EVERYTHING?= ${PORT_OPTIONS:MEVERYTHING} DISTFILES+= cm.tgz compiler.tgz eXene.tgz \ pgraph.tgz smlnj-c.tgz system.tgz PLIST_SUB+= EVERYTHING="" .else PLIST_SUB+= EVERYTHING="@comment " .endif MLROOTRELATIVE= smlnj MLROOT= ${PREFIX}/${MLROOTRELATIVE} MLBINRELATIVE= ${MLROOTRELATIVE}/bin MLBIN= ${MLROOT}/bin MLLIB= ${MLROOT}/lib -MLSTDSRCDIRS= cml heap2asm ml-burg ml-lex ml-lpt ml-yacc nlffi smlnj-lib +MLSTDSRCDIRS= cml doc heap2asm ml-burg ml-lex ml-lpt ml-yacc nlffi smlnj-lib MLSRCDIRS= base ${MLSTDSRCDIRS} \ ckit eXene pgraph smlnj-c MLSRCS= .for srcdir in ${MLSRCDIRS} MLSRCS+= ${MLROOT}/${srcdir} .endfor MLTARGETS= heap2asm MLEXE= heap2exec ml-antlr ml-build ml-burg ml-lex ml-makedepend \ ml-nlffigen ml-ulex ml-yacc sml .if defined(ML_EVERYTHING) MLTARGETS+= eXene mlrisc-tools nowhere pgraph-util src-smlnj MLEXE+= nowhere PLIST= ${WRKDIR}/.PLIST MLRUNTIMEPLIST= ${WRKDIR}/.PLIST-runtime MLSRCPLIST= ${WRKDIR}/.PLIST-src MLPLISTFILES= ${.CURDIR}/pkg-plist ${MLRUNTIMEPLIST} ${MLSRCPLIST} .endif pre-fetch: @${ECHO} .if ! defined(ML_EVERYTHING) @${ECHO} 'Use make ML_EVERYTHING=yes to also build/install' @${ECHO} ' eXene (X Windows toolkit),' @${ECHO} ' nowhere (preprocessor for conditional patterns),' @${ECHO} ' various libraries, and all the sources.' .endif .if !empty(ML_RECOMPILE_OPTIONS:MRECOMPILE) && !defined(ML_RECOMPILE) @${ECHO} 'Use make ML_RECOMPILE=yes to recompile the compiler.' @${ECHO} ' This implies ML_EVERYTHING.' .endif .if !empty(ML_RECOMPILE_OPTIONS:MPOSITION64) && !defined(ML_POSITION64) @${ECHO} 'Use make ML_POSITION64=yes to use 64bit file positions.' @${ECHO} ' This implies ML_RECOMPILE.' .endif @${ECHO} # make symlinks to the dist files post-extract: cd ${WRKDIR} && ${LN} -sf ${_DISTDIR}/* . # Configuring is done by uncommenting the appropriate #request # lines of config/targets. Dependency details are handled by # base/system/smlnj/installer using config/dependencies and # config/actions. do-configure: .if defined(MLTARGETS) ${ECHO_CMD} -n > "${WRKDIR}/.tmp.sed" .for t in ${MLTARGETS} ${ECHO_CMD} '/^#request[ ]+${t}$$/s/^#//' >> "${WRKDIR}/.tmp.sed" .endfor ${SED} -i .default -E -f "${WRKDIR}/.tmp.sed" "${WRKDIR}/config/targets" .endif # Recompilation requires ml-lex and ml-yacc. All requested targets # will be built later using the recompiled core system after # removing targets.customized. See "do-build" below. .if defined(ML_RECOMPILE) ( ${ECHO_CMD} "request ml-yacc" && \ ${ECHO_CMD} "request ml-lex" && \ ${ECHO_CMD} "request ml-lex-mllex-tool" && \ ${ECHO_CMD} "request src-smlnj" ) \ > "${WRKDIR}/config/targets.customized" .endif # The build target patches, builds, and installs the system within WRKDIR. # base/runtime is not cleaned afterwards to avoid its recompilation during # a subsequent make install. # See base/system/README for information on recompiling the compiler. .if defined(ML_RECOMPILE) RECOMPILEDIR= base/system .else RECOMPILEDIR= .endif .if (${ARCH} == "amd64") && (${OSVERSION} >= 800000) && (${OSVERSION} < 1000029) MLRUNTIMEPATCHES_CMD= cd ${FILESDIR} && \ ( ${LS} do-patch-base_runtime_* extra-patch-base_runtime_* 2>&- || \ ${TRUE} ) .else MLRUNTIMEPATCHES_CMD= cd ${FILESDIR} && \ ( ${LS} do-patch-base_runtime_* 2>&- || \ ${TRUE} ) .endif MLSTANDARDPATCHES_CMD= cd ${FILESDIR} && \ ( for srcdir in ${MLSTDSRCDIRS} ; \ do ${LS} do-patch-$${srcdir}_* 2>&- ; \ done ) || ${TRUE} MLSTANDARDPATCHDIRS_CMD= cd ${FILESDIR} && \ ( for srcdir in ${MLSTDSRCDIRS} ; \ do if ${LS} do-patch-$${srcdir}_* 1>&- 2>&- ; \ then ${ECHO_CMD} -n $${srcdir} " " ; break ; fi ; \ done ) || ${TRUE} .if defined(ML_EVERYTHING) MLSOURCEPATCHES_CMD= cd ${FILESDIR} && \ ( ${LS} do-patch-* 2>&- || \ ${TRUE} ) .else MLSOURCEPATCHES_CMD= ${TRUE} .endif do-build: cd ${WRKDIR} && unset PWD && \ FILESDIR="${FILESDIR}" PATCH="${PATCH}" PATCH_ARGS="${PATCH_ARGS}" \ MLNORUNTIMECLEAN=yes \ MLRUNTIMEPATCHES=`${MLRUNTIMEPATCHES_CMD}` \ MLSTANDARDPATCHES=`${MLSTANDARDPATCHES_CMD}` \ MLSTANDARDPATCHDIRS=`${MLSTANDARDPATCHDIRS_CMD}` \ MLSOURCEPATCHES=`${MLSOURCEPATCHES_CMD}` \ CFLAGS='${CFLAGS}' AS='${AS}' EXTRA_DEFS='${EXTRA_DEFS}' \ ./config/install.sh .if defined(ML_RECOMPILE) -${RM} ${WRKDIR}/config/targets.customized @${ECHO} '(* Recompiling the core system: *)' cd ${WRKDIR}/${RECOMPILEDIR} && ( \ ${ECHO_CMD} 'CM.autoload "$$smlnj/cmb.cm";' ; \ ${ECHO_CMD} ${CMB_COMMAND} ; \ ${ECHO_CMD} 'CMB.make ();' ) | \ ../../bin/sml @${ECHO} '(* Building the recompiled heap: *)' cd ${WRKDIR}/${RECOMPILEDIR} && \ ./makeml @${ECHO} '(* Removing old libs and heaps: *)' cd ${WRKDIR}/${RECOMPILEDIR} && \ ${RM} -rf ../../lib && ${MKDIR} ../../lib && \ ${FIND} ../../bin/.heap -name '*.${MLARCH}-bsd' \ \! -name 'sml.${MLARCH}-bsd' -delete -print @${ECHO} '(* Installing the recompiled libs and heap: *)' cd ${WRKDIR}/${RECOMPILEDIR} && \ ./installml @${ECHO} '(* Building requested targets: *)' cd ${WRKDIR} && unset PWD && \ FILESDIR="${FILESDIR}" PATCH="${PATCH}" PATCH_ARGS="${PATCH_ARGS}" \ MLNORUNTIMECLEAN=yes RECOMPILEDIR="${RECOMPILEDIR}" \ CFLAGS='${CFLAGS}' AS='${AS}' EXTRA_DEFS='${EXTRA_DEFS}' \ ./config/install.sh .endif +# If Mac OS X resource files make it into the distribution tarballs, +# then we have to remove them at several points during the +# installation process. This is no longer necessary with FreeBSD 10 +# as it uses libarchive 3.x (via bsdtar), but earlier versions +# don't ignore such resource files and hence WRKDIR and STAGEDIR +# are full of them. Once FreeBSD 9 will be out of service, all +# lines in this Makefile can be removed which contain a pattern +# for the prefix "._" of the resource files. Background information: +# + +post-build: + ${FIND} ${WRKDIR} -type f -name '\._*' -delete + # Nowadays PLIST has to be computed before installation. We do it in # "pre-install" because source extraction happens during "build". .if defined(ML_EVERYTHING) MLNOINSTALL= .cm .if defined(ML_RECOMPILE) MLNOINSTALL+= sml.bin.${MLARCH}-unix sml.boot.${MLARCH}-unix \ sml.lib sml.${MLARCH}-bsd .endif MLSRCEXCLUDEREGEX= -e '^(@dirrm\ )?${MLROOTRELATIVE}/base/runtime' .for excl in ${MLNOINSTALL} MLSRCEXCLUDEREGEX+= -e '/${excl}$$' -e '/${excl}/' .endfor MLPATCHPATHREGEX= -E -e 's%(^|[^_])_([^_]|$$)%\1/\2%g' \ -e 's%(^|[^_])__([^_]|$$)%\1_\2%g' \ -e 's%(^|[^_])___([^_]|$$)%\1/_\2%g' .endif pre-install: .if defined(ML_EVERYTHING) @${ECHO} -n '(* Computing package list ...' @${TAR} -tzf ${WRKDIR}/runtime.tgz | \ - ${SED} -E -e 's%^(.*[^/])$$%${MLROOTRELATIVE}/base/\1%' \ - -e 's%^(.*)/$$%@dirrm\ ${MLROOTRELATIVE}/base/\1%' \ - > ${MLRUNTIMEPLIST} + ${GREP} -E -v '(^|/)\._.*' | \ + ${SED} -E -n -e 's%^(.*[^/])$$%${MLROOTRELATIVE}/base/\1%p' \ + > ${MLRUNTIMEPLIST} @${MLRUNTIMEPATCHES_CMD} | \ ${SED} ${MLPATCHPATHREGEX} | \ ${SED} -E -e 's%^(do|extra)-patch-(base/.*)%${MLROOTRELATIVE}/\2%' \ > ${MLRUNTIMEPLIST}.patched -@${GREP} -F -v -f ${MLRUNTIMEPLIST} ${MLRUNTIMEPLIST}.patched \ > ${MLRUNTIMEPLIST}.patchednew @${CAT} ${MLRUNTIMEPLIST}.patchednew >> ${MLRUNTIMEPLIST} @${MLRUNTIMEPATCHES_CMD} | \ ${SED} ${MLPATCHPATHREGEX} | \ ${SED} -E -e 's%^(do|extra)-patch-(base/.*)%${MLROOTRELATIVE}/\2.orig%' \ >> ${MLRUNTIMEPLIST} @cd "${WRKDIR}" && ( \ ( ${FIND} -s -d ${MLSRCDIRS} \! -type d | \ ${AWK} '{ print "${MLROOTRELATIVE}/" $$0 }' ) ; \ ( ${FIND} -s -d ${MLSRCDIRS} -type d -empty | \ - ${AWK} '{ print "@exec mkdir${CALM} -p %D/${MLROOTRELATIVE}/" $$0 }' ) ; \ - ( ${FIND} -s -d ${MLSRCDIRS} -type d | \ - ${AWK} '{ print "@dirrm ${MLROOTRELATIVE}/" $$0 }' ) ) | \ + ${AWK} '{ print "@dir ${MLROOTRELATIVE}/" $$0 }' ) ) | \ ${EGREP} -v ${MLSRCEXCLUDEREGEX} > ${MLSRCPLIST} @${SED} -e 's/^%%EVERYTHING%%//' ${MLPLISTFILES} | \ - ${GREP} -h -v "^@dirrm" | ${SORT} -u > ${PLIST} - @${GREP} -h "^@exec mkdir${CALM}" ${MLPLISTFILES} | ${SORT} -u >> ${PLIST} + ${GREP} -h -v "^@dir" | ${SORT} -u > ${PLIST} @${SED} -e 's/^%%EVERYTHING%%//' ${MLPLISTFILES} | \ - ${GREP} -h "^@dirrm" | ${SORT} -r -u >> ${PLIST} + ${GREP} -h "^@dir" | ${SORT} -r -u >> ${PLIST} @${ECHO} ' done. *)' .endif # ${PKGINSTALL} contains multiexec-wrapper, which is used to select # between executables of the same name that have been installed by # different packages (like smlnj and smlnj-devel). The source of # multiexec-wrapper is extracted from ${PKGINSTALL}, and inserted # into ${PKGINSTALL} in compressed and encoded form. So it is still # available when being installed from a binary package, even if # ${PKGINSTALL} is no file at that time (but only input to a shell). @${SED} -e '/^#%%PKG-INSTALL-START%%$$/,/^#%%PKG-INSTALL-END%%$$/d' \ ${PKGINSTALL} > ${PKGINSTALL}.script @${GZIP_CMD} ${PKGINSTALL}.script @b64encode ${PKGINSTALL}.script.gz script.gz > ${PKGINSTALL}.script.gz.b64 @${SED} -n -e '1,/~EOF~.$$/p' ${PKGINSTALL} > ${PKGINSTALL}.pre @${SED} -n -e '/^~EOF~$$/,$$p' ${PKGINSTALL} > ${PKGINSTALL}.post @${CAT} ${PKGINSTALL}.pre ${PKGINSTALL}.script.gz.b64 ${PKGINSTALL}.post > ${PKGINSTALL}.full @${DIFF} -q ${PKGINSTALL} ${PKGINSTALL}.full >/dev/null || ${CP} ${PKGINSTALL}.full ${PKGINSTALL} # The install target installs the heaps and libraries to their final # location in ${MLBIN} and ${MLLIB}. # In case of recompilation, installml installs the sml heap and the # libraries built during compiler bootstrap to ${MLBIN} and ${MLLIB}. # When staging CM_PATHCONFIG has to point to the final # ${MLLIB}/pathconfig (in ${PREFIX}) while building the compiler. .if defined(ML_EVERYTHING) MLSRCEXCLUDES= .for excl in ${MLNOINSTALL} MLSRCEXCLUDES+= --exclude "${excl}" .endfor .endif do-install: ${MKDIR} "${STAGEDIR}${MLROOT}" .if ! defined(ML_RECOMPILE) cd ${WRKDIR} && unset PWD && \ FILESDIR="${FILESDIR}" PATCH="${PATCH}" PATCH_ARGS="${PATCH_ARGS}" \ STAGEDIR="${STAGEDIR}" MLLIB="${MLLIB}" \ INSTALLDIR="${STAGEDIR}${MLROOT}" \ CFLAGS='${CFLAGS}' AS='${AS}' EXTRA_DEFS='${EXTRA_DEFS}' \ ./config/install.sh .else @${ECHO} '(* Rebuilding the recompiled libs: *)' cd ${WRKDIR}/${RECOMPILEDIR} && ( \ ${ECHO_CMD} 'CM.autoload "$$smlnj/cmb.cm";' ; \ ${ECHO_CMD} ${CMB_COMMAND} ; \ ${ECHO_CMD} 'CMB.make ();' ) | \ ../../bin/sml @${ECHO} '(* Rebuilding the recompiled heap: *)' cd ${WRKDIR}/${RECOMPILEDIR} && \ ./makeml @${ECHO} '(* Installing into ${MLROOT}: *)' cd ${WRKDIR} && unset PWD && \ FILESDIR="${FILESDIR}" PATCH="${PATCH}" PATCH_ARGS="${PATCH_ARGS}" \ STAGEDIR="${STAGEDIR}" MLLIB="${MLLIB}" \ INSTALLDIR="${STAGEDIR}${MLROOT}" RECOMPILEDIR="${RECOMPILEDIR}" \ CFLAGS='${CFLAGS}' AS='${AS}' EXTRA_DEFS='${EXTRA_DEFS}' \ ./config/install.sh .endif + [ ! -d ${STAGEDIR} ] || \ + ${FIND} ${STAGEDIR} -type f -name '\._*' -delete + @${ECHO} '(* Installing man pages. *)' +.for mansect in 1 2 3 4 5 6 7 8 9 + @[ ! -d ${WRKDIR}/doc/man/man${mansect} ] || \ + { cd ${WRKDIR}/doc/man/man${mansect} && ls *.${mansect} | \ + ${XARGS} -J % \ + ${INSTALL_MAN} % ${STAGEDIR}${MANPREFIX}/man/man${mansect} ; } +.endfor + @${ECHO} '(* Stripping runtime executable: *)' MLARCHOPSYS=`${STAGEDIR}${MLBIN}/.arch-n-opsys` && \ ( eval $${MLARCHOPSYS} ; \ - ${STRIP_CMD} "${STAGEDIR}${MLBIN}/.run/run.$${ARCH}-$${OPSYS}" ) + ${STRIP_CMD} "${STAGEDIR}${MLBIN}/.run/run.$${ARCH}-$${OPSYS}" \ + "${STAGEDIR}${MLBIN}/.run/run.$${ARCH}-$${OPSYS}.so" ) .if defined(ML_EVERYTHING) @${ECHO} '(* Cleaning base/runtime: *)' cd ${WRKDIR}/base/runtime/objs && ${MAKE_CMD} clean @${ECHO} -n '(* Installing sources into ${STAGEDIR}${MLROOT} ...' @cd ${WRKDIR} && ${TAR} -cf - ${MLSRCEXCLUDES} ${MLSRCDIRS} | \ ${TAR} -xf - -C "${STAGEDIR}${MLROOT}" @${ECHO} ' done. *)' .endif post-install: # Only execute ${PKGINSTALL} when installing to ${PREFIX}, # but not when staging. .ifmake install${CALM} PKG_PREFIX=${PREFIX} MULTIEXEC_WRAPPER_VERBOSE=yes \ ${SH} ${PKGINSTALL} ${PKGNAME} POST-INSTALL .endif post-stage: - ${STRIP_CMD} ${STAGEDIR}${PREFIX}/smlnj/bin/.run/run.x86-freebsd.so + ${FIND} ${STAGEDIR} -type f -name '\._*' -delete + MLARCHOPSYS=`${STAGEDIR}${MLBIN}/.arch-n-opsys` && \ + ( eval $${MLARCHOPSYS} ; \ + ${STRIP_CMD} "${STAGEDIR}${MLBIN}/.run/run.$${ARCH}-$${OPSYS}" \ + "${STAGEDIR}${MLBIN}/.run/run.$${ARCH}-$${OPSYS}.so" ) .ifndef MULTIEXEC_WRAPPER_VERBOSE deinstall: export MULTIEXEC_WRAPPER_VERBOSE=yes && \ cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} deinstall .endif # This target may be used by dependent ports to set SMLNJ_VERSION # either to the currently installed smlnj package's version # or else to this port's version. SMLNJ_VERSION is an environment # variable used by multiexec-wrapper to select the executable # from that smlnj-* package matching SMLNJ_VERSION. smlnj-version: @{ ${PKG_INFO} -e smlnj && \ ${EXPR} `${PKG_INFO} -E smlnj` : '.*-\(.*\)' 2>/dev/null ; } || \ ${ECHO_CMD} ${PKGVERSION} .include Index: head/lang/smlnj/distinfo =================================================================== --- head/lang/smlnj/distinfo (revision 370815) +++ head/lang/smlnj/distinfo (revision 370816) @@ -1,40 +1,42 @@ -SIZE (smlnj/110.76/MLRISC.tgz) = 1434516 -SHA256 (smlnj/110.76/MLRISC.tgz) = 9d944dea4e80a8ef2cc01e7e16ae72cb280f2e4dc0d6648c9bc27156ccfcc102 -SIZE (smlnj/110.76/boot.x86-unix.tgz) = 5890950 -SHA256 (smlnj/110.76/boot.x86-unix.tgz) = dd16569fb6991d673e66dae57f5e9b372d5a4e305f92a9756002e4bb296c9b61 -SIZE (smlnj/110.76/ckit.tgz) = 194486 -SHA256 (smlnj/110.76/ckit.tgz) = c4534e6e7f910ebee3146cc8ed214a1d5a2ea90afbd79c2290cefdc784ee0dbb -SIZE (smlnj/110.76/cm.tgz) = 200425 -SHA256 (smlnj/110.76/cm.tgz) = 539e8199764a803f486dbf5c0ecb3fa3b2277a6b52ccbbf350bbdcc231bec193 -SIZE (smlnj/110.76/cml.tgz) = 106005 -SHA256 (smlnj/110.76/cml.tgz) = cbd357a3b3377d049911a247be880dcde7f52f705f7cdfe800b67631858681e1 -SHA256 (smlnj/110.76/compiler.tgz) = 322755b8a3f105eec4ce4a3197aaf83bcd542e4c2b2f43c724d0ae8f393bf681 -SIZE (smlnj/110.76/compiler.tgz) = 817182 -SHA256 (smlnj/110.76/config.tgz) = 41cec8bd28c43f49bea24cc7d80d091d8a0e0c7473ee67e4a0b06019567ca557 -SIZE (smlnj/110.76/config.tgz) = 511139 -SHA256 (smlnj/110.76/eXene.tgz) = 35befa7d37207c7fc2eab81e29e3a5afb4f2c5893f7336394906425d5f4ee607 -SIZE (smlnj/110.76/eXene.tgz) = 703059 -SIZE (smlnj/110.76/heap2asm.tgz) = 1314 -SHA256 (smlnj/110.76/heap2asm.tgz) = 8c1f52bc7459de1d0d8e07807abb8e8916fa5ef1cf08c0ceb3f06437f977215d -SIZE (smlnj/110.76/ml-burg.tgz) = 36341 -SHA256 (smlnj/110.76/ml-burg.tgz) = d59dad9188778c96b3e59f9d754a4fbdef4b67de2ded67deb0d26c40915a594e -SIZE (smlnj/110.76/ml-lex.tgz) = 33150 -SHA256 (smlnj/110.76/ml-lex.tgz) = 9d00143cff4e8cc87421270d34b29864c27d353d6b429cce3d3428f6c7280a6b -SIZE (smlnj/110.76/ml-lpt.tgz) = 256293 -SHA256 (smlnj/110.76/ml-lpt.tgz) = 9970b22506a605012055700cc28497c2850d29fbb7bcc5b069fbef785220fc8d -SHA256 (smlnj/110.76/ml-yacc.tgz) = 9151f7fef0abcb312daf731621b682b2c7e9f87a151832e99c30b5e56f03f1cf -SIZE (smlnj/110.76/ml-yacc.tgz) = 99943 -SHA256 (smlnj/110.76/nlffi.tgz) = 07bdc123b2c93f01bc0a5bbdf33aac0b34407bd70cd8d3e1d06ad55e92deb521 -SIZE (smlnj/110.76/nlffi.tgz) = 74484 -SIZE (smlnj/110.76/pgraph.tgz) = 5440 -SHA256 (smlnj/110.76/pgraph.tgz) = df44036b170f68a79a62134812adecd54c3f0da2188f0190996fc57faa10969c -SIZE (smlnj/110.76/runtime.tgz) = 324373 -SHA256 (smlnj/110.76/runtime.tgz) = f6086cd4e30ea3a89c528ee08c793eca77f7701589e0436acf347faf7e940a7f -SHA256 (smlnj/110.76/smlnj-c.tgz) = 0cdf1c3563f3080dffc184e8e64f5e58f7f21f1426d43cb8960cf090e2232a6f -SIZE (smlnj/110.76/smlnj-c.tgz) = 10534 -SIZE (smlnj/110.76/smlnj-lib.tgz) = 402937 -SHA256 (smlnj/110.76/smlnj-lib.tgz) = 81e994a07d7c8979b28c4911272de3c37eec648e58c03a9dc1ecb9bbbadca1d7 -SIZE (smlnj/110.76/system.tgz) = 227685 -SHA256 (smlnj/110.76/system.tgz) = 8f6a143db22a9d025e2820899c9cccbf0e66c679a9aa68c3dcd1bec68003da37 -SHA256 (smlnj/110.76/trace-debug-profile.tgz) = 3769e1d251d04c95b4c1b759f3bf21644bcb3135404d0346e8ff34553ae704df -SIZE (smlnj/110.76/trace-debug-profile.tgz) = 3899 +SHA256 (smlnj/110.77/MLRISC.tgz) = 4b443ee9e27bc8d2010bdce5724302c7d338e8eba0051d45cb4e384204488a76 +SIZE (smlnj/110.77/MLRISC.tgz) = 1479104 +SHA256 (smlnj/110.77/boot.x86-unix.tgz) = 9982a36d9fb3d2d15590d0d8bb15a30d3e684ad49f56d69eef8684f4eaf3bf02 +SIZE (smlnj/110.77/boot.x86-unix.tgz) = 5905482 +SHA256 (smlnj/110.77/ckit.tgz) = 29145b1739d46173cbaa87456b2bed35977c4ae7e83c48134a591459939b3966 +SIZE (smlnj/110.77/ckit.tgz) = 206672 +SHA256 (smlnj/110.77/cm.tgz) = 1c60316b3f16ae1a93cb87e281edcf2a84a554ac0415f010b8d565c2ae3a0a82 +SIZE (smlnj/110.77/cm.tgz) = 209949 +SHA256 (smlnj/110.77/cml.tgz) = bc4548eda9531c52029ed68a7988985b62ad17e95841c04dbbe32b4b30df4ef7 +SIZE (smlnj/110.77/cml.tgz) = 119083 +SHA256 (smlnj/110.77/compiler.tgz) = fcc7388167ee2d0048644bb2147bbca3e16f60be326dd724407e0f51e254e52f +SIZE (smlnj/110.77/compiler.tgz) = 841677 +SHA256 (smlnj/110.77/config.tgz) = 6bed2026e05367f247e2fcfa918edb835bdab24182f02f3253c1baf2f301b552 +SIZE (smlnj/110.77/config.tgz) = 514900 +SHA256 (smlnj/110.77/doc.tgz) = 8301bccdc1e99e8865e905070f7719d94a0ae39b44733d961a3e3002d97dd27e +SIZE (smlnj/110.77/doc.tgz) = 10240 +SHA256 (smlnj/110.77/eXene.tgz) = d4d3ccbde1bc11943054fb093a34c8531c9e8f56731293ca2470eab21602ea33 +SIZE (smlnj/110.77/eXene.tgz) = 729294 +SHA256 (smlnj/110.77/heap2asm.tgz) = f3f5c26d11dbe8019e6b3349ab07c04ffe553780a3a6ca0b000fe8084886ada5 +SIZE (smlnj/110.77/heap2asm.tgz) = 1606 +SHA256 (smlnj/110.77/ml-burg.tgz) = 9bc7bb014d34a63cb3ac8c42104bd579e8990ab2803c32a6a4410fcf8cfcbd4c +SIZE (smlnj/110.77/ml-burg.tgz) = 37604 +SHA256 (smlnj/110.77/ml-lex.tgz) = c4c0e108bf166f77e083692a27f9231d730c5b2a73a2f9f5409e55928c679553 +SIZE (smlnj/110.77/ml-lex.tgz) = 34081 +SHA256 (smlnj/110.77/ml-lpt.tgz) = eff30e6a3c4afb7f8265650e3e1cc83a8ff252ed19f22b30c2c431c9beca126e +SIZE (smlnj/110.77/ml-lpt.tgz) = 266511 +SHA256 (smlnj/110.77/ml-yacc.tgz) = 24a2b1d955e990c6f2a64d6be4df0c7d9bf430f56501587ecf95d30732cf266c +SIZE (smlnj/110.77/ml-yacc.tgz) = 103554 +SHA256 (smlnj/110.77/nlffi.tgz) = 8729d2aa203329fa76f9a7dccafe6fe88d0f397f1238727fea8fa1c67ae38cf0 +SIZE (smlnj/110.77/nlffi.tgz) = 79026 +SHA256 (smlnj/110.77/pgraph.tgz) = 5b46d4d9668f27b7538b5a8f6b62d9cd2c5797118e303aa691266df67f6e818c +SIZE (smlnj/110.77/pgraph.tgz) = 5907 +SHA256 (smlnj/110.77/runtime.tgz) = 8e40aa7d39c806d36360174d36bc376fa53662b5ac4f0a4add120c8c2fe67f2b +SIZE (smlnj/110.77/runtime.tgz) = 349470 +SHA256 (smlnj/110.77/smlnj-c.tgz) = 6de6f0d5a41e7fe097f3fae2815829c4bb14729145efa293fc74bd138180f01d +SIZE (smlnj/110.77/smlnj-c.tgz) = 11462 +SHA256 (smlnj/110.77/smlnj-lib.tgz) = 9232f7cf61a9a7a859dc9249a47a77b954a746137e8d8f6e57236f8c030677e7 +SIZE (smlnj/110.77/smlnj-lib.tgz) = 434946 +SHA256 (smlnj/110.77/system.tgz) = 367cce5e0ab848d28bc019862a30c2b5b774fd4733301bb72fec811d8e9d7f54 +SIZE (smlnj/110.77/system.tgz) = 246164 +SHA256 (smlnj/110.77/trace-debug-profile.tgz) = e6c7a4ed96de076b8d27af44eb8bfc1121e32f915d9a0b8fc356b5a27c761908 +SIZE (smlnj/110.77/trace-debug-profile.tgz) = 4329 Index: head/lang/smlnj/files/do-patch-base_runtime_c-libs_posix-os_tmpname.c =================================================================== --- head/lang/smlnj/files/do-patch-base_runtime_c-libs_posix-os_tmpname.c (revision 370815) +++ head/lang/smlnj/files/do-patch-base_runtime_c-libs_posix-os_tmpname.c (nonexistent) @@ -1,36 +0,0 @@ ---- base/runtime/c-libs/posix-os/tmpname.c.orig 2000-06-01 20:34:03.000000000 +0200 -+++ base/runtime/c-libs/posix-os/tmpname.c 2014-08-01 16:35:28.000000000 +0200 -@@ -4,8 +4,11 @@ - */ - - #include -+#include -+#include - #include "ml-base.h" - #include "ml-values.h" -+#include "ml-c.h" - #include "ml-objects.h" - #include "cfun-proto-list.h" - -@@ -13,9 +16,18 @@ - */ - ml_val_t _ml_OS_tmpname (ml_state_t *msp, ml_val_t arg) - { -- char buf[L_tmpnam]; -- -- tmpnam (buf); -+ char template[] = "/tmp/TMP-SMLNJ.XXXXXX"; -+ char buf[sizeof(template)]; -+ int fd; -+ -+ strcpy (buf, template); -+ -+ fd = mkstemp (buf); -+ -+ if (fd == -1) -+ return RAISE_SYSERR(msp, -1); -+ else -+ close (fd); - - return ML_CString (msp, buf); - Property changes on: head/lang/smlnj/files/do-patch-base_runtime_c-libs_posix-os_tmpname.c ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -ON \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/lang/smlnj/files/extra-patch-base_runtime_include_ml-unixdep.h =================================================================== --- head/lang/smlnj/files/extra-patch-base_runtime_include_ml-unixdep.h (revision 370815) +++ head/lang/smlnj/files/extra-patch-base_runtime_include_ml-unixdep.h (nonexistent) @@ -1,18 +0,0 @@ ---- base/runtime/include/ml-unixdep.h.orig 2012-08-02 20:03:33.000000000 +0200 -+++ base/runtime/include/ml-unixdep.h 2013-06-18 13:16:20.292993889 +0200 -@@ -371,6 +371,15 @@ - # define __EXTENSIONS__ - #endif - -+#if defined(OPSYS_FREEBSD) -+# if defined(INCLUDE_FREEBSD_I386__TYPES) -+# include -+# include INCLUDE_FREEBSD_I386__TYPES -+# endif -+# if defined(INCLUDE_FREEBSD_I386_SIGNAL) -+# include INCLUDE_FREEBSD_I386_SIGNAL -+# endif -+#endif - #include INCLUDE_TYPES_H - #include - #include Property changes on: head/lang/smlnj/files/extra-patch-base_runtime_include_ml-unixdep.h ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/lang/smlnj/files/patch-config___arch-n-opsys =================================================================== --- head/lang/smlnj/files/patch-config___arch-n-opsys (revision 370815) +++ head/lang/smlnj/files/patch-config___arch-n-opsys (revision 370816) @@ -1,11 +1,11 @@ ---- config/_arch-n-opsys.orig 2012-07-28 05:32:38.000000000 +0200 -+++ config/_arch-n-opsys 2013-06-12 21:46:19.925992679 +0200 -@@ -83,6 +83,8 @@ +--- config/_arch-n-opsys.orig 2014-08-22 15:20:03.000000000 +0200 ++++ config/_arch-n-opsys 2014-08-23 14:19:47.056122710 +0200 +@@ -85,6 +85,8 @@ HEAP_OPSYS=bsd case `uname -m` in *86) ARCH=x86;; + # Fall back to x86 compatibility mode. + amd64) ARCH=x86;; *) exit 1;; esac ;; Index: head/lang/smlnj/files/patch-config___heap2exec =================================================================== --- head/lang/smlnj/files/patch-config___heap2exec (revision 370815) +++ head/lang/smlnj/files/patch-config___heap2exec (revision 370816) @@ -1,33 +1,33 @@ ---- config/_heap2exec 2006-04-20 17:28:53.000000000 +0200 +--- config/_heap2exec.orig 2006-04-20 17:28:53.000000000 +0200 +++ config/_heap2exec 2013-06-14 22:18:55.050990989 +0200 @@ -83,6 +83,7 @@ A_PROG= A_FLAGS= A_LIBS= +AS_FLAGS= case ${OPSYS} in darwin) @@ -96,6 +97,13 @@ A_PROG=${CC} A_FLAGS=-Wl,--export-dynamic A_LIBS=-lm + case `uname -m` in + amd64) + SO_FLAGS="${SO_FLAGS} -m32" + A_FLAGS="${A_FLAGS} -m32" + AS_FLAGS="${AS_FLAGS} -m32" + ;; + esac ;; linux) SO_PROG=${CC} @@ -116,7 +124,7 @@ RESULT=0 if ${H2A} "$heapfile" "$execfile".s ; then if [ -f "$execfile".s ] ; then - if ${CC} -c -o "$execfile".o "$execfile".s ; then + if ${CC} -c ${AS_FLAGS} -o "$execfile".o "$execfile".s ; then rm "$execfile".s else rm "$execfile".s Index: head/lang/smlnj/files/patch-config_install.sh =================================================================== --- head/lang/smlnj/files/patch-config_install.sh (revision 370815) +++ head/lang/smlnj/files/patch-config_install.sh (revision 370816) @@ -1,180 +1,180 @@ ---- config/install.sh.orig 2012-03-02 23:57:26.000000000 +0100 -+++ config/install.sh 2014-07-14 20:12:56.000000000 +0200 -@@ -18,6 +18,8 @@ +--- config/install.sh.orig 2014-08-22 15:20:03.000000000 +0200 ++++ config/install.sh 2014-08-23 14:19:47.061124086 +0200 +@@ -17,6 +17,8 @@ nolib=false fi +[ -n "$RECOMPILEDIR" ] && echo "RECOMPILEDIR=$RECOMPILEDIR" + if [ x${INSTALL_QUIETLY} = xtrue ] ; then export CM_VERBOSE CM_VERBOSE=false -@@ -38,6 +40,28 @@ +@@ -37,6 +39,28 @@ exit 1 } +# +# do_patch patch-file +# apply a patch file +do_patch() { + patchfile=$FILESDIR/$1 + + if [ ! -r $patchfile ]; then + echo "$this: !!! patch file $patchfile not found." + exit 1; + fi + + if [ ! -f $CONFIGDIR/.patch_$1 ]; then + $PATCH $PATCH_ARGS < $patchfile || {\ + echo "$this: !!! patch file $patchfile failed to patch." + exit 1; + } + echo > $CONFIGDIR/.patch_$1 + else + echo "$this: patch $patchfile already installed." + fi +} + this=$0 -@@ -97,7 +121,28 @@ +@@ -96,7 +120,28 @@ # Especially important is CM_PATHCONFIG. # export CM_PATHCONFIG -CM_PATHCONFIG=$LIBDIR/pathconfig +if [ -n "$STAGEDIR" -a -n "$MLLIB" ] +then + # The final CM_PATHCONFIG file should not yet exist during + # staging, but still it has to be set in the environment when + # creating the (final) compiler heap. This way it becomes the + # the default pathconfig for the (final) heap. + # Therefore we will use the secondary pathconfig environment + # variable CM_LOCAL_PATHCONFIG to point to the (existing;) + # pathconfig in ROOT. This enables $smlnj/installer.cm + # to operate within STAGEDIR (using the final heap) below. + CM_PATHCONFIG=$MLLIB/pathconfig + if [ -r $CM_PATHCONFIG ] + then + vsay "$this: !!! Staging conflicts with an existing installation!" + complain "$this: !!! Make $CM_PATHCONFIG unreadable and try again!" + fi + CM_PATHCONFIG_STAGE=$STAGEDIR$CM_PATHCONFIG + CM_LOCAL_PATHCONFIG=$CM_PATHCONFIG_STAGE +else + CM_PATHCONFIG=$LIBDIR/pathconfig + CM_PATHCONFIG_STAGE=$CM_PATHCONFIG +fi # # the release version that we are installing # -@@ -327,7 +372,12 @@ +@@ -326,7 +371,12 @@ # the name of the bin files directory # BOOT_ARCHIVE=boot.$ARCH-unix -BOOT_FILES=sml.$BOOT_ARCHIVE +if [ -z "$RECOMPILEDIR" ] +then + BOOT_FILES=sml.$BOOT_ARCHIVE +else + BOOT_FILES=$RECOMPILEDIR/sml.$BOOT_ARCHIVE +fi # # build the run-time system -@@ -336,9 +386,15 @@ +@@ -335,9 +385,15 @@ vsay $this: Run-time system already exists. else "$CONFIGDIR"/unpack "$ROOT" runtime + [ -n "$MLRUNTIMEPATCHES" ] && \ + for p in $MLRUNTIMEPATCHES + do + do_patch $p + done cd "$BASEDIR"/runtime/objs echo $this: Compiling the run-time system. - $MAKE -f mk.$ARCH-$OPSYS $EXTRA_DEFS + echo "$MAKE -f mk.$ARCH-$OPSYS $EXTRA_DEFS AS=\""$AS\"" CFLAGS=\"$CFLAGS\"" + $MAKE -f mk.$ARCH-$OPSYS $EXTRA_DEFS AS="$AS" CFLAGS="$CFLAGS" if [ -x run.$ARCH-$OPSYS ]; then mv run.$ARCH-$OPSYS "$RUNDIR" if [ -f runx.$ARCH-$OPSYS ]; then -@@ -350,7 +406,7 @@ +@@ -349,7 +405,7 @@ if [ -f run.$ARCH-$OPSYS.a ]; then mv run.$ARCH-$OPSYS.a "$RUNDIR" fi - $MAKE MAKE=$MAKE clean + [ "$MLNORUNTIMECLEAN" ] || $MAKE MAKE=$MAKE clean else complain "$this: !!! Run-time system build failed for some reason." fi -@@ -376,7 +432,7 @@ +@@ -375,7 +431,7 @@ complain "$this !!! Unable to re-create heap image (sml.$HEAP_SUFFIX)." fi else - "$CONFIGDIR"/unpack "$ROOT" "$BOOT_ARCHIVE" + [ -n "$RECOMPILEDIR" ] || "$CONFIGDIR"/unpack "$ROOT" "$BOOT_ARCHIVE" fish "$ROOT"/"$BOOT_FILES"/smlnj/basis -@@ -411,7 +467,7 @@ +@@ -410,7 +466,7 @@ cd "$ROOT"/"$BOOT_FILES" for anchor in * ; do if [ -d $anchor ] ; then - echo $anchor $anchor >>$CM_PATHCONFIG + echo $anchor $anchor >>$CM_PATHCONFIG_STAGE move $anchor "$LIBDIR"/$anchor fi done -@@ -434,6 +490,18 @@ +@@ -433,6 +489,18 @@ cd "$ROOT" +# apply source patches for standard targets +[ -n "$MLSTANDARDPATCHDIRS" ] && \ +for d in $MLSTANDARDPATCHDIRS +do + "$CONFIGDIR"/unpack "$ROOT" "$d" +done +[ -n "$MLSTANDARDPATCHES" ] && \ +for p in $MLSTANDARDPATCHES +do + do_patch $p +done + # - # Now do all the rest using the precompiled installer: - # + # Now do all the rest using the precompiled installer + # (see base/system/smlnj/installer for details) @@ -442,6 +510,12 @@ export ROOT INSTALLDIR CONFIGDIR BINDIR CM_TOLERATE_TOOL_FAILURES=true export CM_TOLERATE_TOOL_FAILURES + # smlnj/installer/nix-install.sml (re)sets CM_LOCAL_PATHCONFIG + # to /dev/null in the buildcmd that it uses to invoke the builds. + # So the build process needs a working CM_PATHCONFIG. This is NOT + # propagated to the resulting heaps because the heaps generated + # in this stage don't contain the compiler. + [ -z "$STAGEDIR" ] || CM_PATHCONFIG=$CM_LOCAL_PATHCONFIG if "$BINDIR"/sml -m \$smlnj/installer.cm then vsay $this: Installation complete. @@ -450,4 +524,19 @@ fi fi +# Finish staging by removing the $STAGEDIR prefix from the driver scripts. +if [ -n "$STAGEDIR" ] +then + find $BINDIR -type f -perm -1 | \ + xargs fgrep -l "$STAGEDIR" | \ + xargs sed -i "" -e 's%'"$STAGEDIR"'%%g' +fi + +# apply all source patches +[ -n "$MLSOURCEPATCHES" ] && \ +for p in $MLSOURCEPATCHES +do + do_patch $p +done + exit 0 Index: head/lang/smlnj/files/pkg-install.in =================================================================== --- head/lang/smlnj/files/pkg-install.in (revision 370815) +++ head/lang/smlnj/files/pkg-install.in (revision 370816) @@ -1,589 +1,614 @@ #!/bin/sh # This file was automatically created - don't modify it! #%%SOURCEINFO-START%% # source version: $Id: $ # installed by port/package: %%SOURCEINFO-PACKAGE%% # installed from file: %%SOURCEINFO-FILE%% #%%SOURCEINFO-END%% if [ -n "$MULTIEXEC_WRAPPER_VERBOSE" ] then QUIET=0 else QUIET=1 fi #%%PKG-INSTALL-START%% # ===== IMPORTANT ===== # If you modify any byte of this script outside of the # %%SOURCEINFO-*%% and #%%PKG-INSTALL-*%% sections, then # don't forget to bump the MINOR version variable below! # case "$2" in # no-op cases if called as port/package de/installation script PRE-INSTALL|POST-DEINSTALL) exit 0 ;; esac #%%PKG-INSTALL-END%% ME=multiexec-wrapper CALLED_NAME="`basename $0`" PREFIX=%%PREFIX%% CONFIG="$PREFIX/etc/$ME.conf" lookup_executable() { local calledname pkgname name executable rest \ portname version envvarname envvarversion result # use global variable for the result to avoid subshell lookup_executable_result= [ -r "$CONFIG" ] || return 1 calledname="$1" result= while read pkgname name executable rest do if [ "$name" = "$calledname" -a -n "$executable" ] then result="$executable" portname=`expr "$pkgname" : "\(.*\)-"` envvarname="`echo -n "$portname" | \ tr "[:lower:]" "[:upper:]" | \ tr -cs "[:alnum:]" "_"`" # variable selects package if name matches eval envvarvalue='$'"$envvarname" if [ -n "$envvarvalue" ] then break fi # _VERSION variable selects package version version=`expr "$pkgname" : ".*-\([^-_,]*\)"` eval envvarversion='$'"$envvarname"_VERSION if [ "$envvarversion" = "$version" ] then break fi fi done < "$CONFIG" lookup_executable_result="$result" } warn () { echo "${ME}: $1" 1>&2 } die () { warn "$1" exit 1 } # Normal usage: if called through a symlink, # lookup and exec a registered executable. if [ -L "$0" -a "$CALLED_NAME" != "$ME" ] then lookup_executable "$CALLED_NAME" executable="$lookup_executable_result" if [ -x "$executable" ] then exec "$executable" "$@" elif [ -z "$executable" ] then die "no executable registered for '$CALLED_NAME'." elif [ ! -e "$executable" ] then die "$executable does not exist." else die "$executable is not executable." fi fi EPOCH=1 CONFIG_FORMAT=1 MAJOR=1 MINOR=1 VERSION=$EPOCH.$CONFIG_FORMAT.$MAJOR.$MINOR usage() { echo "usage: $ME ..." echo " with one of the following s:" #%%PKG-INSTALL-START%% echo " install-self-to " echo " deinstall-self-from " #%%PKG-INSTALL-END%% echo " deinstall-pkg " echo " register " echo " unregister " echo " version" echo " which " echo " list-all-packages" echo " list-packages-for-name " exit 1 } say () { [ $QUIET -gt 0 ] || echo "${ME}: $1" } version() { echo "$VERSION" exit 0 } which() { local name executable name="$1" lookup_executable "$name" executable="$lookup_executable_result" [ -z "$executable" ] && return 1 echo "$executable" } #%%PKG-INSTALL-START%% install_self_to() { local pkgname myself target oldversion tmpfile tmpfile_gz PREFIX="$1" pkgname="$2" if [ "$0" = "/bin/sh" ] then # We're stdin of a shell (installation from binary package). # Recover original script from its b64encoded compressed source. tmpfile=`mktemp "/tmp/$ME.XXXXXX"` tmpfile_gz=`mktemp "/tmp/$ME.gz.XXXXXX"` trap "rm -f $tmpfile $tmpfile_gz" EXIT b64decode -p > $tmpfile_gz << '~EOF~' ~EOF~ gunzip -cf $tmpfile_gz > $tmpfile || die "decompression of script source for $ME failed." myself=$tmpfile else myself=`realpath "$0"` fi target="$PREFIX/bin/$ME" MYSELF_INSTALLED="$target" if [ -e "$target" ] then if [ ! -x "$target" ] then die "$target already exists but is not executable." else oldversion=`$target version 2>/dev/null` if [ $? -ne 0 ] then die "bogus $target already exists." elif [ "$oldversion" = "$VERSION" ] then oldmd5=`sed -e '/^#%%PKG-INSTALL-START%%$/,/^#%%PKG-INSTALL-END%%$/d' \ -e '/^#%%SOURCEINFO-START%%$/,/^#%%SOURCEINFO-END%%$/d' \ -e 's?\%\%PREFIX\%\%?'"$PREFIX"'?g' "$target" | \ md5 -q` newmd5=`sed -e '/^#%%PKG-INSTALL-START%%$/,/^#%%PKG-INSTALL-END%%$/d' \ -e '/^#%%SOURCEINFO-START%%$/,/^#%%SOURCEINFO-END%%$/d' \ -e 's?\%\%PREFIX\%\%?'"$PREFIX"'?g' "$myself" | \ md5 -q` if [ "$newmd5" = "$oldmd5" ] then say "$myself (version $VERSION) already installed as $target." return else die "$myself and $target have same version ($VERSION) but differ." fi elif [ `pkg_version -t "$oldversion" "$VERSION"` != "<" ] then say "$myself (version $VERSION) is not newer than $target (version $oldversion)." fi fi + elif [ ! -d `dirname $target` ] + then + if [ -e `dirname $target` ] + then + die "`dirname $target` is not a directory." + else + mkdir -p `dirname $target` || die "could not create `dirname $target`" + fi fi + if [ ! -d `dirname $CONFIG` ] + then + if [ -e `dirname $CONFIG` ] + then + die "`dirname $CONFIG` is not a directory." + else + mkdir -p `dirname $CONFIG` || die "could not create `dirname $CONFIG`" + fi + fi if sed -e '/^#%%PKG-INSTALL-START%%$/,/^#%%PKG-INSTALL-END%%$/d' \ -e 's?%%SOURCEINFO-PACKAGE%%?'"$pkgname"'?g' \ -e 's?%%SOURCEINFO-FILE%%?'"$myself"'?g' \ -e 's?\%\%PREFIX\%\%?'"$PREFIX"'?g' "$myself" > "$target" && \ chmod +x "$target" then say "$myself (version $VERSION) installed as $target." return else die "failed to install $ME (version $VERSION) as $target." fi } deinstall_self_from() { local config_empty=1 PREFIX="$1" MYSELF_INSTALLED="$PREFIX/bin/$ME" CONFIG="$PREFIX/etc/$ME.conf" if [ ! -e "$CONFIG" ] then say "$CONFIG does not exist." elif grep -v -q "^/SELF/" "$CONFIG" then say "$CONFIG is not empty." config_empty=0 elif rm -f "$CONFIG" then say "$CONFIG removed." + if rmdir `dirname $CONFIG` + then + say "`dirname $CONFIG` removed" + fi else warn "failed to remove $CONFIG." fi if [ "$config_empty" -eq 1 ] then if [ ! -e "$MYSELF_INSTALLED" ] then warn "$MYSELF_INSTALLED does not exist." elif rm -f "$MYSELF_INSTALLED" then say "$MYSELF_INSTALLED removed." + if rmdir `dirname $MYSELF_INSTALLED` + then + say "`dirname $MYSELF_INSTALLED` removed" + fi else warn "failed to remove $MYSELF_INSTALLED." fi fi } #%%PKG-INSTALL-END%% config_init() { local format oldformat pkgname name executable rest format="$EPOCH.$CONFIG_FORMAT" if [ -r "$CONFIG" -a -s "$CONFIG" ] then oldformat=`cat "$CONFIG" | \ while read pkgname name executable rest do if [ "$pkgname" = "/SELF/" -a "$name" = "/FORMAT/" ] then echo "$executable" break fi done` if [ -z "$oldformat" ] then say "old $CONFIG has no format information - backing up ..." if mv "$CONFIG" "$CONFIG.bak" then say "... done" else die "failed to backup old $CONFIG." fi elif [ "$oldformat" = "$format" ] then say "matching format statement found in $CONFIG." else # XXX compare versions and try to upgrade if appropriate die "differing format statement found in $CONFIG ($executable instead of $format)." fi elif echo "/SELF/ /FORMAT/ $format" > "$CONFIG" then say "$CONFIG initialized." else die "failed to initialize $CONFIG" fi } lookup_matches() { local pkgname name executable rest p n e r pkgname="$1" name="$2" executable="$3" [ -r "$CONFIG" ] || return 1 cat "$CONFIG" | \ while read p n e r do [ "$pkgname" = "" -o "$p" = "$pkgname" ] && \ [ "$name" = "" -o "$n" = "$name" ] && \ [ "$executable" = "" -o "$e" = "$executable" ] && \ echo "$p $n $e" done return 0 } config_add() { local pkgname name executable matches pkgname="$1" name="$2" executable="$3" if [ ! -e "$CONFIG" ] then config_init fi if [ ! -r "$CONFIG" ] then die "$CONFIG not readable." else matches=`lookup_matches "$pkgname" "$name" "$executable"` if [ -n "$matches" ] then say "already registered in $CONFIG: $pkgname $name $executable" return elif [ ! -w "$CONFIG" ] then die "$CONFIG is not writeable" fi fi if echo "$pkgname $name $executable" >> "$CONFIG" then say "now added to config: $pkgname $name $executable" else die "write failed while trying to add to $CONFIG: $pkgname $name $executable" fi } config_delete() { local pkgname name executable matches pkgname="$1" name="$2" executable="$3" if [ ! -e "$CONFIG" ] then die "failed to delete from config: $CONFIG does not exist." elif [ ! -r "$CONFIG" ] then die "$CONFIG not readable." else matches=`lookup_matches "$pkgname" "$name" "$executable"` if [ -z "$matches" ] then say "no entry found in config for: $pkgname $name $executable." elif [ ! -w "$CONFIG" ] then die "$CONFIG is not writeable." elif [ ! -w `dirname "$CONFIG"` ] then die "config directory `dirname $CONFIG` is not writeable." elif awk '$1 != "'"$pkgname"'" || \ $2 != "'"$name"'" || \ $3 != "'"$executable"'"' \ "$CONFIG" > "$CONFIG.new" then if diff -q "$CONFIG" "$CONFIG.new" >/dev/null then say "failed to delete from config (match problem): $pkgname $name $executable." rm "$CONFIG.new" elif mv -f "$CONFIG.new" "$CONFIG" then say "deleted from config: $pkgname $name $executable." else die "failed to update $CONFIG." fi else die "failed to create new config $CONFIG.new." fi fi } register() { local pkgname name executable savedwd pkgname="$1" name="$2" executable="$3" savedwd=$PWD if [ ! -e "$executable" ] then die "won't register ${name}: $executable does not exist" elif [ ! -x "$executable" ] then die "won't register ${name}: $executable is not executable" elif cd "$PREFIX/bin" then if [ -e "$name" ] then if [ -L "$name" ] then target=`readlink $name` if [ "$target" = "$ME" ] then say "symlink $name -> $ME already exists." else die "symlink $name already exists, but does not point to $ME (instead to $target)." fi else die "$name already exists, but is not a symlink." fi else if ln -s "$ME" "$name" then say "symlink $name -> $ME created." else die "failed to create symlink $name -> $ME." fi fi config_add "$pkgname" "$name" "$executable" else die "can't cd to $PREFIX/bin." fi cd "$savedwd" } unregister() { local pkgname name executable savedwd matches count pkgname="$1" name="$2" executable="$3" savedwd=$PWD if [ ! -e "$executable" ] then say "while unregistering ${name}: $executable does not exist" elif [ ! -x "$executable" ] then say "while unregistering ${name}: $executable is not executable" fi if cd "$PREFIX/bin" then if [ ! -e "$name" ] then say "symlink $name does not exist." elif [ ! -L "$name" ] then say "$name exists, but is not a symlink." else target=`readlink $name` if [ "$target" != "$ME" ] then say "symlink $name exists, but does not point to $ME (instead to $target)." else matches=`lookup_matches "" "$name"` count=`printf "%s" "$matches" | wc -l` if [ "$count" -eq 0 -o \ \( "$count" -eq 1 -a \ `expr "$matches" : "${pkgname}-"` -gt 0 \) ] then if rm -f "$name" then say "symlink $name removed." else die "failed to remove symlink $name -> $ME." fi else say "not removing symlink $name because of further config entries." fi fi fi config_delete "$pkgname" "$name" "$executable" else die "can't cd to $PREFIX/bin." fi cd "$savedwd" } deinstall_pkg() { local pkgname matches count p n e r pkgname="$1" matches=`lookup_matches "$pkgname"` if [ $? -ne 0 ] then die "reading $CONFIG failed." elif [ -z "$matches" ] then say "no entries for package $package in $CONFIG." else count=`printf "%s" "$matches" | wc -l` say "trying to unregister $count entries for package $pkgname." cat "$CONFIG" | \ while read p n e r do if [ "$p" = "$pkgname" ] then if [ -z "$n" ] then warn "in $CONFIG: incomplete config entry (no name) found for package $pkgname." elif [ -z "$e" ] then warn "in $CONFIG: incomplete config entry (no executable) found for package $pkgname, name $name." else unregister "$pkgname" "$n" "$e" fi fi done fi } #%%PKG-INSTALL-START%% case "$2" in POST-INSTALL) PKGNAME="$1" install_self_to "$PKG_PREFIX" "$PKGNAME" "$MYSELF_INSTALLED" config-init || die "config-init of $CONFIG failed." for exename in %%EXENAMES%% do exepath="$PKG_PREFIX/%%EXEBINDIR%%/$exename" if [ -x "$exepath" ] then "$MYSELF_INSTALLED" register "$PKGNAME" "$exename" "$exepath" \ || die "failure during registration - aborting." else die "not an executable: $exepath." fi done ;; DEINSTALL) PKGNAME="$1" PREFIX="$PKG_PREFIX" CONFIG="$PREFIX/etc/$ME.conf" MYSELF_INSTALLED="$PREFIX/bin/$ME" doitmyself=0 if [ ! -e "$MYSELF_INSTALLED" ] then say "$ME was not (or is no longer) installed as $MYSELF_INSTALLED." doitmyself=1 elif [ ! -x "$MYSELF_INSTALLED" ] then say "$MYSELF_INSTALLED is not executable." doitmyself=1 fi if [ "$doitmyself" -eq 0 ] then "$MYSELF_INSTALLED" deinstall-pkg "$PKGNAME" else deinstall_pkg "$PKGNAME" fi deinstall_self_from "$PKG_PREFIX" ;; esac #%%PKG-INSTALL-END%% list_all_packages() { grep -v "^/" "$CONFIG" | \ awk '{ print $1 }' | \ uniq } list_packages_for_name() { local name="$1" lookup_matches "" "$name" "" | \ awk '{ print $1 }' } # main case "$1" in ""|-h|--help) usage ;; #%%PKG-INSTALL-START%% install-self-to) install_self_to "$2" "$3" ;; deinstall-self-from) deinstall_self_from "$2" ;; #%%PKG-INSTALL-END%% version) version ;; which) which "$2" ;; config-init) config_init ;; register) register "$2" "$3" "$4" ;; unregister) unregister "$2" "$3" "$4" ;; deinstall-pkg) deinstall_pkg "$2" ;; list-all-packages) list_all_packages "$2" ;; list-packages-for-name) list_packages_for_name "$2" ;; esac Index: head/lang/smlnj/pkg-plist =================================================================== --- head/lang/smlnj/pkg-plist (revision 370815) +++ head/lang/smlnj/pkg-plist (revision 370816) @@ -1,337 +1,179 @@ +man/man1/ml-antlr.1.gz +man/man1/ml-build.1.gz +man/man1/ml-makedepend.1.gz +man/man1/ml-ulex.1.gz +man/man1/sml.1.gz +man/man7/smlnj.7.gz smlnj/bin/.arch-n-opsys smlnj/bin/.heap/heap2asm.%%MLARCH%%-bsd smlnj/bin/.heap/ml-antlr.%%MLARCH%%-bsd smlnj/bin/.heap/ml-burg.%%MLARCH%%-bsd smlnj/bin/.heap/ml-lex.%%MLARCH%%-bsd smlnj/bin/.heap/ml-nlffigen.%%MLARCH%%-bsd smlnj/bin/.heap/ml-ulex.%%MLARCH%%-bsd smlnj/bin/.heap/ml-yacc.%%MLARCH%%-bsd %%EVERYTHING%%smlnj/bin/.heap/nowhere.%%MLARCH%%-bsd smlnj/bin/.heap/sml.%%MLARCH%%-bsd smlnj/bin/.link-sml smlnj/bin/.run/run.%%MLARCH%%-freebsd smlnj/bin/.run/run.%%MLARCH%%-freebsd.a smlnj/bin/.run/run.%%MLARCH%%-freebsd.so smlnj/bin/.run-sml smlnj/bin/heap2asm smlnj/bin/heap2exec smlnj/bin/ml-antlr smlnj/bin/ml-build smlnj/bin/ml-burg smlnj/bin/ml-lex smlnj/bin/ml-makedepend smlnj/bin/ml-nlffigen smlnj/bin/ml-ulex smlnj/bin/ml-yacc %%EVERYTHING%%smlnj/bin/nowhere smlnj/bin/sml smlnj/lib/SMLNJ-BASIS/.cm/%%MLARCH%%-unix/basis.cm smlnj/lib/SMLNJ-LIB/Controls/.cm/%%MLARCH%%-unix/controls-lib.cm smlnj/lib/SMLNJ-LIB/HTML/.cm/%%MLARCH%%-unix/html-lib.cm smlnj/lib/SMLNJ-LIB/PP/.cm/%%MLARCH%%-unix/pp-lib.cm smlnj/lib/SMLNJ-LIB/Util/.cm/%%MLARCH%%-unix/smlnj-lib.cm smlnj/lib/SMLNJ-ML-YACC-LIB/.cm/%%MLARCH%%-unix/ml-yacc-lib.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/ALPHA.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/AMD64-Peephole.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/AMD64.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/CCall-Vararg.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/CCall-sparc.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/CCall-x86-64.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/CCall-x86.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/CCall.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/Control.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/Graphs.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/HPPA.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/IA32-Peephole.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/IA32.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/Lib.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/MLRISC.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/MLTREE.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/PPC.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/Peephole.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/RA.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/SPARC.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/StagedAlloc.cm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix/Visual.cm smlnj/lib/burg-ext.cm/.cm/%%MLARCH%%-unix/burg-ext.cm smlnj/lib/c/.cm/%%MLARCH%%-unix/c.cm smlnj/lib/c/internals/.cm/%%MLARCH%%-unix/c-int.cm smlnj/lib/c/memory/.cm/%%MLARCH%%-unix/memory.cm smlnj/lib/ckit-lib.cm/.cm/%%MLARCH%%-unix/ckit-lib.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/basis.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/cml-internal.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/cml-lib.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/cml.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/core-cml.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/inet-lib.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/smlnj-lib.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/trace-cml.cm smlnj/lib/cml/.cm/%%MLARCH%%-unix/unix-lib.cm smlnj/lib/cml-lib/.cm/%%MLARCH%%-unix/smlnj-lib.cm smlnj/lib/cml-lib/.cm/%%MLARCH%%-unix/trace-cml.cm smlnj/lib/dir-tool.cm/.cm/%%MLARCH%%-unix/dir-tool.cm %%EVERYTHING%%smlnj/lib/eXene.cm/.cm/%%MLARCH%%-unix/eXene.cm smlnj/lib/grm-ext.cm/.cm/%%MLARCH%%-unix/grm-ext.cm smlnj/lib/hash-cons-lib.cm/.cm/%%MLARCH%%-unix/hash-cons-lib.cm smlnj/lib/html4-lib.cm/.cm/%%MLARCH%%-unix/html4-lib.cm smlnj/lib/inet-lib.cm/.cm/%%MLARCH%%-unix/inet-lib.cm smlnj/lib/json-lib.cm/.cm/%%MLARCH%%-unix/json-lib.cm smlnj/lib/lex-ext.cm/.cm/%%MLARCH%%-unix/lex-ext.cm smlnj/lib/make-tool.cm/.cm/%%MLARCH%%-unix/make-tool.cm smlnj/lib/ml-antlr-tool.cm/.cm/%%MLARCH%%-unix/ml-antlr-tool.cm smlnj/lib/ml-lpt-lib.cm/.cm/%%MLARCH%%-unix/ml-lpt-lib.cm smlnj/lib/ml-ulex-tool.cm/.cm/%%MLARCH%%-unix/ml-ulex-tool.cm smlnj/lib/mlburg-tool.cm/.cm/%%MLARCH%%-unix/mlburg-tool.cm smlnj/lib/mllex-tool.cm/.cm/%%MLARCH%%-unix/mllex-tool.cm %%EVERYTHING%%smlnj/lib/mlrisc-tools/.cm/%%MLARCH%%-unix/match-compiler.cm %%EVERYTHING%%smlnj/lib/mlrisc-tools/.cm/%%MLARCH%%-unix/parser.cm %%EVERYTHING%%smlnj/lib/mlrisc-tools/.cm/%%MLARCH%%-unix/pp.cm %%EVERYTHING%%smlnj/lib/mlrisc-tools/.cm/%%MLARCH%%-unix/prec-parser.cm %%EVERYTHING%%smlnj/lib/mlrisc-tools/.cm/%%MLARCH%%-unix/sml-ast.cm %%EVERYTHING%%smlnj/lib/mlrisc-tools/.cm/%%MLARCH%%-unix/source-map.cm smlnj/lib/mlyacc-tool.cm/.cm/%%MLARCH%%-unix/mlyacc-tool.cm smlnj/lib/noweb-tool.cm/.cm/%%MLARCH%%-unix/noweb-tool.cm smlnj/lib/nw-ext.cm/.cm/%%MLARCH%%-unix/nw-ext.cm smlnj/lib/pathconfig %%EVERYTHING%%smlnj/lib/pgraph-util.cm/.cm/%%MLARCH%%-unix/pgraph-util.cm smlnj/lib/pgraph.cm/.cm/%%MLARCH%%-unix/pgraph.cm smlnj/lib/pickle-lib.cm/.cm/%%MLARCH%%-unix/pickle-lib.cm smlnj/lib/reactive-lib.cm/.cm/%%MLARCH%%-unix/reactive-lib.cm smlnj/lib/regexp-lib.cm/.cm/%%MLARCH%%-unix/regexp-lib.cm smlnj/lib/sexp-lib.cm/.cm/%%MLARCH%%-unix/sexp-lib.cm smlnj/lib/shell-tool.cm/.cm/%%MLARCH%%-unix/shell-tool.cm smlnj/lib/smlnj-tdp/.cm/%%MLARCH%%-unix/back-trace.cm smlnj/lib/smlnj-tdp/.cm/%%MLARCH%%-unix/coverage.cm smlnj/lib/smlnj-tdp/.cm/%%MLARCH%%-unix/plugins.cm smlnj/lib/smlnj/.cm/%%MLARCH%%-unix/cm.cm smlnj/lib/smlnj/.cm/%%MLARCH%%-unix/cmb.cm smlnj/lib/smlnj/.cm/%%MLARCH%%-unix/compiler.cm smlnj/lib/smlnj/.cm/%%MLARCH%%-unix/installer.cm smlnj/lib/smlnj/.cm/%%MLARCH%%-unix/library-install.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/ALPHA.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/AMD64.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/Control.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/Graphs.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/HPPA.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/IA32.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/Lib.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/MLRISC.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/MLTREE.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/PPC.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/SPARC.cm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix/Visual.cm smlnj/lib/smlnj/basis/.cm/%%MLARCH%%-unix/basis.cm smlnj/lib/smlnj/cm/.cm/%%MLARCH%%-unix/cm.cm smlnj/lib/smlnj/cm/.cm/%%MLARCH%%-unix/tools.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/alpha32-unix.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/amd64-unix.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/current.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/hppa-unix.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/ppc-macos.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/ppc-unix.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/sparc-unix.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/x86-unix.cm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix/x86-win32.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/all.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/alpha32.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/amd64.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/compiler.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/current.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/hppa.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/minimal-only.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/minimal.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/ppc.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/sparc.cm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix/x86.cm smlnj/lib/smlnj/init/.cm/%%MLARCH%%-unix/init.cmi smlnj/lib/smlnj/installer/.cm/%%MLARCH%%-unix/util.cm smlnj/lib/smlnj/internal/.cm/%%MLARCH%%-unix/cm-lib.cm smlnj/lib/smlnj/internal/.cm/%%MLARCH%%-unix/cm-sig-lib.cm smlnj/lib/smlnj/internal/.cm/%%MLARCH%%-unix/cm0.cm smlnj/lib/smlnj/internal/.cm/%%MLARCH%%-unix/intsys.cm smlnj/lib/smlnj/internal/.cm/%%MLARCH%%-unix/smlnj-version.cm smlnj/lib/smlnj/internal/.cm/%%MLARCH%%-unix/srcpath-lib.cm smlnj/lib/smlnj/ml-yacc/.cm/%%MLARCH%%-unix/ml-yacc-lib.cm smlnj/lib/smlnj/smlnj-lib/.cm/%%MLARCH%%-unix/controls-lib.cm smlnj/lib/smlnj/smlnj-lib/.cm/%%MLARCH%%-unix/html-lib.cm smlnj/lib/smlnj/smlnj-lib/.cm/%%MLARCH%%-unix/pp-lib.cm smlnj/lib/smlnj/smlnj-lib/.cm/%%MLARCH%%-unix/smlnj-lib.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/alpha32.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/amd64.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/basics.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/core.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/debugprof.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/elabdata.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/elaborate.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/execute.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/hppa.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/parser.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/ppc.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/sparc.cm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix/x86.cm smlnj/lib/unix-lib.cm/.cm/%%MLARCH%%-unix/unix-lib.cm -@dirrm smlnj/bin/.heap -@dirrm smlnj/bin/.run -@dirrm smlnj/bin -@dirrm smlnj/lib/SMLNJ-BASIS/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/SMLNJ-BASIS/.cm -@dirrm smlnj/lib/SMLNJ-BASIS -@dirrm smlnj/lib/SMLNJ-LIB/Controls/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/SMLNJ-LIB/Controls/.cm -@dirrm smlnj/lib/SMLNJ-LIB/Controls -@dirrm smlnj/lib/SMLNJ-LIB/HTML/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/SMLNJ-LIB/HTML/.cm -@dirrm smlnj/lib/SMLNJ-LIB/HTML -@dirrm smlnj/lib/SMLNJ-LIB/PP/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/SMLNJ-LIB/PP/.cm -@dirrm smlnj/lib/SMLNJ-LIB/PP -@dirrm smlnj/lib/SMLNJ-LIB/Util/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/SMLNJ-LIB/Util/.cm -@dirrm smlnj/lib/SMLNJ-LIB/Util -@dirrm smlnj/lib/SMLNJ-LIB -@dirrm smlnj/lib/SMLNJ-ML-YACC-LIB/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/SMLNJ-ML-YACC-LIB/.cm -@dirrm smlnj/lib/SMLNJ-ML-YACC-LIB -@dirrm smlnj/lib/SMLNJ-MLRISC/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/SMLNJ-MLRISC/.cm -@dirrm smlnj/lib/SMLNJ-MLRISC -@dirrm smlnj/lib/burg-ext.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/burg-ext.cm/.cm -@dirrm smlnj/lib/burg-ext.cm -@dirrm smlnj/lib/c/memory/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/c/memory/.cm -@dirrm smlnj/lib/c/memory -@dirrm smlnj/lib/c/internals/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/c/internals/.cm -@dirrm smlnj/lib/c/internals -@dirrm smlnj/lib/c/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/c/.cm -@dirrm smlnj/lib/c -@dirrm smlnj/lib/ckit-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/ckit-lib.cm/.cm -@dirrm smlnj/lib/ckit-lib.cm -@dirrm smlnj/lib/cml/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/cml/.cm -@dirrm smlnj/lib/cml -@dirrm smlnj/lib/cml-lib/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/cml-lib/.cm -@dirrm smlnj/lib/cml-lib -@dirrm smlnj/lib/dir-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/dir-tool.cm/.cm -@dirrm smlnj/lib/dir-tool.cm -%%EVERYTHING%%@dirrm smlnj/lib/eXene.cm/.cm/%%MLARCH%%-unix -%%EVERYTHING%%@dirrm smlnj/lib/eXene.cm/.cm -%%EVERYTHING%%@dirrm smlnj/lib/eXene.cm -@dirrm smlnj/lib/grm-ext.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/grm-ext.cm/.cm -@dirrm smlnj/lib/grm-ext.cm -@dirrm smlnj/lib/hash-cons-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/hash-cons-lib.cm/.cm -@dirrm smlnj/lib/hash-cons-lib.cm -@dirrm smlnj/lib/html4-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/html4-lib.cm/.cm -@dirrm smlnj/lib/html4-lib.cm -@dirrm smlnj/lib/inet-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/inet-lib.cm/.cm -@dirrm smlnj/lib/inet-lib.cm -@dirrm smlnj/lib/json-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/json-lib.cm/.cm -@dirrm smlnj/lib/json-lib.cm -@dirrm smlnj/lib/lex-ext.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/lex-ext.cm/.cm -@dirrm smlnj/lib/lex-ext.cm -@dirrm smlnj/lib/make-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/make-tool.cm/.cm -@dirrm smlnj/lib/make-tool.cm -@dirrm smlnj/lib/ml-antlr-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/ml-antlr-tool.cm/.cm -@dirrm smlnj/lib/ml-antlr-tool.cm -@dirrm smlnj/lib/ml-lpt-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/ml-lpt-lib.cm/.cm -@dirrm smlnj/lib/ml-lpt-lib.cm -@dirrm smlnj/lib/ml-ulex-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/ml-ulex-tool.cm/.cm -@dirrm smlnj/lib/ml-ulex-tool.cm -@dirrm smlnj/lib/mlburg-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/mlburg-tool.cm/.cm -@dirrm smlnj/lib/mlburg-tool.cm -@dirrm smlnj/lib/mllex-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/mllex-tool.cm/.cm -@dirrm smlnj/lib/mllex-tool.cm -%%EVERYTHING%%@dirrm smlnj/lib/mlrisc-tools/.cm/%%MLARCH%%-unix -%%EVERYTHING%%@dirrm smlnj/lib/mlrisc-tools/.cm -%%EVERYTHING%%@dirrm smlnj/lib/mlrisc-tools -@dirrm smlnj/lib/mlyacc-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/mlyacc-tool.cm/.cm -@dirrm smlnj/lib/mlyacc-tool.cm -@dirrm smlnj/lib/noweb-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/noweb-tool.cm/.cm -@dirrm smlnj/lib/noweb-tool.cm -@dirrm smlnj/lib/nw-ext.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/nw-ext.cm/.cm -@dirrm smlnj/lib/nw-ext.cm -%%EVERYTHING%%@dirrm smlnj/lib/pgraph-util.cm/.cm/%%MLARCH%%-unix -%%EVERYTHING%%@dirrm smlnj/lib/pgraph-util.cm/.cm -%%EVERYTHING%%@dirrm smlnj/lib/pgraph-util.cm -@dirrm smlnj/lib/pgraph.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/pgraph.cm/.cm -@dirrm smlnj/lib/pgraph.cm -@dirrm smlnj/lib/pickle-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/pickle-lib.cm/.cm -@dirrm smlnj/lib/pickle-lib.cm -@dirrm smlnj/lib/reactive-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/reactive-lib.cm/.cm -@dirrm smlnj/lib/reactive-lib.cm -@dirrm smlnj/lib/regexp-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/regexp-lib.cm/.cm -@dirrm smlnj/lib/regexp-lib.cm -@dirrm smlnj/lib/sexp-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/sexp-lib.cm/.cm -@dirrm smlnj/lib/sexp-lib.cm -@dirrm smlnj/lib/shell-tool.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/shell-tool.cm/.cm -@dirrm smlnj/lib/shell-tool.cm -@dirrm smlnj/lib/smlnj/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/.cm -@dirrm smlnj/lib/smlnj/basis/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/basis/.cm -@dirrm smlnj/lib/smlnj/basis -@dirrm smlnj/lib/smlnj/MLRISC/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/MLRISC/.cm -@dirrm smlnj/lib/smlnj/MLRISC -@dirrm smlnj/lib/smlnj/cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/cm/.cm -@dirrm smlnj/lib/smlnj/cm -@dirrm smlnj/lib/smlnj/cmb/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/cmb/.cm -@dirrm smlnj/lib/smlnj/cmb -@dirrm smlnj/lib/smlnj/compiler/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/compiler/.cm -@dirrm smlnj/lib/smlnj/compiler -@dirrm smlnj/lib/smlnj/init/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/init/.cm -@dirrm smlnj/lib/smlnj/init -@dirrm smlnj/lib/smlnj/internal/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/internal/.cm -@dirrm smlnj/lib/smlnj/internal -@dirrm smlnj/lib/smlnj/installer/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/installer/.cm -@dirrm smlnj/lib/smlnj/installer -@dirrm smlnj/lib/smlnj/ml-yacc/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/ml-yacc/.cm -@dirrm smlnj/lib/smlnj/ml-yacc -@dirrm smlnj/lib/smlnj/smlnj-lib/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/smlnj-lib/.cm -@dirrm smlnj/lib/smlnj/smlnj-lib -@dirrm smlnj/lib/smlnj/viscomp/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj/viscomp/.cm -@dirrm smlnj/lib/smlnj/viscomp -@dirrm smlnj/lib/smlnj -@dirrm smlnj/lib/smlnj-tdp/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/smlnj-tdp/.cm -@dirrm smlnj/lib/smlnj-tdp -@dirrm smlnj/lib/unix-lib.cm/.cm/%%MLARCH%%-unix -@dirrm smlnj/lib/unix-lib.cm/.cm -@dirrm smlnj/lib/unix-lib.cm -@dirrm smlnj/lib -@dirrm smlnj +smlnj/lib/xml-lib.cm/.cm/%%MLARCH%%-unix/xml-lib.cm