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

synth doesn't use that directory. launch synth configure if you don't know where the packages directory is.

I can reproduce this kldloaded error. I think it's a chicken-egg issue with ports variables (it's not really what the issue is)
Sorry, John. I know you're "buried" right now.
But just for the record; synth *does* use that directory because I *told* it to when I first fired up synth. I used synth configure. I knew to do this *first*, because I read this thread, and all the informative information you thoughtfully provided on your GitHub site. :)

Thank you.

--Chris

I'll shut up now. :)
 
I've pushed version 0.99 which should fix the linux issue:

Code:
ports-mgmt/synth: v0.99 (RC), fixes / use official pkgs feature

Now Synth has all the features envisioned for the first release.  This
edition add an option (off by default) to fetch prebuilt packages if
they are suitable (ABI, options, dependencies match).  This feature is
aimed at people that only want to build ports with customized options,
but for ports with default configurations, they are happy to use the
official packages.  The feature is not heavily tested yet.

Once this version is sufficently tested, Release 1.00 will follow.

Other changes since 0.98_5:
  * curses will redrawn itself (correctly now) every 30 seconds to
    fix any corruption that may have occured
  * Synth everything will build the repository without deleting packages
    now (this was disabled on the last update)
  * The repos directory for pkg is read from pkg config instead of using
    the hardcoded defaults
  * The man page has been updated with new feature descriptions
  * linprocfs is mounted for linux_base ports
  * The regression that prevented linux ports from building has been
    fixed.  It was caused by caching LINUX_OSVERSION, so this variable is
    no longer cached.
 
Seems the explanation for my problem is/was:
I tried to make the packages in parts , and this seems not to work. You have do it at once. In the moment it looks this works, I will report later if it is solved.
Thanks for patience and the update.
 
On my system synth(1) works not bad and I am satisfied much much more than with portmaster(8).
I have some skipped ports and libc++ has still problem with dependencies check.
Skipped log:
Code:
x11/gnome-shell by math/openblas
x11/gnome-shell-extensions by math/openblas
x11/gnome-terminal by math/openblas
graphics/mypaint by math/openblas
devel/py-pyopencl by math/openblas
deskutils/gnome-shell-extension-audio-output-switcher by math/openblas
deskutils/gnome-shell-extension-calculator by math/openblas
deskutils/gnome-shell-extension-coverflow by math/openblas
deskutils/gnome-shell-extension-dashtodock by math/openblas
deskutils/gnome-shell-extension-filesmenu by math/openblas
deskutils/gnome-shell-extension-hidetopbar by math/openblas
deskutils/gnome-shell-extension-lockkeys by math/openblas
math/py-matplotlib by math/openblas
deskutils/gnome-shell-extension-mediaplayer by math/openblas
deskutils/gnome-shell-extension-openweather by math/openblas
math/suitesparse by math/openblas
deskutils/gnome-shell-extension-overlay-icons by math/openblas
deskutils/gnome-shell-extension-panel-osd by math/openblas
deskutils/gnome-shell-extension-trash by math/openblas
math/py-numpy by math/openblas
deskutils/gnome-shell-extension-weather by math/openblas
deskutils/gnome-shell-extra-extensions by math/openblas
math/octave by math/openblas
graphics/gimp by math/openblas
graphics/gimp-ez-perspective-plugin by math/openblas
textproc/ibus by math/openblas
sysutils/gnome-control-center by math/openblas
graphics/py-gimp by math/openblas
devel/py-notify by math/openblas
x11/gdm by math/openblas
x11-toolkits/py-gtk2 by math/openblas
multimedia/totem by math/openblas
sysutils/gnome-settings-daemon by math/openblas
graphics/gimp-resynthesizer by math/openblas
graphics/gimp-refocus-plugin by math/atlas

Thank you.
 
On my system synth(1) works not bad and I am satisfied much much more than with portmaster(8).
I have some skipped ports and libc++ has still problem with dependencies check.

1) libc++ is a problem with the PORT. Until the port is fixed, it's going to keep rebuilding. It's been reported.

2) if everything is skipping because of math/openblas, that means math/openblas failed to build. What you would do is inspect the openblas log and find out why. Synth is working normally. that's what is supposed to happen.
 
No, does not work ....
You will have to do a much better job at communicating what issues you are having. Saying "it doesn't work" or mysterious comments like "I was building in parts" is not at all useful. We have no idea what you are doing, or what is failing.

e.g. are packages rebuilding again on a new run? If so, WHICH package EXACTLY?
Try turning off ncurses mode and seeing the text. It might say which packages are being removed and the general reason of it.

The only reason for packages to get removed is if a dependency is removed so you need to figure out exactly which one it causing it. (This is a guess because you have been extremely vague about what the problem actually is)
 
