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

basbebe can you tell me output of this command?
/usr/bin/make -C devel/p5-Perl-Unsafe-Signals -VPKGVERSION -VPKGFILE:T -VMAKE_JOBS_NUMBER -VIGNORE -VFETCH_DEPENDS -VEXTRACT_DEPENDS -VPATCH_DEPENDS -VBUILD_DEPENDS -VLIB_DEPENDS -VRUN_DEPENDS -VSELECTED_OPTIONS -VDESELECTED_OPTIONS -V_INCLUDE_USES_SCONS_MK -VUSE_LINUX
The output is empty…
I also tried
Code:
make config
make: don't know how to make config. Stop

make: stopped in /usr/ports/devel/p5-Perl-Unsafe-Signals

I also found out that the folder "p5-Perl-Unsafe-Signals" is empty. Is removing it and portsnap fetch update safe?
 
Last edited by a moderator:
Okay, that's the problem. Your tree is corrupt.
portsnap(8) may not fix it. It might be worth deleting the whole thing and reextracting it, but you have to be careful with /usr/ports/distfiles and /usr/ports/packages if those are being used (see why those are stupid default locations?)
 
Synth should probably be more tolerant of a bad tree, or at least say "hey!, the're no makefile here!"
 
Got all packages to install, update seems to work. Except lang/ghc - is either something with the port or the tmpfs/swap - I don't know (it states "out of swap" - I don't believe it). For the moment I have marked it as broken (the only way to skip it with Synth).
By the way
sysutils/htop also installs, editors/abiword after I set option MATHVIEW to off (should make a bug report).
 
I downloaded a new ports tree to /tmp/ports, deleted anything but distfiles and packages in /usr/ports and moved the new tree back.
Now it seems to work, thanks a lot!
 
Last edited by a moderator:
I downloaded a new ports tree to /tmp/ports, deleted anything but distfiles and packages in /usr/ports and moved the new tree back.
Now it seems to work, thanks a lot!

Great! and I'll use the experience you had to make synth(1) handle cases like that better.
 
Last edited by a moderator:
No, it works not. Last try seems all ok. I make a new test (no updated package from the server in the meantime):
59 packages to recompile - synth(8) is never to satisfy.
For the hell what does it want?
 
You absolutely have to identify which package that is always rebuilding. It is most likely an error in the port itself, but if you don't tell us which one, how can we check?
 
Turn off ncurses mode using # synth configure and log the output before building starts. probably the first package that is removed is the one. It's outputted to the screen.
 
You understand the problem, right? Synth sees a package that you think is up to date, and it says, "no, it's not up to date", and removes it, and then a bunch of packages that need it are also removed. One package can remove hundreds or even thousands of ports.
 
I set the env variable manual to /tmp
Querying system about current package installations.
Stand by, comparing installed packages against the ports tree.
Stand by, updating external repository catalogs ... pkg: file:///var/synth/live_packages/meta.txz: No such file or directory
pkg: file:///var/synth/live_packages/packagesite.txz: No such file or directory
Failed!
The external repository could not be updated.

basbebe, this shouldn't happen. can you run pkg -vv and paste everything below "REPOSITORIES {" ?
 
Last edited by a moderator:
One package can remove hundreds or even thousands of ports.
A ports-suicide tool!

I don't know how you imagine. Compile three hours a day or a whole day in the week, this will not work. This is not makeable if each update 60 or more package will removed.
What should I do, install the packages one for one. If it is move on in this tempo I am ready, when 11.0 is released.
Then I have a reason to install new. Synth only for someone who installs new (but never switch to it).
Not I have to find which package(s) is/are wrong, the system should tell me.
 
Last edited by a moderator:
talsamon: I am having a hard time understanding you, but it seems to me that you don't know how builders work. The port clusters do the same thing. Extreme example: Perl 5 is version is changed. Everything that directly uses lang/perl5 is removed, everything that uses the removed packages are removed, and that's recursive. Thus one change can removed thousands of files. Poudriere does the same thing.

As for "telling you", it does tell you. It tells you which files are removed and the general reason for the removal (e.g. dependency check failure).
 
Now I have compiled two of the packages as test. Answer of synth it removes 10 further packages.

Edit: I can set it back all to standard-option - but this is not the sense of the port-system.

Serious: Can you tell me a trick to find circular depencies ?. I think it is something like that.
I think there are two: one in the audio/multimedia/ffmpeg/gstreamer complex and one in docbook/texmf/and_so_on.
 
No, you don't need to change the options, but we do need to know WHICH PORTS.
Also, don't forget that your machine is not reliable, so we don't know if it's is a hardware problem or not. It is possible.
 
Here it is:
Code:
These are the ports that would be built:
  => textproc/docbook-utils
  => multimedia/ffmpeg
  => graphics/graphviz
  => print/ghostscript9-x11
  => graphics/ImageMagick
  => graphics/gegl
  => multimedia/gstreamer1-libav
  => graphics/gimp-app
  => graphics/opencv
  => graphics/zbar
  => audio/alsa-plugins
  => audio/chromaprint
  => graphics/gstreamer1-plugins-opencv
  => graphics/gstreamer1-plugins-zbar
  => audio/gstreamer1-plugins-chromaprint
  => print/cups-pstoraster
  => www/youtube_dl
  => graphics/openimageio
  => print/gimp-gutenprint
  => print/gutenprint-cups
  => multimedia/gstreamer1-plugins-all
  => www/libxul
  => graphics/openshadinglanguage
  => graphics/py-gimp
  => audio/cmus
  => print/gutenprint
  => multimedia/mpv
  => multimedia/phonon-gstreamer
  => multimedia/vlc
  => deskutils/gucharmap
  => net/py-pyzmq
  => www/firefox
  => www/xombrero
  => graphics/blender
  => graphics/cuneiform
  => graphics/gimp
  => graphics/ocre
  => graphics/xournal
  => lang/ghc
  => sysutils/ck4up
  => sysutils/coreutils
  => sysutils/duplicity
  => misc/qt4-qtconfig
  => dns/dnstracer
  => java/icedtea-web
  => mail/thunderbird
  => multimedia/gtk-youtube-viewer
  => multimedia/mencoder
  => ports-mgmt/genplist
  => x11-fm/rodent
  => x11-wm/fvwm-crystal
Total packages that would be built: 51
 
You don't understand what I'm asking.

Theory: There is 1 package that get's rebuilt over and over and over, even though it should be current.
TASK: Find that one (1) port that creates the package.

Not give a list of 51 ports. How does that help?
 
I assume you are using "# synth upgrade-system" (rather than a file list of ports)
So lang/ghc is on the list because you have it installed. It gets the list of ports from what you've installed on the system, remember?

And yes, you can do more.

Here's how:

# synth just-build A B C D E (where A,B,C,D,E are port origins)
then
# synth just-build A B C D E again
if 1 or more of them are removed and then build again, it's bad.

You could do that ten times for that list of 51.
 
I don't know. It's out of scope. Synth uses read-only null mounts. It could not overwrite your port Makefile even it wanted to.
 
Back
Top