Synth: Introducing new custom package repository builder for FreeBSD and DragonFly

I get the following error message. What to do?

Code:
# synth status
Builder mounts detected; attempting to remove them automatically ...
Dismounting successful!
Querying system about current package installations.
Stand by, comparing installed packages against the ports tree.

raised CONSTRAINT_ERROR : bad input for 'Value: ""
 
OK, I get it. The builder's /etc/make.conf is being referenced in the man page, not the system's /etc/make.conf. So I just created LiveSystem-make.conf with the contents of the system's /etc/make.conf and reran synth upgrade-system, and it looks like it's including the lines I copied from the system's /etc/make.conf as the packages are rebuilt. Thanks!
 
mirco do you have MAKE_JOBS_NUMBER defined in /etc/make.conf? If so, comment it out. It's messing synth up (will be fixed in next release)
 
OK, I get it. The builder's /etc/make.conf is being referenced in the man page, not the system's /etc/make.conf. So I just created LiveSystem-make.conf with the contents of the system's /etc/make.conf and reran synth upgrade-system, and it looks like it's including the lines I copied from the system's /etc/make.conf as the packages are rebuilt. Thanks!

Careful. We don't use /etc/make.conf because of its contents. If you indiscriminately dump /etc/make.conf into the customized make.conf you could be doing yourself a big disservice. If you want, paste it here so we can check you aren't doing something wrong.

In other words, you should be able to justify each and every line in the custom make.conf. When in doubt, remove it.
 
Last edited by a moderator:
I'm now running synth upgrade-system on my other server, which has comms/hylafax on it. The compilation of that port is interactive -- you have to make selections during the build process. How does synth handle those kinds of ports?

I guess I'll find out in about 30 minutes or so...
 
There are no more interactive ports in the entire tree. The answer is no, synth (and poudriere) only build non-interactive ports.
 
Hi again. I've found the problem that I had with lang/python27. I noticed that it also failed on mail/spamassassin except that complained about missing SSLv3 symbols before crashing out. This made me remember that I had switched off the options for SSLv2/SSLv3 support in security/openssl. As you had pointed out the line about openssl as being a potential issue this made me think maybe I should try and switch those options back on. Guess what? Now both python and spamassassin compiled without any issue.

I have one further question though. I have the option turned on which should fetch packages from the external repo if they haven't been changed. This doesn't appear to have worked for anything so far. I'm wondering is that maybe because I have /var/db/ports entries for *every* port, even if I haven't actually changed anything from the defaults, because that's just how the port/portmaster behaves. I'm wondering if it might work better if I ran make rmconfig on a few of them?
 
There are no more interactive ports in the entire tree. The answer is no, synth (and poudriere) only build non-interactive ports.
Yes, you're right. The log shows no interactive prompts. That goes to show how long it's been since I had to rebuild that port!
 
It's my opinion that you should only have options set on ports that differ from the defaults.
That being said, it's hard to being that no ports are suitable for pre-fetching.
Maybe your external report (freeBSD repository) is set to quarterly packages?
 
Yes, you're right. The log shows no interactive prompts. That goes to show how long it's been since I had to rebuild that port!
It's both. If it's inside a builder, it builds in batch mode. If you build it live with make, it's interactive (according to commit log)
 
That being said, it's hard to being that no ports are suitable for pre-fetching.
Maybe your external report (freeBSD repository) is set to quarterly packages?

The jury is still out, but to me its looking like very little fetching of pre-built packages is happening. I'll know better in a week or two. How do I determine again what my machines are set to use? I have not changed any defaults. Stock FreeBSD 10.2-RELEASE and stock synth.
 
You know FreeBSD 10.2 STOCK defaults to quarterly branch right?
Check pkg -vv and see the repository url. If it says "quarterly" then I guess you can expect very little fetching.
(ports are equivalent to "latest")
 
You know FreeBSD 10.2 STOCK defaults to quarterly branch right?

Yeah I didn't know that. Still learning. I'm a internetworking routing & switching guy, not a full time server guy. :)

So yeah its set to quarterly. I thought synth kinda override that and make it own decisions, but I know yer gonna tell me not now. So should I change that to some sort of 'latest' branch value? Do I even want to? Should I leave well enough alone?:)
 
If you leave it at quarterly, then you might as well turn off prefetching option.
For some reason, FreeBSD 10.2 is set to quarterly and the previous FreeBSD releases are set to latest.

Synth will not "override" pkg(8). It would have to invasively rewrite a non-synth pkg(8) conf file and it philosophically will not (and should not) do that.

What it perhaps could do is warn the user if quarterly is detected though (in the URL), but see below, quarterly could be valid.

Summary: your FreeBSD repository should match your ports!
If your ports tree is on "latest" (e.g. portsnap) then you need FreeBSD repo to be on latest.
If your ports tree is on quarterly (e.g. svn branch) then you need FreeBSD repo to be on quarterly
 
Last edited by a moderator:
I've gone through /var/db/ports and removed everything except the bare minimum now for which I want to keep custom options. I've deleted the whole repository and let it rebuild it again and still as far as I can tell it has compiled its own custom packages for everything rather than just pre-fetch ones from the FreeBSD repo. I am using the latest repo rather than quarterly because I am using the stable branch rather than a release branch and the defaults are different for stable branches. So my repo URL is "pkg+http://pkg.FreeBSD.org/FreeBSD:10:amd64/latest". Oh well, it's not a huge problem, just I'm curious. Unless maybe amd64 packages are built less often than i386 ones?

Other than that, I am now succesfully using synth and it works very well. So I would just like to say thank you for such a great tool.
 
Could someone please testbuild deskutils/calibre and check if it waits for godot in staging?

The "build deinstall reinstall clean" takes only a minute or so when done using make.
 
xtaz: new packages are built weekly for both amd64 and i386, so that's not the issue.
It might help to turn off ncurses mode and capture the text when it tries to connect to external repository. confirm that it's doing that successfully first.

from what you have describe, it should be prefetching.
 
Last edited by a moderator:
Back
Top