Re: Poudriere - Compile ALL Ports

2020-05-11 Thread Mark Millard via freebsd-ports
On 2020-May-11, at 11:34, Patrick M. Hausen  wrote:

> I’m confused by this thread. isn’t the point of Poudriere
> bulk builds to

When I listed:

# 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 probably should have explicitly pointed out the use of "METHOD"
"null" as the type of context I was covering.

Poudiere has many options. One of them for "poudriere jail" is:

 -m methodSpecifies which method to use to create the jail.  
(default:http)
. . .
  null

 This option can be used to import an existing
 directory that already contains an installed
 system.  The path must be specified with -M
 path.  It is expected that this directory be
 installed to with the following:

   /usr/src# make installworld DESTDIR=PATH 
DB_FROM_SRC=1
   /usr/src# make distrib-dirs DESTDIR=PATH 
DB_FROM_SRC=1
   /usr/src# make distribution DESTDIR=PATH 
DB_FROM_SRC=1

 The path will be null-mounted during builds.
 It will not be copied at the time of running
 jail.  Deleting the jail will attempt to re-
 vert any files changed by poudriere.
. . .

This is one way of testing development contexts that
might not exist in svn yet (or ever). There is also
src=PATH and tar=PATH and the like.

Part of my guess was that such a "not from scratch"
context might be in use. The guess could be wrong
for all I know.

The rest of the below is tied the the "-m null" sort
of jail context: It is not covering all poudriere jail
methods.

> - start with a clean jail

If one manually makes the jail unclean by doing chroot and
things like installing ports, poudriere does not clean out
what one did: it takes the jail (mostly) as-is and uses it
to make the reference jail for the run. (That in turn is
used to make the jails for jobs.)

So it is the poudriere user's responsibility to have the
jail's content clean before starting poudriere. (Remember:
-m null as a poudriere jail context is the context being
covered.)

If started clean, poudriere will keep it clean. If started
dirty, poudriere will keep it dirty.

> - build the first port in the list and all dependencies

The order is dependencies have their packages built first
and dependencies are later used by being temporarily
installed in the job's jail before building what was
dependent. After the dependent package is packaged, the
temporary material is eliminated before the next port is
built in that jail.

> - store the packages for later incorporation into the pkg repo

Previously built packages are also used to install
what a dependent port's build depends on, even in the
same overall bulk run.

> - clean out the jail completely

There are multiple jails involved, especially for
parallel jobs.

poudriere makes a reference jail off the original user
jail (off of /usr/obj/DESTDIRs/clang-amd64-installworld-poud
in my example). It then makes jails for the parallel
jobs off the reference jail as I understand. These are what
get poudriere's equivalent of what a "clean out" would be
(between jobs that reuse the specific temporary jail).

For the most part poudriere leaves the likes of
/usr/obj/DESTDIRs/clang-amd64-installworld-poud alone and
works with its temporary reference and job jails.

> - start with the next port in the list

With parallel jobs and complicated dependencies,
the concept of "next" is itself somewhat complicated
but respects the dependency structure by not starting
anything too early for what all it depends on to be
available to be temporarily installed in job's
jail.

> - …
> 
> How can there ever be a build conflict unless there is a bug
> like port A depends on B and ImageMagick 7, while B is
> lagging somewhat behind and depends on ImageMagick 6?

If one has poudriere create the build's reference jail from
a user jail that already has ports installed, then the
reference and job jails will also already have those ports
installed. That in turn can lead to conflicts.

> But if ImageMagick 6 and 7 are not dependencies but intended
> target packages, doesn’t Poudriere build each of them in a shiny
> new empty environment?

The new environment is only empty if the original user jail
was already empty. (Again: the -m null poudriere jail context
is the intended coverage of the statements.)

> At least that’s what I thought our Poudriere was doing all day
> and night and we never had a build conflict like this. Bugs like
> the aforementioned aside.

I do not think that the original report listed w

Re: Poudriere - Compile ALL Ports

2020-05-11 Thread Patrick M. Hausen
Hi all,

I’m confused by this thread. isn’t the point of Poudriere
bulk builds to

- start with a clean jail
- build the first port in the list and all dependencies
- store the packages for later incorporation into the pkg repo
- clean out the jail completely
- start with the next port in the list
- …

How can there ever be a build conflict unless there is a bug
like port A depends on B and ImageMagick 7, while B is
lagging somewhat behind and depends on ImageMagick 6?

But if ImageMagick 6 and 7 are not dependencies but intended
target packages, doesn’t Poudriere build each of them in a shiny
new empty environment?

At least that’s what I thought our Poudriere was doing all day
and night and we never had a build conflict like this. Bugs like
the aforementioned aside.

