Sun Jul 3 19:08:22 2016 UTC ()
Generate the base/ copy of the runtime from the src/ copy after
patching, instead of extracting twice.


(dholland)
diff -r1.26 -r1.27 pkgsrc/lang/smlnj/Makefile

cvs diff -r1.26 -r1.27 pkgsrc/lang/smlnj/Makefile (switch to unified diff)

--- pkgsrc/lang/smlnj/Makefile 2016/04/14 22:10:06 1.26
+++ pkgsrc/lang/smlnj/Makefile 2016/07/03 19:08:22 1.27
@@ -1,107 +1,122 @@ @@ -1,107 +1,122 @@
1# $NetBSD: Makefile,v 1.26 2016/04/14 22:10:06 dholland Exp $ 1# $NetBSD: Makefile,v 1.27 2016/07/03 19:08:22 dholland Exp $
2# 2#
3 3
4DISTNAME= boot.${BOX}-unix 4DISTNAME= boot.${BOX}-unix
5PKGNAME= smlnj-${SML_VERSION} 5PKGNAME= smlnj-${SML_VERSION}
6CATEGORIES= lang 6CATEGORIES= lang
7MASTER_SITES= http://smlnj.cs.uchicago.edu/dist/working/${SML_VERSION}/ 7MASTER_SITES= http://smlnj.cs.uchicago.edu/dist/working/${SML_VERSION}/
8DISTFILES= MLRISC.tgz \ 8DISTFILES= MLRISC.tgz \
9 boot.${BOX}-unix.tgz \ 9 boot.${BOX}-unix.tgz \
10 ckit.tgz \ 10 ckit.tgz \
11 cm.tgz \ 11 cm.tgz \
12 cml.tgz \ 12 cml.tgz \
13 compiler.tgz \ 13 compiler.tgz \
14 config.tgz \ 14 config.tgz \
15 eXene.tgz \ 15 eXene.tgz \
16 ml-burg.tgz \ 16 ml-burg.tgz \
17 ml-lex.tgz \ 17 ml-lex.tgz \
18 nlffi.tgz \ 18 nlffi.tgz \
19 ml-yacc.tgz \ 19 ml-yacc.tgz \
20 runtime.tgz \ 20 runtime.tgz \
21 smlnj-lib.tgz \ 21 smlnj-lib.tgz \
22 system.tgz \ 22 system.tgz \
23 ml-lpt.tgz \ 23 ml-lpt.tgz \
24 pgraph.tgz \ 24 pgraph.tgz \
25 trace-debug-profile.tgz \ 25 trace-debug-profile.tgz \
26 heap2asm.tgz \ 26 heap2asm.tgz \
27 smlnj-c.tgz 27 smlnj-c.tgz
28 28
29MAINTAINER= richards+netbsd@CS.Princeton.EDU 29MAINTAINER= richards+netbsd@CS.Princeton.EDU
30HOMEPAGE= http://www.smlnj.org/index.html 30HOMEPAGE= http://www.smlnj.org/index.html
31COMMENT= Popular functional language from Bell Labs 31COMMENT= Popular functional language from Bell Labs
32 32
33SML_VERSION= 110.73 33SML_VERSION= 110.73
34PKGREVISION= 1 34PKGREVISION= 1
35 35
36WRKSRC= ${WRKDIR} 36WRKSRC= ${WRKDIR}
37DIST_SUBDIR= smlnj-${SML_VERSION} 37DIST_SUBDIR= smlnj-${SML_VERSION}
38USE_TOOLS+= gmake pax 38USE_TOOLS+= gmake pax
39 39
40# previous versions of the package had an additional '-' 40# previous versions of the package had an additional '-'
41CONFLICTS= sml-nj-[0-9]* 41CONFLICTS= sml-nj-[0-9]*
42 42
43SML_BASE= ${PREFIX}/lib/smlnj 43SML_BASE= ${PREFIX}/lib/smlnj
44SML_LIBDIR= ${SML_BASE}/lib 44SML_LIBDIR= ${SML_BASE}/lib
45SML_BINDIR= ${SML_BASE}/bin 45SML_BINDIR= ${SML_BASE}/bin
46SML_SCRIPTS= _link-sml _run-sml _ml-build _ml-makedepend 46SML_SCRIPTS= _link-sml _run-sml _ml-build _ml-makedepend
47 47
48.include "../../lang/smlnj/Makefile.common" 48.include "../../lang/smlnj/Makefile.common"
49 49
50# create parent directory for the runtime system 50#
 51# For smlnj reasons the runtime system needs to be unpacked twice, once
 52# in work/src and once in work/base.
 53#
 54# As of 20160624, instead of inconsistently patching one copy or the
 55# other and hoping, or patching both and duplicating all the patches,
 56# we'll patch only work/src, and then *after* patching clone work/src
 57# into work/base.
 58#
 59
 60# create parent directories for the runtime system
51pre-extract: 61pre-extract:
52 ${MKDIR} ${WRKDIR}/src || ${TRUE} 62 ${MKDIR} ${WRKDIR}/src || ${TRUE}
 63 ${MKDIR} ${WRKDIR}/base || ${TRUE}
53 64
54# make it easier to patch the runtime system 65# make it easier to patch the runtime system
55do-extract: 66do-extract:
56 ${RUN} extract_file="${_DISTDIR}/config.tgz"; export extract_file; \ 67 ${RUN} extract_file="${_DISTDIR}/config.tgz"; \
 68 export extract_file; \