So am I right in thinking that in the latest version (0.99) synth will fetch prebuilt packages if I have not deviated from the defaults? But if I have changed some of the defaults it will download the source and do a compile? In other words I can save lots of time by compiling only the ports that I have changed the defaults on? Is that correct?
 
So am I right in thinking that in the latest version (0.99) synth will fetch prebuilt packages if I have not deviated from the defaults?
PacketMan, yes, you understand the situation exactly right.
However, you have to set option "[N]" on synth configure to "true" to enable the feature.

Twice I've hit a message where it says it failed to download something and stopped before the build, but it both cases the error message was false and running the command again completed the task. (FYI, this feature is brand new thus it's not tested very much)
 
So am I right in thinking that in the latest version (0.99) synth will fetch prebuilt packages if I have not deviated from the defaults?

Let me expand on this. It's not only the defaults that it's checking. It's checking ABI (this is almost always good though) and the dependencies that the remote package wants. It could be that a dependency has changed thus invalidating the remote package. so really the two main reasons for building from source are different / mismatching options or a failure cascade from a dependency.
 
Sold!! My single biggest beef with using ports and portmaster was the recompiling of every port every time there were updates to be done. I will start to test this in my environment and report what I find.

PacketMan, yes, you understand the situation exactly right.
However, you have to set option "[N]" on synth configure to "true" to enable the feature.

Understood......stay tuned/
 
Sold!! My single biggest beef with using ports and portmaster was the recompiling of every port every time there were updates to be done. I will start to test this in my environment and report what I find.



Understood......stay tuned/

Note that synth is not really different to anything else there in this regard, if an important and widely used port has a new version there is absolutely no way to avoid rebuilding everything that depends on that port directly or indirectly. There was lot of discussion about that with Poudriere and initially Poudriere tried to avoid rebuilding everything but that resulted in broken builds because of subtle changes at binary level that can not be detected automatically.
 
emulators/linux_base-c6 does not build for me with version 0.98_5 as expected. (Just tried)

Not to break up a good conversation, but is the feature for using official packages when possible going to be optional? I assume so, but would just like to know for sure. If that's been mentioned already I missed it.
protocelt -- this is interesting to me. It was thought that this package was simply fetched from the official ports repo, when I declared that synth built it, and the nvidia-driver for me. But I just checked, and this is what pkg(8) told me:
Code:
linux_base-c6-6.6_6
Name  : linux_base-c6
Version  : 6.6_6
Installed on  : Mon Jan 25 14:13:34 2016 PST
Origin  : emulators/linux_base-c6
Architecture  : freebsd:11:x86:64
Prefix  : /compat/linux
Categories  : linux emulators
Licenses  :
Maintainer  : emulation@FreeBSD.org
WWW  : UNKNOWN
Comment  : Base set of packages needed in Linux mode for i386/amd64 (Linux CentOS 6)
Annotations  :
   repo_type  : binary
   repository  : Synth
Flat size  : 170MiB
Note the "repository", it says "Synth".
I say "interesting", because I wonder what would/might allow it to be built on one system, but not another?

--Chris
 
So it looks like the lang/gcc6-aux is spitting out some assembler errors for missing instructions. This is above my pay grade so I may need to file a PR against the port. This of course prevents synth(1) from being upgraded as well.

For reference: lang___gcc6-aux.log
Well, protocelt , looks like you're also tracking -CURRENT. I'm on r294112 (kernel), checked out on 2016-01-15, and on PORTS revision 406193. My lang/gcc6-aux is version is 20151227, which is the same as yours. We've used the same OPTIONS. Mine built && installed fine. SYNTH build a package for it. If you're even remotely interested, I can provide a link to it, and you can download it to your repo, and install it from there, if you wish. :) I can also provide the SYNTH log for it.

All the best, protocelt!

--Chris
 
protocelt -- this is interesting to me. It was thought that this package was simply fetched from the official ports repo, when I declared that synth built it, and the nvidia-driver for me. But I just checked, and this is what pkg(8) told me:
Note the "repository", it says "Synth".
I say "interesting", because I wonder what would/might allow it to be built on one system, but not another?

There's no mystery.
1) Synth needs a package and prebuilt option is active
2) Synth queries remote repository and finds a suitable package
3) Synth tells pkg(8) to download the package and stick it in Synth's package directory
4) Synth rebuilds local repository
5) The Synth repository shows the downloaded package and it now owns it.

if/when the system is updated, both the external repo and synth repo have the package, but it will get installed from the synth repo which has higher priority.
 
What system?
I have the log he linked to in one of the tabs in my browser. It says:
Code:
Platform: 11.0-CURRENT FreeBSD 11.0-CURRENT #0 r294762: Mon Jan 25 23:57:45 CST 2016     root@ZION:/usr/obj/usr/src/sys/GENERIC-NODEBUG  amd64
You weren't able to reach that link?

--Chris
 
Back
Top