Happy to get enlightened,
Patrick
-- 
punkt.de GmbH
Patrick M. Hausen
.infrastructure

Kaiserallee 13a
76133 Karlsruhe

Tel. +49 721 9109500

https://infrastructure.punkt.de
i...@punkt.de

AG Mannheim 108285
Geschäftsführer: Jürgen Egeling, Daniel Lienert, Fabian Stein

___
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"


Re: Poudriere - Compile ALL Ports

2020-05-11 Thread Mark Millard via freebsd-ports
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"


Re: Poudriere - Compile ALL Ports

2020-05-11 Thread Mathieu Arnold
On Thu, May 07, 2020 at 08:39:41PM +0200, Leander Schaefer wrote:
> Hello Chris,
> 
> Hello List,
> 
> I have checked out ports-mgmt/synth unfortunately it would be a massive
> downgrade compared to poudriere. Does anyone have the right clue about how
> the FreeBSD package managment team provides a complete repository without
> having these conflicts? There must be a way to do this with poudriere since
> I am most certainly sure they also use poudriere.

I do not understand, which port are you trying to build that fails
because of those conflicts?

-- 
Mathieu Arnold


signature.asc
Description: PGP signature


Re: Poudriere - Compile ALL Ports

2020-05-07 Thread Chris

On Thu, 7 May 2020 20:39:41 +0200 Leander Schaefer i...@netocean.de said


Hello Chris,

Hello List,

I have checked out ports-mgmt/synth unfortunately it would be a massive 
downgrade compared to poudriere. Does anyone have the right clue about 
how the FreeBSD package managment team provides a complete repository 
without having these conflicts? There must be a way to do this with 
poudriere since I am most certainly sure they also use poudriere.


Also is there a way to tell poudriere to give a package a different / 
individual name. E.g. I want to compile openldap one time with SASL and 
another time without SASL and place them in the same repository. The 
package naming could/should then be something like this:


OK I don't use poudriere, or any of the other "convenience" toys. They
introduce too many additional variables, which can easily lead to
unintended results.
With that in mind. I use jail(8). It provides a "clean room" with no
more than what a base system, and the ports(7) framework has to provide.
All the questions you've asked so far, are well covered in ports(7).
Conflicting "depends"? Run make all-depends-list some-port, followed by
make all-depends-list some-other-port. Then compare the results. Want
to make a package repo?
myjail.jail # mkdir -p /usr/port/packages/All
myjail.jail # mkdir -p /usr/port/packages/Latest
myjail.jail # cd /usr/ports/ports-mgmt/pkg
myjail.jail # make package install clean
myjail.jail # cd /usr/port/x11/xorg
myjail.jail # make package-recursive

My point is. There *shouldn't* be that much controversy building
ports that build, and install harmoniously. That's the way the
ports/pkg system was designed. The fact that you're running into
so much controversy, seems to indicate you have a "tainted"
environment -- built/installed several ports from source, followed
by installing some by way of pkg(8). Using that procedure is a
crap-shoot -- a gamble, that will ultimately lead to failure.
It's really hard to say what, and where things went wrong. It's
not my computer. But I would strongly suggest building a jail,
and using it to create a package-repo. You'll have a clean
environment to create packages that are guaranteed to work
together on your system. Take a good look at the ports(7) man
page for all the possibilities. The jail(8) man page also
deserves a good read. It's trivial to create a jail, and it's
not at all resource hungry -- I've got 7 jails running on a 3
core AMD box w/8G ram on it. It also runs www, and mail. While
that's not my build server. It does illustrate how light-weight
jails are/can be.

HTH

--Chris


- openldap-sasl

- openldap

Thanks

Am 05.05.20 um 23:06 schrieb Leander Schaefer:
> Hello Chris,
>
>
> thanks for your reply. Thanks for the hint about ports-mgmt/synth. I 
> am definitly going to have a look into this! Well, my Podriere is 
> using Jails by default. Is there any hack you applied for this issue 
> to avoid?

>
>
> Best regards,
>
> Leander
>
>
> Am 05.05.20 um 22:46 schrieb Chris:
>> On Tue, 5 May 2020 22:38:36 +0200 Leander Schaefer i...@netocean.de said
>>
>>> Hello,
>>>
>>> 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.

>>>
>>> Thanks
>> I use Jails which helps weed out some 

Re: Poudriere - Compile ALL Ports

2020-05-07 Thread Christoph Moench-Tegeder
## Leander Schaefer (i...@netocean.de):

>  Does anyone have the right clue about 
> how the FreeBSD package managment team provides a complete repository 
> without having these conflicts? There must be a way to do this with 
> poudriere since I am most certainly sure they also use poudriere.