57 cd ${WRKDIR}; ${EXTRACT_CMD} 69 cd ${WRKDIR}; ${EXTRACT_CMD}
58 ${RUN} extract_file="${_DISTDIR}/runtime.tgz"; export extract_file; \ 70 ${RUN} extract_file="${_DISTDIR}/runtime.tgz"; \
 71 export extract_file; \
59 cd ${WRKDIR}/src; ${EXTRACT_CMD} 72 cd ${WRKDIR}/src; ${EXTRACT_CMD}
60 ${RUN} extract_file="${_DISTDIR}/runtime.tgz"; export extract_file; \ 
61 mkdir ${WRKDIR}/base; cd ${WRKDIR}/base; ${EXTRACT_CMD} 
62 73
63# make symlinks to the dist files 74# symlink the rest of the distfiles
64post-extract: 75post-extract:
65 cd ${WRKDIR} && ${LN} -sf ${_DISTDIR}/* . 76 cd ${WRKDIR} && ${LN} -sf ${_DISTDIR}/* .
 77
 78# make the necessary copy of the runtime, _after_ patching src
 79post-patch:
 80 cd ${WRKDIR}/src && pax -rw runtime ${WRKDIR}/base/
66 81
67# resolve definition of SML_BASE, CFLAGS in patched files 82# resolve definition of SML_BASE, CFLAGS in patched files
68do-configure: 83do-configure:
69 set -e; \ 84 set -e; \
70 if [ ${MACHINE_ARCH} = "powerpc" ]; then \ 85 if [ ${MACHINE_ARCH} = "powerpc" ]; then \
71 ${AWK} '(! /^request nlffi$$/) { print }' \ 86 ${AWK} '(! /^request nlffi$$/) { print }' \
72 < ${WRKDIR}/config/targets \ 87 < ${WRKDIR}/config/targets \
73 > ${WRKDIR}/temp; \ 88 > ${WRKDIR}/temp; \
74 ${MV} ${WRKDIR}/temp ${WRKDIR}/config/targets; \ 89 ${MV} ${WRKDIR}/temp ${WRKDIR}/config/targets; \
75 fi 90 fi
76 set -e; \ 91 set -e; \
77 cd ${WRKDIR}/config; \ 92 cd ${WRKDIR}/config; \
78 for f in ${SML_SCRIPTS}; do \ 93 for f in ${SML_SCRIPTS}; do \
79 ${CP} "$${f}" "$${f}.tmp"; \ 94 ${CP} "$${f}" "$${f}.tmp"; \
80 ${SED} -e 's|@SML_BASE@|${SML_BASE}|g' \ 95 ${SED} -e 's|@SML_BASE@|${SML_BASE}|g' \
81 < "$${f}.tmp" > "$${f}"; \ 96 < "$${f}.tmp" > "$${f}"; \
82 done; \ 97 done; \
83 cd ${WRKDIR}/src/runtime/objs; \ 98 cd ${WRKDIR}/src/runtime/objs; \
84 for f in *; do \ 99 for f in *; do \
85 ${CP} "$${f}" "$${f}.tmp"; \ 100 ${CP} "$${f}" "$${f}.tmp"; \
86 ${SED} -e 's|@CFLAGS@|'${CFLAGS:Q}'|g' \ 101 ${SED} -e 's|@CFLAGS@|'${CFLAGS:Q}'|g' \
87 < "$${f}.tmp" > "$${f}"; \ 102 < "$${f}.tmp" > "$${f}"; \
88 done 103 done
89 104
90# The build target needs to run $WRKDIR/config/install.sh 105# The build target needs to run $WRKDIR/config/install.sh
91do-build: 106do-build:
92 cd ${WRKDIR} && unset PWD && \ 107 cd ${WRKDIR} && unset PWD && \
93 FILESDIR=${FILESDIR} PATCH=${PATCH:Q} PATCH_ARGS=${PATCH_ARGS:Q} \ 108 FILESDIR=${FILESDIR} PATCH=${PATCH:Q} PATCH_ARGS=${PATCH_ARGS:Q} \
94 SMLNJ_HOME="${WRKDIR}" ./config/install.sh 109 SMLNJ_HOME="${WRKDIR}" ./config/install.sh
95 110
96# install target 111# install target
97# (see ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.38/INSTALL) 112# (see ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.38/INSTALL)
98# 1. create installation directories 113# 1. create installation directories
99# 2. copy the ./bin and ./lib directories across 114# 2. copy the ./bin and ./lib directories across
100# 3. install links to executables in $PREFIX/bin 115# 3. install links to executables in $PREFIX/bin
101INSTALLATION_DIRS= bin 116INSTALLATION_DIRS= bin
102do-install: 117do-install:
103 ${INSTALL_DATA_DIR} ${DESTDIR}${SML_BASE} 118 ${INSTALL_DATA_DIR} ${DESTDIR}${SML_BASE}
104 cd ${WRKDIR} && pax -rw -pam bin lib ${DESTDIR}${SML_BASE} 119 cd ${WRKDIR} && pax -rw -pam bin lib ${DESTDIR}${SML_BASE}
105 cd ${DESTDIR}${PREFIX}/bin && ${LN} -sf ../lib/smlnj/bin/* . 120 cd ${DESTDIR}${PREFIX}/bin && ${LN} -sf ../lib/smlnj/bin/* .
106 121
107.include "../../mk/bsd.pkg.mk" 122.include "../../mk/bsd.pkg.mk"