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

it's a problem with the port. The tree should not be considered infallible.

ld.gold is the gold linker. The gold linker is not installed in FreeBSD base, which means it would have to come from an installed devel/binutils.

For one, I question why fuse-ld.gold is even being invoked. If the port only exclusively builds with the gold linker, then x11/qt5-x11extras is missing a dependency. If it doesn't, then qt5-x11extras is misconfiguring itself. Either way, it's a problem with the port.
 
Clean install of 10.3. When preparing the system with Synth got the following error while building x11/qt5-x11extras:

Code:
c++ -Wl,--as-needed -fstack-protector -fuse-ld=gold -Wl,--enable-new-dtags -pthread -Wl,-rpath,/usr/local/lib -shared -Wl,-Bsymbolic-functions -Wl,-soname,libQt5X11Extras.so.5 -o libQt5X11Extras.so.5.5.1 .obj/qx11info_x11.o  -L/construction/xports/x11/qt5-x11extras/work/qtx11extras-opensource-src-5.5.1/lib -L/usr/local/lib -lQt5Gui -lQt5Core -lGL
c++: error: invalid linker name in argument '-fuse-ld=gold'
*** [../../lib/libQt5X11Extras.so.5.5.1] Error code 1

make[3]: stopped in /construction/xports/x11/qt5-x11extras/work/qtx11extras-opensource-src-5.5.1/src/x11extras
1 error

make[3]: stopped in /construction/xports/x11/qt5-x11extras/work/qtx11extras-opensource-src-5.5.1/src/x11extras
*** [sub-x11extras-all] Error code 2

make[2]: stopped in /construction/xports/x11/qt5-x11extras/work/qtx11extras-opensource-src-5.5.1/src
1 error

make[2]: stopped in /construction/xports/x11/qt5-x11extras/work/qtx11extras-opensource-src-5.5.1/src
*** [sub-src-all] Error code 2

make[1]: stopped in /construction/xports/x11/qt5-x11extras/work/qtx11extras-opensource-src-5.5.1
1 error

make[1]: stopped in /construction/xports/x11/qt5-x11extras/work/qtx11extras-opensource-src-5.5.1
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure to
the maintainer.
*** Error code 1

Stop.
make: stopped in /xports/x11/qt5-x11extras

It looks that ld.gold is missing. Should I file PR?

I just run synth upgrade-system a 2nd time and that fixed it. I see that every now and then when something fails in synth and a 2nd run of synth it runs through with green lights all the way. For this particular case I can't remember if I ran portsnap fetch update a 2nd time a day later or not. I don't think I did though.
 
I ran synth prepare-system one more time, second time qt5-x11extras was successfully fetched instead of built, probably because its official package was updated:

Code:
root@bclinton:~# synth prepare-system
Querying system about current package installations.
Stand by, comparing installed packages against the ports tree.
Stand by, updating external repository catalogs ... done.
Scanning existing packages.
vlc-2.2.1_8,4.txz VDPAU is OFF but port says it must be ON
The following packages will be fetched:

New packages to be FETCHED:
   qt5-x11extras-5.5.1 (0.04% of 37 MiB: 17 KiB)
   nvidia-driver-346.96 (99.96% of 37 MiB: 37 MiB)

The process will require 37 MiB more space.
37 MiB to be downloaded.
Fetching qt5-x11extras-5.5.1.txz: 100%  17 KiB  17.3kB/s  00:01  
Fetching nvidia-driver-346.96.txz: 100%  37 MiB  4.3MB/s  00:09  
00:00:33 => [01] Builder launched
00:00:33 => [02] Builder launched
00:00:33 => [02]  Shutting down
00:02:30 => [01] 00:01:57 Success multimedia/vlc
00:02:31 => [01]  Shutting down



The task is complete.  Final tally:
Initial queue size: 1
  packages built: 1
  ignored: 0
  skipped: 0
  failed: 0

Duration: 00:02:30
The build logs can be found at: /var/log/synth
Stand by, prescanning existing packages.
Stand by, recursively scanning 864 ports serially.
Scanning existing packages.
No packages are required to be fetched.
Integrity check was successful.
Packages validated, rebuilding local repository.
Local repository successfully rebuilt

