Leander Schaefer info at NetOcean.de wrote on Tue May 5 20:38:49 UTC 2020 :
> I have been dealing with Poudriere for quite a while and one of the most > issues I have is, that I have ports which won't compile along with > another. Reason is mostly something like: > > pkg-static: ImageMagick7-7.0.10.6 conflicts with ImageMagick6-6.9.11.6,1 > (installs files into the same place). Problematic file: > /usr/local/bin/Magick++-config > > So in other words a newer version is going to place its binaries etc. > into the same place as the previous version. I have read and used > something like: > > # Build several PHP versions parallel on the same server: > # > https://github.com/freebsd/poudriere/issues/602 > > PHP_ALT=php56 php70 php71 php72 php73 > .for port in ${PHP_ALT} > .if ${.CURDIR:M*/ports*/*/${port}*} > DISABLE_CONFLICTS=YES > PREFIX=/usr/local/${port} > PHPBASE=/usr/local/${port} > LOCALBASE=/usr/local > CONFIGURE_ARGS+=--datadir=/usr/local/${port}/share > CONFIGURE_ARGS+=--bindir=/usr/local/${port}/bin > CONFIGURE_ARGS+=--with-config-file-scan-dir=/usr/local/${port}/etc/php > #CONFIGURE_ARGS+=--with-php-config=/usr/local/${port}/bin/php.conf > #CONFIGURE_ARGS+=--with-iconv=/usr/local > #CONFIGURE_ARGS+=--with-pcre-dir=/usr/local > .endif > .endfor > > But I was wondering: How is the FreeBSD Team dealing with this, when > they compile their packages for the public repository? Because we only > use one official repository and all packages are there ... some even > with differet options enabled. So how to deal with this? How can I > compile the entire ports tree without issues and build a repository of > it and some packages even with different options? Lets say one OpenLDAP > with SASL and another one with SASL? The only way I was able to do this > was building it in separate repositories. The following is based on a guess about what might be going on. In my context, for example, I have: # poudriere jail -l JAILNAME VERSION ARCH METHOD TIMESTAMP PATH FBSDFSSDjail 13.0-CURRENT amd64 null 2018-11-09 08:58:53 /usr/obj/DESTDIRs/clang-amd64-installworld-poud I do not chroot into /usr/obj/DESTDIRs/clang-amd64-installworld-poud and install any ports there. Why? Because the installed port could conflict with whatever port(s) poudriere bulk might want to install temporarily. My /usr/obj/DESTDIRs/clang-amd64-installworld-poud/ is only for poudriere's use. Having installed ports in /usr/obj/DESTDIRs/clang-amd64-installworld-poud would also lead to poudriere using the installed port over instead installing ports that it is building. This can lead t using the wrong version of such an installed port. Also, I have: # ls -laT /usr/obj/DESTDIRs/clang-amd64-installworld-poud/usr/local/ total 8 drwxr-xr-x 2 root wheel 512 Mar 29 23:31:30 2020 . drwxr-xr-x 14 root wheel 512 Apr 29 11:57:28 2020 .. I do not make that a mount point for making /usr/local visible for chrooting into clang-amd64-installworld-poud. This is for the same reason as above: poudriere activity there could end up conflicting with any pre-existing content that as made visible in /usr/obj/DESTDIRs/clang-amd64-installworld-poud/usr/local/ . I do sometimes create other directory trees for use with chroot (but not as the PATH for a poudiere jail). In these I freely install ports. These notes apply to more than just "bulk -a" builds: smaller subsets built can have the same problems with having pre-existing material in an equivalent of my /usr/obj/DESTDIRs/clang-amd64-installworld-poud/usr/local/ area. === Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar) _______________________________________________ freebsd-ports@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"