The package-noinstall target does not include rc.d scripts, because it does not ensure that RC scripts have been added to the TMPPLIST file. See also the mailing list thread in ports@: http://docs.freebsd.org/cgi/mid.cgi?c1a0d1561002200755q4ab28515ic550fca1789e1cd8 Fix: wxs has a patch that adds the check: http://people.freebsd.org/~wxs/package-noinstall-rc-script.diff I instead propose to remove this functionality from bsd.port.mk and instead rely on "pkg_create -b". Patch attached with submission follows: How-To-Repeat: Run "make package-noinstall" for a port that installs an rc.d script. Make sure that the work directory is clean before you do so. tar -tf /usr/ports/packages/All/pkgname.tbz will show you that the rc.d script is missing.
Responsible Changed From-To: freebsd-ports-bugs->miwi I'll take it.
Responsible Changed From-To: miwi->portmgr over to portmgr.
I have a nice tinderbox with a quad-core and 8-GB of RAM at home, now. What should I build (with and without the patch) to demonstrate you that this does not introduce regressions? Regards
Responsible Changed From-To: portmgr->pav Take for exp-run
State Changed From-To: open->feedback This breaks certain metaports .. http://pointyhat.freebsd.org/errorlogs/amd64-errorlogs/a.8-exp.20101111125232/cups-1.4.4.log ===> Building package for cups-1.4.4 ===> Generating temporary packing list pkg_create: can't find package 'cups-1.4.4' installed! *** Error code 1
I looked into this. The error is my assumption that `make install` always results in an entry in PKG_DBDIR. As it turns out, this is wrong. print/cups has NO_INSTALL set and installing it from the ports does not result in an a PKG_DBDIR entry. This is results in some oddities, like you can install print/cups for an infinite amount of times, because it will never actually be installed. And of course pkg_info does not list cups, right after installing it: # cd /usr/ports/print/cups # make clean ===> Cleaning for cups-1.4.5 # make install ===> License check disabled, port has not defined LICENSE ===> Extracting for cups-1.4.5 ===> Patching for cups-1.4.5 ===> cups-1.4.5 depends on executable: espgs - found ===> cups-1.4.5 depends on executable: cupsd - found ===> Configuring for cups-1.4.5 # pkg_info -Ex cups cups-base-1.4.5 cups-client-1.4.5 cups-image-1.4.5 cups-pstoraster-8.15.4_6 So the only way to install a meta-port that defines NO_INSTALL is to install the package. My suggestion is to change the behaviour of NO_INSTALL to something I consider more consistent. My tinderbox is still running, two builds have already completed cups-1.4.5 with the updated patch: diff -u bsd.port.mk.orig bsd.port.mk --- bsd.port.mk.orig 2010-11-16 12:59:45.000000000 +0100 +++ bsd.port.mk 2010-11-16 12:57:51.000000000 +0100 @@ -3411,9 +3411,9 @@ .endif # Disable install -.if defined(NO_INSTALL) && !target(install) -install: build - @${TOUCH} ${TOUCH_FLAGS} ${INSTALL_COOKIE} +.if defined(NO_INSTALL) && !target(do-install) +do-install: + @${DO_NADA} .endif # Disable package @@ -3883,20 +3883,7 @@ fi; \ fi @__softMAKEFLAGS='${__softMAKEFLAGS:S/'/'\''/g}'; \ - _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 ${PKG_CMD} ${PKG_ARGS} ${PKGFILE}; then \ + if ${PKG_CMD} -b ${PKGNAME} ${PKGFILE}; then \ if [ -d ${PACKAGES} ]; then \ cd ${.CURDIR} && eval ${MAKE} $${__softMAKEFLAGS} package-links; \ fi; \
State Changed From-To: feedback->open New patch received
Tinderbuild logs: http://www.home.hs-karlsruhe.de/~fado0001/logs/7-i386-ports-patched/cups-1.4.5.log http://www.home.hs-karlsruhe.de/~fado0001/logs/7-amd64-ports-patched/cups-1.4.5.log http://www.home.hs-karlsruhe.de/~fado0001/logs/8-i386-ports-patched/cups-1.4.5.log http://www.home.hs-karlsruhe.de/~fado0001/logs/8-amd64-ports-patched/cups-1.4.5.log Regards
State Changed From-To: open->closed Committed, thanks!
pav 2010-11-24 23:04:02 UTC FreeBSD ports repository Modified files: Mk bsd.port.mk Log: - Fix NO_INSTALL ports to register an entry in /var/db/pkg (ie. print/cups) - Change package-noinstall target to create package with pkg_create -b instead of specifying all the arguments PR: ports/144164 Submitted by: Dominic Fandrey <kamikaze@bsdforen.de> Revision Changes Path 1.656 +5 -18 ports/Mk/bsd.port.mk _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
This patch has one dark side. The pkg-message will no longer displayed if you install from package, (has me driven crazy until I recognized the issue with this patch). You can test this easily by installing a package which displays a pkg-message and was build with and without this patch. I opened PR 152626 about this behavior, hopefully the issue will be resolved before ports freeze.