Solved Poudriere or Synth?

Greeting all,

I have spent last few day trying to understand the difference between poudriere(8) and synth(1), but to no avail. Thus, I though that I try to explain my understanding in terms of my goal, with a hope that someone can help by pointing me to a solution.

I have been running a FreeBSD based server and since I needed options different from default options for some of the packages, I have compiled them from ports. It is my understanding that ports and packages should not be mixed; therefore, I compiled everything from ports.

My recent experiments with FreeBSD on desktop seem to be successful, so I have been thinking about moving from Windows and/or Linux. Since I perceive to have the same issue with the packages, I started thinking about centralized solution.

My understanding is that both poudriere(8) and synth(1) download all necessary files for compiling package(s) from port(s) from the official FreeBSD repository to a host, apply build options, and compile the package(s) that are then placed into local repository on the host. The host, as well as remote subscribers, may then access the local repository using the pkg command.

Considering, that this understanding is correct, it does not help with the conundrum, which of the tool to choose.

Any help is greatly appreciated.

Kindest regards,

M
 
My understanding is that both poudriere and synth download all necessary files for compiling package(s) from port(s) from the official FreeBSD repository to a host, apply build options, and compile the package(s) that are then placed into local repository on the host. The host, as well as remote subscribers, may then access the local repository using the pkg command.

ports-mgmt/poudriere also uses the ports tree for building packages, however a key difference is that it uses jails for a clean/pristine build environment rather than a live system. This is a big advantage, because it improves reliability. You don't get build errors because the user had some customization in blah.conf, or package X installed with option Y, etc.
 
Synth doesn't require a jail(8) set up like poudriere does, it uses a chroot(8) environment instead that is built from the host OS using nullfs(5) mounts. It also offers a "quick start" mode that takes the list of installed packages from the host and that list is then the basis for building the package repository. Poudriere doesn't offer this feature.
 
Hi jrm,

I think that the point kpa is making that both tools are using clean environment. Would you agree?

Regardless, I am no closer to solution to my quandary. ;-(

Kindest regards,

M
 
If you want to build packages
  1. from multiple different port trees (e.g. the head or quarterly branch, a branch with your own patches, ...)
  2. targeting different FreeBSD versions
  3. maybe for different architectures (like i386, amd64, armv6)
  4. with different package sets
  5. all on the same host
Poudriere is your answer.

Otherwise Synth is fine. Synth can do 1 and 4 as well via its profile support. For you with one server i.e. building a single package set from one ports tree Poudriere is probably overkill.
 
mefizto,
You can't go wrong with either program. If somebody is successfully set up with Poudriere, I would not recommend they switch to Synth. However, I would recommend Synth over Poudriere for new users. Poudriere is built for the FreeBSD package clusters with the side benefit of individuals being able to use it as well. Synth was always aimed at the individual meaning it is supposed to be quicker to learn, quicker to setup, just plain quicker (it is!). It's also prettier.

Poudriere is currently slightly more robust (this doesn't matter to regular user) and Poudriere has a web interface that Synth doesn't currently have. There are things planned for Synth in the future, e.g. watchdog (so it's as robust as Poudriere) and cluster builder (so Synth can run builds over multiple machines)).

I would recommend Synth to you, but I am biased. I wrote it.
 
Otherwise Synth is fine. Synth can do 1 and 4 as well via its profile support. For you with one server i.e. building a single package set from one ports tree Poudriere is probably overkill.

Correct. Other than perhaps cross-building arm packages on amd64, Synth can do those same things. The main reason for doing it is A) Synth can do them significantly faster than Poudriere and B) you like the interface. However, I would say it's almost easier to set up Poudriere for this (for an expert in both, the difficulty is the same IMO)
 
Hi jrm,

ha, ha, that is where I got my information. ;-)

Hi tobik, @marino,

Thank you for the replies. I am all for simple tools, being a simpleton myself, so from that perspective Synth would be preferable.