I did not update ports tree between first and second runs.
 
What I'm finding a bit disturbing (while freely admitting I may be overlooking something that everyone but me knows) is that even when I ran synth status graphics/ImageMagick it didn't indicate that it was going to remove the chrome browser. As I knew the build would take awhile, I didn't supervise it after that, only to find the results printed--that it had installed this, upgraded that, and removed something else. I think, (I've seen other mention of this, but again, don't know their circumstances, and am open to the fact that they and myself have missed something), that it would be preferable to do something like portmaster does, that unless there is a -y flag (or similar), show what it will do before hitting yes or no.

(I am ALMOST sure that synth status didn't show it was going to remove chrome, but not completely sure.)
 
are you using synth upgrade-system? if so, until you are comfortable, only use synth prepare-system.
People tend to blame Synth for things that pkg(8) does.
It is also important to note *when* chromium was removed. It might have been removed during the repository build. In theory, it should be shown during "status" when that happens.
 
In this case, I just did synth install graphics/ImageMagick (which was not previously installed.) Before doing so I ran the synth status command mentioned before. Using pkg would also first say, going to install this, remove that before proceeding. I might be misunderstanding, but I thought the status option should show me that will remove something. I'm sorry I didn't note when it was removed. I started the command in another workspace then ignored it till later. (Again, I'm not positive that the status option didn't warn me. :)
 
synth status graphics/ImageMagick or synth status?

status shows what synth will remove and rebuild. The synth install graphics/ImageMagick command will first build everything (and rebuild anything) and that should match what the status command said would happen. Then, the *entire* set of packages will be scanned and validated before rebuilding the repository. It's here that packages can be removed, but these should be packages that were NOT on the status list before.

If you rebuild everything, then you shouldn't see any removals, but it can happen if the port makefile has misleading dependency information. (rare but it happens).

But yes, I can see it removing the unrelated chromium package with an install command during repository building. It's because chromium needs rebuilding. It's not really a problem because chromium is still installed in your system (I assume).
 
If you encounter such strange removal requests from pkg you should first run # pkg update -f to see if that clears it.
 
Reading these last few posts has made me think, I've always thought it would be nice if there was a switch or environment variable that I could set which would make synth upgrade-system behave as if I had run synth prepare-system && pkg upgrade -r Synth where pkg displays what it is going to actually do and then prompts you to answer y or n depending on if you like what you see. I assume synth just passes -y to the pkg upgrade command. Obviously if I want to do that I can use the second set of commands that I mentioned, but sometimes it's nice to just type less stuff! :)
 
To follow up: I upgraded my 10.1 amd64 system to 10.3-RELEASE.

Synth is working perfectly. No illegal instructions; everything looks nominal.

I played around with with synth force [already-installed-port] to have a look what works and what doesn't. Those are only a few examples.

For instance, everything went fine with textproc/docbook, www/owncloud, www/elinks, www/links, multimedia/gstreamer

"Illegal instructions" abortion happend with deskutils/owncloudclient, net-p2p/transmission, www/w3m, www/firefox, www/chromium, x11-wm/xfce4, editors/libreoffice,

With x11/xorg: all packages built, but did not went further, hung up(?), no requesting permission to rebuild the repository, but all packages built are available in .../live_packages/All

I wished, that thing just worked like it did before.
 
"Illegal instructions" abortion happend with deskutils/owncloudclient, net-p2p/transmission, www/w3m, www/firefox, www/chromium, x11-wm/xfce4, editors/libreoffice.
I wished, that thing just worked like it did before.

So far all evidence is pointing that this is something specific to your computer. Nobody else is reporting this. Wishing it "worked like it did before" implies there's a problem with Synth but I don't see what I can do if nobody else can reproduce it, including me.
 
marino@, no, it removed Chrome. From what you say though, I probably just missed seeing it in status, which seems the most likely scenario.

I don't think you understood me completely. I gave you 2 places where removal could have happened, and suggested it happened in the second place. Saying "it removed Chrome" doesn't tell me anything because you don't indicate if it happened as a result of building or if it happened as a result of reconstructed the repository (the far more likely case). I explained how synth install <single port> could do that, especially on the ports trunk branch. It's much less likely to occur on quarterly branches.