The trick behind that is "poudriere bulk -a".
poudriere-bulk(8): "-a Build all ports in the tree with all flavors."
And I'm not sure what the problem is? poudriere does not install the
packages, so conflicts won't matter (unless build dependencies
conflict with each other, but then the package cannot be built
anyways). How do you get install conflicts during poudriere builds?

> Also is there a way to tell poudriere to give a package a different / 
> individual name. E.g. I want to compile openldap one time with SASL and 
> another time without SASL and place them in the same repository. The 
> package naming could/should then be something like this:
> 
> - openldap-sasl
> 
> - openldap

You picked the one example... we have openldap24-client,
openldap24-sasl-client and openldap24-server to accomodate that.
But in general: unless the ports in question themselves don't
provide a mechanism, there is no way.

Regards,
Christoph

-- 
Spare Space
___
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"


Re: Poudriere - Compile ALL Ports

2020-05-07 Thread Leander Schaefer

Hello Chris,

Hello List,

I have checked out ports-mgmt/synth unfortunately it would be a massive 
downgrade compared to poudriere. Does anyone have the right clue about 
how the FreeBSD package managment team provides a complete repository 
without having these conflicts? There must be a way to do this with 
poudriere since I am most certainly sure they also use poudriere.


Also is there a way to tell poudriere to give a package a different / 
individual name. E.g. I want to compile openldap one time with SASL and 
another time without SASL and place them in the same repository. The 
package naming could/should then be something like this:


- openldap-sasl

- openldap

Thanks

Am 05.05.20 um 23:06 schrieb Leander Schaefer:

Hello Chris,


thanks for your reply. Thanks for the hint about ports-mgmt/synth. I 
am definitly going to have a look into this! Well, my Podriere is 
using Jails by default. Is there any hack you applied for this issue 
to avoid?



Best regards,

Leander


Am 05.05.20 um 22:46 schrieb Chris:

On Tue, 5 May 2020 22:38:36 +0200 Leander Schaefer i...@netocean.de said


Hello,

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.


Thanks
I use Jails which helps weed out some of the conflicts. That is 
different

jails for different (port) options that *may* cause conflict. Also
ports-mgmt/synth is pretty damn clever about sorting out conflicts.
However, I have no direct knowledge on how the pkg build admins deal 
with

this. But just thought I'd share some alternate avenue(s) FWIW. :-)



___
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"





Mit freundlichen Grüßen

Leander Schäfer


___
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"

___
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"


Re: Poudriere - Compile ALL Ports

2020-05-05 Thread Leander Schaefer

Hello Chris,


thanks for your reply. Thanks for the hint about ports-mgmt/synth. I am 
definitly going to have a look into this! Well, my Podriere is using 
Jails by default. Is there any hack you applied for this issue to avoid?



Best regards,

Leander


Am 05.05.20 um 22:46 schrieb Chris:

On Tue, 5 May 2020 22:38:36 +0200 Leander Schaefer i...@netocean.de said


Hello,

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.


Thanks

I use Jails which helps weed out some of the conflicts. That is different
jails for different (port) options that *may* cause conflict. Also
ports-mgmt/synth is pretty damn clever about sorting out conflicts.
However, I have no direct knowledge on how the pkg build admins deal with
this. But just thought I'd share some alternate avenue(s) FWIW. :-)



___
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"





Mit freundlichen Grüßen


Leander Schäfer



Logo


NetOcean GmbH

Legienstraße 20

65929 Frankfurt am Main

Contact 

Telefon



+49 69 1539 1025

Fax



+49 69 1539 1024

Mobil



+49 160 6916 361

E-Mail



i...@netocean.de 

Website



http://NetOcean.de 

Sitz der Gesellschaft



Frankfurt am Main

USt - IdNr.



DE295235000

Amtsgericht F. a. M.



HRB 103978

Geschäftsführung



Leander Schäfer


___
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"


Re: Poudriere - Compile ALL Ports

2020-05-05 Thread Chris

On Tue, 5 May 2020 22:38:36 +0200 Leander Schaefer i...@netocean.de said


Hello,

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.


Thanks

I use Jails which helps weed out some of the conflicts. That is different
jails for different (port) options that *may* cause conflict. Also
ports-mgmt/synth is pretty damn clever about sorting out conflicts.
However, I have no direct knowledge on how the pkg build admins deal with
this. But just thought I'd share some alternate avenue(s) FWIW. :-)



___
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"



___
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"


Poudriere - Compile ALL Ports

2020-05-05 Thread Leander Schaefer

Hello,

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.


Thanks

___
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"