marino@, in regards to tobik's list , you wrote
Other than perhaps cross-building arm packages on amd64, synth can do those same things.

Does it mean that I can have two branches, one for 10.X and another one for 11.X? The reason for asking is that I have a spare machine on which I always test any change that I want to do to the server, and it would be nice to test a new release before committing to it. If not, this can be solved by testing the new release on a different Synth on the spare machine.

The second question is, although the server and the workstation are amd64 (Xeon), my laptop is i386 (Core2Duo) that I do not want to give up since it has a 4:3 aspect ration screen. If I understand your quote correctly, I will be unable to use Synth on a single machine for building for both the amd64 and the i386 that, correct?

Kindest regards,

M
 
Does it mean that I can have two branches, one for 10.X and another one for 11.X?

Yes, but it requires some things.
  1. it requires that the building server is 11.X. You can only build downward (11.X can build 10.3, but 10.3 can't build 11.x)
  2. it requrires that the other world is installed and a profile created details where it is (the profile also needs a new location to put the packages). Poudriere is doing the same thing but somewhat automates it.
Building 2 branches is beyond beginner use of Synth, it's at least intermediate level.

The second question is, although the server and the workstation are amd64 (Xeon), my laptop is i386 (Core2Duo) that I do not want to give up since it has a 4:3 aspect ration screen. If I understand your quote correctly, I will be unable to use Synth on a single machine for building for both the amd64 and the i386 that, correct?

I'm not quite understanding the confusion here.
The Xeon can build packages for itself and the laptop. The laptop can only build packages for itself.
If they are on the same network, you'd usually want to use the more powerful machine. In general you would prefer to use amd64 over i386 for memory limitations alone.
 
Hi tobik,

Sorry, my mistake, it is Pentium DualCore, and it is i386.

Hi marino@,

Thank you for the explanation. Since I am Synth beginner, I will not (at lest initially) build two branches. If I ever get so ambitious, I will certainly ask for help if I cannot figure it on my own.

Regarding your confusion to my second question, the question was to your response that (emphasis supplied):
Other than perhaps cross-building arm packages on amd6
I have interpreted your response that Synth cannot build for a different processor architecture. So an amd64 architecture cannot build for an i386 architecture.

However, your current response:
The Xeon can build packages for itself and the laptop
indicates that it is possible.

Can you please clarify?

Kindest regards,

M
 
mefizto, a CPU can only compile for its own or "lower" architectures. So a 64-bit CPU can compile and run 32-bit software, but not vice-versa. In any case, you wouldn't really use your laptop to build packages for your high-powered server, would you? ;)
 
I have interpreted your response that Synth cannot build for a different processor architecture. So an amd64 architecture cannot build for an i386 architecture.
Can you please clarify?

The "selling point" for amd64 is that it's a 64-bit processor that is capable of running the 32-bit x86 instructions. It's very well known that FreeBSD amd64 comes with 32-bit libraries and can execute and build i386 packages. Yes, FreeBSD amd64 can build i386 packages (but the reverse is not true). ARM is a completely unrelated architecture and cross-building on it would require qemu or something like that.
 
I say "keep it simple".
Install Synth on both the server and the laptop. Have the laptop build a specific set of ports for itself and the same for the server.
Once you figure out how Synth works and you decide it's worth the effort for the server to build i386 packages, you can try to set that up. If you are installing like KDE on the laptop, it very well might be worth the effort. A dualcore is pretty long in the tooth by now.

Alternatively, you can install both Synth and Poudriere on the server and use Poudriere to build i386 packages.
 
Hi ANOKNUSA, marino@,

Thank you for all the help. Yes, the idea was to use the server to build for both architecture. However, based on all the advises, Synth it is. I will install it on the server, familiarize myself with its functionality, and then I will try to extend the building for the i386.

Agreed that the DualCore is rather ancient, but where can one find laptop with 4:3 aspect ratio screen?.

Kindest regards,

M
 
Back
Top