By the way, the quarterly branch is pretty close to the trunk now. I couldn't recommend Q1, but Q2 might be the best option for some people.
 
Sorry if I wasn't clear. I 'm just making guesses, as I didn't observe the build, just started it with the command to install, then only looked again once it was complete. Yes, you did explain and I made what was probably an incorrect assumption.
 
the other thing that is very unclear to me is what you mean by "removed chrome". I've been working under the idea you mean the chrome package in the synth repository was deleted (which is relatively normal). If you actually mean that pkg(8) uninstalled chrome without reinstalling it, that's a horse of a different color (and almost certainly a bug in pkg(8))
 
Reading these last few posts has made me think, I've always thought it would be nice if there was a switch or environment variable that I could set which would make synth upgrade-system behave as if I had run synth prepare-system && pkg upgrade -r Synth where pkg displays what it is going to actually do and then prompts you to answer y or n depending on if you like what you see.

The manual explicitly states that the intended purpose of synth upgrade-system (and synth install for that matter) is the exact opposite of what you want. And what you want obviously already exists. Pointless duplication is pointless.
 
This has been discussed in one of the threads, but not with relation to synth.

So here's my question: x11-toolkits/linux-c6-qt47-x11 can be built with nvidia libGL, but will insist on installing x11-drivers/nvidia-driver, and not nvidia-driver-304* or other legacy versions with linux compatibility support. Which is not the way to go on a system with "legacy" cards, evidently.

Reportedly, the manual edit of the x11-toolkits/linux-c6-qt47-x11's Makefile solves this -- for a manual build using portmaster, for example.
But will synth recognize such edited port without ignoring it, as seems to be its custom in some similar cases? Because this edit of Makefile is beyond what is available via configurable options.

I just have to build for a machine with a legacy nvidia card, so these few packages present a problem, because synth follows the Makefiles, which upgrades nvidia-driver to the latest version. Meaning no video after upgrade and manual recompile to get it back.
 
marino@ sorry to take so long to answer, especially when you're so quick to answer questions. Yes, I mean that after I ran the command synth install graphics/ImageMagick the www/chromium package was removed and not reinstalled.
 
free-and-bsd,
Synth can't detect if a port has been manually edited. It doesn't "ignore" ports because they've been edited. As long as your manual edit doesn't break the port, Synth will use the modified makefile.

In fact, this is one of the big features of synth: port testing.
If a specific port fails testing, the maintainer/tester modifies it until it passes and then commits/submits the fixes.
 
Last edited by a moderator:
free-and-bsd@,
Synth can't detect if a port has been manually edited. It doesn't "ignore" ports because they've been edited. As long as your manual edit doesn't break the port, Synth will use the modified makefile.

In fact, this is one of the big features of synth: port testing.
If a specific port fails testing, the maintainer/tester modifies it until it passes and then commits/submits the fixes.
Yes, thank you. I've noticed this by now and that's great. I just wasn't sure, because vermaden 's sysutils/automount is always ignored, I never knew why. Could it be because the port just consists of a script to be installed, so it doesn't need rebuilding?
 
Last edited by a moderator:
No need to guess why, just look at the 00* or 04* log, it will list the reasons for ignore. (or 03*, can't remember if the ignore log starts with 03_ or 04_)
 
No need to guess why, just look at the 00* or 04* log, it will list the reasons for ignore. (or 03*, can't remember if the ignore log starts with 03_ or 04_)
04_* is skipped ports, and it just says:
Code:
sysutils/automount by sysutils/fusefs-exfat
then 03_* says further:
Code:
00:00:42 sysutils/fusefs-exfat: License Microsoft-exFAT needs confirmation, but BATCH is defined
Now I wonder where I could define otherwise (non-BATCH)? Does it mean to run the port individually?
 
Just disable the licenses. I don't have a system open but it's something like DISABLE_LICENSES=yes in make.conf.
Alternatively you can accept specific licenses in make.conf.
See Mk/bsd.license* for more details.
 
Last edited by a moderator:
Back
Top