ports/66032: [PATCH] bsd.port.mk: clean room installation
Oliver Eikemeier
eikemeier at fillmore-labs.com
Tue Apr 27 17:00:40 UTC 2004
>Number: 66032
>Category: ports
>Synopsis: [PATCH] bsd.port.mk: clean room installation
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Apr 27 10:00:39 PDT 2004
>Closed-Date:
>Last-Modified:
>Originator: Oliver Eikemeier
>Release: FreeBSD 4.10-STABLE i386
>Organization:
Fillmore Labs - http://www.fillmore-labs.com
>Environment:
System: FreeBSD nuuk.fillmore-labs.com 4.10-STABLE
>Description:
The attached patch is a proposal for a new installation procedure,
triggered by
CLEANROOM_INSTALL= yes
in a ports Makefile. If this variable is not present, everything
proceed as normal. Otherwise, the package installs into WRKINST
(default ${WRKDIR}/.inst), build a package from this installation
and in installs this package. This is accomplished by installing
with DESTDIR set, a procedure already supported by the Makefiles
of many ports.
Advantages of this approach are:
- the packing list is always correct, since the real installation
is done from the package
- if a port installs unwanted files, they can just be omitted from
the packing list without patching anything.
- files can easily renamed before installation without conflicting
with existing files (configuration files, man pages etc.)
- splitting a port into multiple parts (like client and server)
becomes trivial.
- packages can be build without influencing installed ports, making
upgrades faster (build a package first, then deinstall the old
package and immediately install the new one) and enabling building
multiple versions of a port (eg. with and without LDAP) without
constantly installing and deinstalling them.
future benefits may be:
- automatic packing list generation, even for manual pages
- building of multiple packages (client and server) in one step
I used port net/rsync as a test case, simply insert
CLEANROOM_INSTALL= yes
in the ports Makefile and do
sed -i '.bak' -Ee '/^(pre-|do-|post-)?install:/,/^$/s/\${(DOCSDIR|EXAMPLESDIR|PREFIX)}/${DESTDIR}&/g' Makefile
This procedure should work as a starting point for many ports.
>How-To-Repeat:
>Fix:
The patch needs an updated version of pkg_create which understands
`-S basedir'. It is available by installing pkg_install-devel
version 20040426. Since I can't upgrade pkg_install-devel now (ports
freeze), a patch for this port is attached. pkg_install on older systems
could be upgraded with the mechanism already present in bsd.port.mk
for CONFLICTS.
Index: Mk/bsd.port.mk
===================================================================
RCS file: /home/ncvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.488
diff -u -r1.488 bsd.port.mk
--- Mk/bsd.port.mk 19 Apr 2004 23:39:52 -0000 1.488
+++ Mk/bsd.port.mk 27 Apr 2004 15:48:54 -0000
@@ -993,9 +994,9 @@
# tree we are and thus can't go relative. They can, of course, be overridden
# by individual Makefiles or local system make configuration.
PORTSDIR?= /usr/ports
-LOCALBASE?= ${DESTDIR}/usr/local
-X11BASE?= ${DESTDIR}/usr/X11R6
-LINUXBASE?= ${DESTDIR}/compat/linux
+LOCALBASE?= /usr/local
+X11BASE?= /usr/X11R6
+LINUXBASE?= /compat/linux
DISTDIR?= ${PORTSDIR}/distfiles
_DISTDIR?= ${DISTDIR}/${DIST_SUBDIR}
.if ${OSVERSION} >= 500036
@@ -1193,6 +1194,12 @@
_POSTMKINCLUDED= yes
+.if defined(DESTDIR)
+check-makevars::
+ @${ECHO_CMD} "${PKGNAME}: Makefile error: DESTDIR is not user settable"
+ @${FALSE}
+.endif
+
WRKDIR?= ${WRKDIRPREFIX}${.CURDIR}/work
.if defined(NO_WRKSUBDIR)
WRKSRC?= ${WRKDIR}
@@ -1205,6 +1212,16 @@
BUILD_WRKSRC?= ${WRKSRC}
INSTALL_WRKSRC?=${WRKSRC}
+WRKINST?= ${WRKDIR}/.inst
+
+.if defined(CLEANROOM_INSTALL)
+DESTDIR= ${WRKINST}
+INSTALL_ENV+= DESTDIR="${WRKINST}"
+SCRIPTS_ENV+= DESTDIR="${WRKINST}"
+.else
+DESTDIR=
+.endif
+
PLIST_SUB+= OSREL=${OSREL} PREFIX=%D LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
.if defined(WITHOUT_CPU_CFLAGS)
@@ -1576,12 +1595,9 @@
.endif
# Names of cookies used to skip already completed stages
-EXTRACT_COOKIE?= ${WRKDIR}/.extract_done.${PKGNAME}.${PREFIX:S/\//_/g}
-CONFIGURE_COOKIE?= ${WRKDIR}/.configure_done.${PKGNAME}.${PREFIX:S/\//_/g}
-INSTALL_COOKIE?= ${WRKDIR}/.install_done.${PKGNAME}.${PREFIX:S/\//_/g}
-BUILD_COOKIE?= ${WRKDIR}/.build_done.${PKGNAME}.${PREFIX:S/\//_/g}
-PATCH_COOKIE?= ${WRKDIR}/.patch_done.${PKGNAME}.${PREFIX:S/\//_/g}
-PACKAGE_COOKIE?= ${WRKDIR}/.package_done.${PKGNAME}.${PREFIX:S/\//_/g}
+.for target in extract patch configure build pkgbuild install package
+${target:U}_COOKIE?= ${WRKDIR}/.${target}_done.${PKGNAME}.${PREFIX:S/\//_/g}
+.endfor
# How to do nothing. Override if you, for some strange reason, would rather
# do something.
@@ -2318,6 +2334,12 @@
PKGFILE?= ${.CURDIR}/${PKGNAME}${PKG_SUFX}
.endif
+.if defined(CLEANROOM_INSTALL)
+_PKGFILE?= ${WRKDIR}/${PKGNAME}${PKG_SUFX}
+.else
+_PKGFILE?= ${PKGFILE}
+.endif
+
# The "latest version" link -- ${PKGNAME} minus everthing after the last '-'
PKGLATESTREPOSITORY?= ${PACKAGES}/Latest
PKGBASE?= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}
@@ -2580,7 +2604,7 @@
IGNORECMD= ${ECHO_MSG} "===> ${PKGNAME} ${IGNORE}."
.endif
-.for target in check-sanity fetch checksum extract patch configure all build install reinstall package
+.for target in check-sanity fetch checksum extract patch configure all build pkgbuild install reinstall package
${target}:
@${IGNORECMD}
.if defined(INSTALLS_DEPENDS)
@@ -3110,23 +3134,29 @@
# Install
+.if defined(CLEANROOM_INSTALL) && ${PKGINSTALLVER} < 20040426
+check-makefile::
+ @${ECHO_CMD} "${PKGNAME}: Makefile error: please upgrade pkg_install to use CLEANROOM_INSTALL"
+ @${FALSE}
+.endif
+
.if !target(do-install)
do-install:
.if defined(USE_GMAKE)
- @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET})
+ @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET})
.if defined(USE_IMAKE) && !defined(NO_INSTALL_MANPAGES)
- @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install.man)
+ @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} ${GMAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install.man)
.if ${XFREE86_HTML_MAN:L} == yes
@${MKHTMLINDEX} ${PREFIX}/lib/X11/doc/html
.endif
.endif
.else # !defined(USE_GMAKE)
.if defined(PERL_MODBUILD)
- @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${PERL5} ${PL_BUILD} ${MAKE_ARGS} ${INSTALL_TARGET})
+ @(cd ${BUILD_WRKSRC}; ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} ${PERL5} ${PL_BUILD} ${MAKE_ARGS} ${INSTALL_TARGET})
.else
- @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET})
+ @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET})
.if defined(USE_IMAKE) && !defined(NO_INSTALL_MANPAGES)
- @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install.man)
+ @(cd ${INSTALL_WRKSRC} && ${SETENV} ${MAKE_ENV} ${INSTALL_ENV} ${MAKE} ${MAKE_FLAGS} ${MAKEFILE} ${MAKE_ARGS} install.man)
.if ${XFREE86_HTML_MAN:L} == yes
@${MKHTMLINDEX} ${PREFIX}/lib/X11/doc/html
.endif
@@ -3135,10 +3165,16 @@
.endif
.endif
+.if !target(install-package)
+install-package: pkgbuild
+ @${PKG_ADD} ${_PKGFILE}
+.endif
+
# Package
.if !target(do-package)
do-package: ${TMPPLIST}
+.if !defined(CLEANROOM_INSTALL)
@if [ -d ${PACKAGES} ]; then \
if [ ! -d ${PKGREPOSITORY} ]; then \
if ! ${MKDIR} ${PKGREPOSITORY}; then \
@@ -3161,7 +3197,41 @@
if [ -f ${PKGMESSAGE} ]; then \
_LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -D ${PKGMESSAGE}"; \
fi; \
- if ${PKG_CMD} ${PKG_ARGS} ${PKGFILE}; then \
+ if [ -n "${DESTDIR}" ]; then \
+ _LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -S ${DESTDIR}"; \
+ fi; \
+ if ${PKG_CMD} ${PKG_ARGS} ${_PKGFILE}; then \
+ if [ -d ${PACKAGES} ]; then \
+ cd ${.CURDIR} && eval ${MAKE} $${__softMAKEFLAGS} package-links; \
+ fi; \
+ else \
+ cd ${.CURDIR} && eval ${MAKE} $${__softMAKEFLAGS} delete-package; \
+ exit 1; \
+ fi
+.else
+ @_LATE_PKG_ARGS=""; \
+ if [ -f ${PKGINSTALL} ]; then \
+ _LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -i ${PKGINSTALL}"; \
+ fi; \
+ if [ -f ${PKGDEINSTALL} ]; then \
+ _LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -k ${PKGDEINSTALL}"; \
+ fi; \
+ if [ -f ${PKGREQ} ]; then \
+ _LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -r ${PKGREQ}"; \
+ fi; \
+ if [ -f ${PKGMESSAGE} ]; then \
+ _LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -D ${PKGMESSAGE}"; \
+ fi; \
+ if [ -n "${DESTDIR}" ]; then \
+ _LATE_PKG_ARGS="$${_LATE_PKG_ARGS} -S ${DESTDIR}"; \
+ fi; \
+ ${PKG_CMD} ${PKG_ARGS} ${_PKGFILE}
+.endif
+.endif
+
+.if !target(copy-package)
+copy-package:
+ @if ${CP} -f ${_PKGFILE} ${PKGFILE}; then \
if [ -d ${PACKAGES} ]; then \
cd ${.CURDIR} && eval ${MAKE} $${__softMAKEFLAGS} package-links; \
fi; \
@@ -3274,12 +3344,12 @@
.if !target(install-mtree)
install-mtree:
- @${MKDIR} ${PREFIX}
+ @${MKDIR} ${DESTDIR}${PREFIX}
@if [ `${ID} -u` != 0 ]; then \
- if [ -w ${PREFIX}/ ]; then \
+ if [ -w ${DESTDIR}${PREFIX}/ ]; then \
${ECHO_MSG} "Warning: not superuser, you may get some errors during installation."; \
else \
- ${ECHO_MSG} "Error: ${PREFIX}/ not writable."; \
+ ${ECHO_MSG} "Error: ${DESTDIR}${PREFIX}/ not writable."; \
${FALSE}; \
fi; \
fi
@@ -3290,9 +3360,9 @@
${ECHO_CMD} "Copy it from a suitable location (e.g., /usr/src/etc/mtree) and try again."; \
exit 1; \
else \
- ${MTREE_CMD} ${MTREE_ARGS} ${PREFIX}/ >/dev/null; \
+ ${MTREE_CMD} ${MTREE_ARGS} ${DESTDIR}${PREFIX}/ >/dev/null; \
if [ ${MTREE_FILE} = "/etc/mtree/BSD.local.dist" ]; then \
- cd ${PREFIX}/share/nls; \
+ cd ${DESTDIR}${PREFIX}/share/nls; \
${LN} -shf C POSIX; \
${LN} -shf C en_US.US-ASCII; \
fi; \
@@ -3486,17 +3556,37 @@
_BUILD_DEP= configure
_BUILD_SEQ= build-message pre-build pre-build-script do-build \
post-build post-build-script
+.if !defined(CLEANROOM_INSTALL)
_INSTALL_DEP= build
_INSTALL_SEQ= install-message check-conflicts \
run-depends lib-depends pre-install pre-install-script \
generate-plist check-already-installed
_INSTALL_SUSEQ= check-umask install-mtree pre-su-install \
pre-su-install-script do-install post-install add-plist-info \
- post-install-script add-plist-docs compress-man run-ldconfig fake-pkg \
- security-check
+ post-install-script add-plist-docs compress-man run-ldconfig fake-pkg
+_INSTALL_SEQ2= security-check
_PACKAGE_DEP= install
_PACKAGE_SEQ= package-message pre-package pre-package-script \
- do-package post-package-script
+ do-package post-package post-package-script
+.else
+_PKGBUILD_DEP= build
+_PKGBUILD_SEQ= pkgbuild-message pre-pkgbuild pre-pkgbuild-script \
+ pre-install pre-install-script \
+ generate-plist
+_PKGBUILD_SUSEQ= check-umask install-mtree pre-su-install \
+ pre-su-install-script do-install post-install add-plist-info \
+ post-install-script add-plist-docs compress-man \
+ post-pkgbuild post-pkgbuild-script
+_PKGBUILD_SEQ2= pkgbuild2-message pre-package pre-package-script \
+ do-package post-package post-package-script
+_INSTALL_DEP= pkgbuild
+_INSTALL_SEQ= install-message check-conflicts run-depends lib-depends check-already-installed
+_INSTALL_SUSEQ= install-package run-ldconfig
+_INSTALL_SEQ2= security-check
+_PACKAGE_DEP= pkgbuild
+_PACKAGE_SEQ= package-message copy-package
+
+.endif
.if !target(check-sanity)
check-sanity: ${_SANITY_SEQ}
@@ -3510,7 +3600,7 @@
# Main logic. The loop generates 6 main targets and using cookies
# ensures that those already completed are skipped.
-.for target in extract patch configure build install package
+.for target in extract patch configure build pkgbuild install package
.if !target(${target}) && defined(_OPTIONS_OK)
${target}: ${${target:U}_COOKIE}
@@ -3533,14 +3623,18 @@
@cd ${.CURDIR} && \
${SU_CMD} "${MAKE} ${__softMAKEFLAGS} ${_${target:U}_SUSEQ}"
@${ECHO_MSG} "===> Returning to user credentials"
+.if defined(_${target:U}_SEQ2)
+ @cd ${.CURDIR} && \
+ ${MAKE} ${__softMAKEFLAGS} ${_${target:U}_SEQ2}
+.endif
@${TOUCH} ${TOUCH_FLAGS} ${.TARGET}
.elif defined(USE_SUBMAKE)
${${target:U}_COOKIE}: ${_${target:U}_DEP}
@cd ${.CURDIR} && \
- ${MAKE} ${__softMAKEFLAGS} ${_${target:U}_SEQ} ${_${target:U}_SUSEQ}
+ ${MAKE} ${__softMAKEFLAGS} ${_${target:U}_SEQ} ${_${target:U}_SUSEQ} ${_${target:U}_SEQ2}
@${TOUCH} ${TOUCH_FLAGS} ${.TARGET}
.else
-${${target:U}_COOKIE}: ${_${target:U}_DEP} ${_${target:U}_SEQ} ${_${target:U}_SUSEQ}
+${${target:U}_COOKIE}: ${_${target:U}_DEP} ${_${target:U}_SEQ} ${_${target:U}_SUSEQ} ${_${target:U}_SEQ2}
@${TOUCH} ${TOUCH_FLAGS} ${.TARGET}
.endif
@@ -3563,7 +3657,10 @@
.ORDER: ${_PATCH_DEP} ${_PATCH_SEQ}
.ORDER: ${_CONFIGURE_DEP} ${_CONFIGURE_SEQ}
.ORDER: ${_BUILD_DEP} ${_BUILD_SEQ}
-.ORDER: ${_INSTALL_DEP} ${_INSTALL_SEQ}
+.if defined(CLEANROOM_INSTALL)
+.ORDER: ${_PKGBUILD_DEP} ${_PKGBUILD_SEQ} ${_PKGBUILD_SUSEQ} ${_PKGBUILD_SEQ2}
+.endif
+.ORDER: ${_INSTALL_DEP} ${_INSTALL_SEQ} ${_INSTALL_SUSEQ} ${_INSTALL_SEQ2}
.ORDER: ${_PACKAGE_DEP} ${_PACKAGE_SEQ}
extract-message:
@@ -3574,15 +3671,26 @@
@${ECHO_MSG} "===> Configuring for ${PKGNAME}"
build-message:
@${ECHO_MSG} "===> Building for ${PKGNAME}"
+.if !defined(CLEANROOM_INSTALL)
install-message:
@${ECHO_MSG} "===> Installing for ${PKGNAME}"
package-message:
@${ECHO_MSG} "===> Building package for ${PKGNAME}"
+.else
+pkgbuild-message:
+ @${ECHO_MSG} "===> Clean room installation for ${PKGNAME}"
+pkgbuild2-message:
+ @${ECHO_MSG} "===> Building package for ${PKGNAME}"
+install-message:
+ @${ECHO_MSG} "===> Installing package for ${PKGNAME}"
+package-message:
+ @${ECHO_MSG} "===> Archiving package for ${PKGNAME}"
+.endif
# Empty pre-* and post-* targets
.for stage in pre post
-.for name in check-sanity fetch extract patch configure build install package
+.for name in check-sanity fetch extract patch configure build pkgbuild install package
.if !target(${stage}-${name})
${stage}-${name}:
@@ -3719,6 +3827,12 @@
.if !target(clean)
clean:
+.if ${UID} != 0 && !defined(INSTALL_AS_USER) && defined(CLEANROOM_INSTALL)
+ @${ECHO_MSG} "===> Switching to root credentials for '${.TARGET}' target"
+ @cd ${.CURDIR} && \
+ ${SU_CMD} "${MAKE} ${__softMAKEFLAGS} ${.TARGET}"
+ @${ECHO_MSG} "===> Returning to user credentials"
+.else
.if !defined(NOCLEANDEPENDS)
@cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} clean-depends
.endif
@@ -3731,6 +3845,7 @@
@cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} post-clean
.endif
.endif
+.endif
.if !target(pre-distclean)
pre-distclean:
@@ -3978,7 +4093,7 @@
package-noinstall:
@${MKDIR} ${WRKDIR}
@cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} pre-package \
- pre-package-script do-package post-package-script
+ pre-package-script do-package post-package post-package-script
@${RM} -f ${TMPPLIST}
-@${RMDIR} ${WRKDIR}
.endif
@@ -4562,11 +4677,11 @@
[ "`${SED} -En -e '/^@cw?d[ ]*/s,,,p' ${TMPPLIST} | ${TAIL} -n 1`" != "${PREFIX}" ]; then \
${ECHO_CMD} "@cwd ${PREFIX}" >> ${TMPPLIST}; \
fi
- @${FIND} -P ${PORTDOCS:S/^/${DOCSDIR}\//} ! -type d 2>/dev/null | \
- ${SED} -ne 's,^${PREFIX}/,,p' >> ${TMPPLIST}
- @${FIND} -P -d ${PORTDOCS:S/^/${DOCSDIR}\//} -type d 2>/dev/null | \
- ${SED} -ne 's,^${PREFIX}/, at dirrm ,p' >> ${TMPPLIST}
- @if [ -d "${DOCSDIR}" ]; then \
+ @${FIND} -P ${PORTDOCS:S/^/${DESTDIR}${DOCSDIR}\//} ! -type d 2>/dev/null | \
+ ${SED} -ne 's,^${DESTDIR}${PREFIX}/,,p' >> ${TMPPLIST}
+ @${FIND} -P -d ${PORTDOCS:S/^/${DESTDIR}${DOCSDIR}\//} -type d 2>/dev/null | \
+ ${SED} -ne 's,^${DESTDIR}${PREFIX}/, at dirrm ,p' >> ${TMPPLIST}
+ @if [ -d "${DESTDIR}${DOCSDIR}" ]; then \
${ECHO_CMD} "@unexec rmdir %D/${DOCSDIR:S,^${PREFIX}/,,} 2>/dev/null || true" >> ${TMPPLIST}; \
fi
.else
@@ -4579,7 +4694,7 @@
.for i in ${INFO}
@${ECHO_CMD} "@unexec install-info --delete %D/${INFO_PATH}/$i.info %D/${INFO_PATH}/dir" \
>> ${TMPPLIST}
- @${LS} ${PREFIX}/${INFO_PATH}/$i.info* | ${SED} -e s:${PREFIX}/::g >> ${TMPPLIST}
+ @${LS} ${DESTDIR}${PREFIX}/${INFO_PATH}/$i.info* | ${SED} -e s:${DESTDIR}${PREFIX}/::g >> ${TMPPLIST}
@${ECHO_CMD} "@exec install-info %D/${INFO_PATH}/$i.info %D/${INFO_PATH}/dir" \
>> ${TMPPLIST}
.endfor
@@ -4590,21 +4705,21 @@
.if defined(_MANPAGES) || defined(_MLINKS)
.if ${MANCOMPRESSED} == yes && defined(NOMANCOMPRESS)
@${ECHO_MSG} "===> Uncompressing manual pages for ${PKGNAME}"
- @_manpages='${_MANPAGES:S/'/'\''/g}' && [ "$${_manpages}" != "" ] && ( eval ${GUNZIP_CMD} $${_manpages} ) || ${TRUE}
+ @_manpages='${_MANPAGES:S/^/${DESTDIR}/:S/'/'\''/g}' && [ "$${_manpages}" != "" ] && ( eval ${GUNZIP_CMD} $${_manpages} ) || ${TRUE}
.elif ${MANCOMPRESSED} == no && !defined(NOMANCOMPRESS)
@${ECHO_MSG} "===> Compressing manual pages for ${PKGNAME}"
- @_manpages='${_MANPAGES:S/'/'\''/g}' && [ "$${_manpages}" != "" ] && ( eval ${GZIP_CMD} $${_manpages} ) || ${TRUE}
+ @_manpages='${_MANPAGES:S/^/${DESTDIR}/:S/'/'\''/g}' && [ "$${_manpages}" != "" ] && ( eval ${GZIP_CMD} $${_manpages} ) || ${TRUE}
.endif
.if defined(_MLINKS)
@set ${_MLINKS}; \
while :; do \
[ $$# -eq 0 ] && break || ${TRUE}; \
- ${RM} -f $${2%.gz}; ${RM} -f $$2.gz; \
+ ${RM} -f ${DESTDIR}$${2%.gz}; ${RM} -f ${DESTDIR}$$2.gz; \
${LN} -fs `${ECHO_CMD} $$1 $$2 | ${AWK} '{ \
z=split($$1, a, /\//); x=split($$2, b, /\//); \
while (a[i] == b[i]) i++; \
for (q=i; q<x; q++) printf "../"; \
- for (; i<z; i++) printf a[i] "/"; printf a[z]; }'` $$2; \
+ for (; i<z; i++) printf a[i] "/"; printf a[z]; }'` ${DESTDIR}$$2; \
shift; shift; \
done
.endif
Index: sysutils/pkg_install-devel/Makefile
===================================================================
RCS file: /home/ncvs/ports/sysutils/pkg_install-devel/Makefile,v
retrieving revision 1.4
diff -u -r1.4 Makefile
--- sysutils/pkg_install-devel/Makefile 16 Apr 2004 01:24:46 -0000 1.4
+++ sysutils/pkg_install-devel/Makefile 26 Apr 2004 18:38:11 -0000
@@ -6,7 +6,7 @@
#
PORTNAME= pkg_install
-PORTVERSION= 20040412
+PORTVERSION= 20040426
CATEGORIES= sysutils
MASTER_SITES= ${MASTER_SITE_LOCAL}
MASTER_SITE_SUBDIR= eik
Index: sysutils/pkg_install-devel/distinfo
===================================================================
RCS file: /home/ncvs/ports/sysutils/pkg_install-devel/distinfo,v
retrieving revision 1.3
diff -u -r1.3 distinfo
--- sysutils/pkg_install-devel/distinfo 16 Apr 2004 01:24:46 -0000 1.3
+++ sysutils/pkg_install-devel/distinfo 27 Apr 2004 08:38:06 -0000
@@ -1,2 +1,2 @@
-MD5 (pkg_install-20040412.tar.gz) = 54907f84cdb56797057fff2281db983f
-SIZE (pkg_install-20040412.tar.gz) = 84332
+MD5 (pkg_install-20040426.tar.gz) = 7968e960cc3695759554dd50820f8455
+SIZE (pkg_install-20040426.tar.gz) = 368640
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list