The ports collection has had support for man pages for a long time, but lacks direct support for info files (as generated by GNU makeinfo). This means that for every file, pkg-plist needs to include one @exec and one @unexec entry per file, and one or more entries for the individual pieces of that file. Furthermore, and this is a serious problem since the recent updates of texinfo/makeinfo, one texinfo file may be split into different numbers of .info and .info-* files. Fix: The patch below adds support for a new entry INFO in ports Makefiles that accepts a list of info-files and handles pkg-plist fully automatically. We can only determine the actual number/names of the .info-{1,2,3,...} files _after_ installation, so we cannot add the new functionality to the generate-plist target. (Given that David O'Brien's similar machinery in the lang/gcc3x ports has been tested in the field for a long time, and my tests with the cfengine2 port which has info documentations consisting both of single and multiple files also worked fine, I hope this is acceptable.) ${TMPPLIST}: @cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} generate-plist + +add-plist-info: +.for i in ${INFO} + @${ECHO_CMD} "@unexec install-info --delete %D/info/$i.info %D/info/dir" \ + >> ${TMPPLIST} + @${LS} ${PREFIX}/info/$i.info* | ${SED} -e s:${PREFIX}/::g >> ${TMPPLIST} + @${ECHO_CMD} "@exec install-info %D/info/$i.info %D/info/dir" \ + >> ${TMPPLIST} +.endfor # Compress (or uncompress) and symlink manpages. .if !target(compress-man)--edaZReAUHct0aoif64ZhqrZlfUIHRq3ZyQHmiwSwB7kHsV2t Content-Type: text/plain; name="file.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="file.diff" Index: bsd.port.mk =================================================================== RCS file: /sw/FreeBSD/CVSUP/ports/Mk/bsd.port.mk,v retrieving revision 1.457 diff -u -3 -p -r1.457 bsd.port.mk --- bsd.port.mk 22 Jul 2003 03:51:15 -0000 1.457 +++ bsd.port.mk 23 Jul 2003 23:10:07 -0000 @@ -526,6 +526,11 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org # is set and NO_INSTALL_MANPAGES is not set, and # "no" otherwise. # +# Set the following to specify all .info files your port installs. +# +# INFO - A list of .info files (omitting the trailing ".info"); +# only one entry per document! +# # Default targets and their behaviors: # # fetch - Retrieves ${DISTFILES} (and ${PATCHFILES} if defined) @@ -3212,7 +3217,7 @@ _INSTALL_SEQ= install-message check-cate 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 \ + pre-su-install-script do-install add-plist-info post-install \ post-install-script compress-man run-ldconfig fake-pkg \ security-check _PACKAGE_DEP= install @@ -4251,6 +4256,15 @@ generate-plist:
Responsible Changed From-To: freebsd-ports-bugs->portmgr This is portmgr stuff (and Kris will take care of it to help address the recent makeinfo "breakage").
State Changed From-To: open->analyzed A modified version of this patch (folded the add-plist-info target into generate-plist) is being tested on the current package run.
On Mon, Jul 28, 2003 at 03:36:12PM +0200, Gerald Pfeifer wrote: > On Sun, 27 Jul 2003, Kris Kennaway wrote: > > State-Changed-Why: > > A modified version of this patch (folded the add-plist-info > > target into generate-plist) is being tested on the current > > package run. > > Did you also make other changes (such as running generate-plist after > do-install) along the way? > > If not, I'm afraid the patch won't work with your change for the reasons > I had noted in the PR (where "won't work" means that it will pass the > current round of testing, as this feature is never used there, but will > fail when used). > > Or am I missing something? OK, I hadn't noticed the ls there. I'm not sure that's the best way to obtain the information about which info files were installed, but it will do for now. I restored your original patch and tested it a bit more with the plwm port as a test-case. This port seems to install the info files in post-install, which causes the info file to fail to register. This might be possible to work around. Kris
State Changed From-To: analyzed->closed Patch committed, thanks!