This set of ports enables the use of the Gnome GUI from Guile scripts. The real work is in the guile-gnome-platform one, the other two are just dependencies.
Details
Tested for build + successful run of nontrivial example programs on:
FreeBSD 11-stable, amd64 FreeBSD 12-stable, amd64, armv7, i386
(I have no other platforms available)
portlint - passes.
poudriere testport - passes
port options were all tested individually and in significant combinations, but not all combinations tested
install packages and run example program - passes
Diff Detail
- Repository
- rP FreeBSD ports repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Ugh, build does break for some option combinations due to hidden dependency on gettext-tools (for aclocal/lib-link.m4). Will post new patch after next round of tests.
Add build dependency on gettext-tools, to get some stuff (gnulib's lib-link.m4) that actually has nothing to do with gettext :-(
Fix unneeded dependency on guile-cairo when CAIRO option is off.
Reorg some variables a bit.
I just noticed that the diff here had been replaced by the one from the first commit, so I'm re-uploading the diff of just the uncommitted part for ease of further review.
Is it possible to have the flavors not conflict with each other? Like, the full flavor only install the bits that are enabled by the options.
Also, could you please run the port through portclippy, or read the chapter on how a Makefile should be ordered, everything is mixed and it is very hard to follow.
x11-toolkits/guile-gnome-platform/Makefile | ||
---|---|---|
16 ↗ | (On Diff #70925) | USES=gettext-tools |
48–50 ↗ | (On Diff #70925) | You should not be mixing options and flavors. You should enable/didsable the "things" that you need for each flavor using .if ${FLAVOR} == xxx blocks. If you really really mean to be mixing them, you should use OPTIONS_SLAVE to enable the three options when the flavor is full. |
138 ↗ | (On Diff #70925) | Extra \ at the end here. |
Not trivially - I hadn't actually considered trying to make it two separate ports before, but comparing the generated code for some of the modules common to both builds, there are in fact differences (I don't know why, or whether they are significant, and finding out would not be easy).
New patch in progress to address some of the other issues.
With regard to portclippy, I do not understand the logic of its suggestion to prefix variables with '_'. It seems to me that this is more likely to cause conflicts with the framework, which uses variables with _ prefixes internally all over the place.
x11-toolkits/guile-gnome-platform/Makefile | ||
---|---|---|
48–50 ↗ | (On Diff #70925) | I'd intended it to work along the lines of a normal "lite" slave port, where using OPTIONS_EXCLUDE to exclude the heavy options is the normal approach. But on further examination, the problem with this is that slave ports get their own OPTIONS_FILE while flavors don't, which seems to me to be a rather important difference that maybe should be noted in the handbook (or indeed fixed?). |
accept wrt flavors.
guile-gnome-platform/Makefile | ||
---|---|---|
49 ↗ | (On Diff #74102) | You don't need :Ulite here, FLAVOR is always defined. |
I've added the following post-patch target locally to address the build breakage on -CURRENT that I mentioned, let me know if you'd prefer to do it otherwise -- I think sed'ing it is OK if it's not worth upstreaming the expression change. I've test-built on -CURRENT/amd64 and 12.1/i386, with 11.3/amd64 in progress:
post-patch: @${REINPLACE_CMD} -e '/grep/s,\^ {|,^ \\{|,' ${WRKSRC}/gconf/gnome/gw/Makefile.in \ ${WRKSRC}/gconf/gnome/overrides/Makefile.in \ ${WRKSRC}/gconf/gnome/Makefile.in \ ${WRKSRC}/libgnome/gnome/gw/Makefile.in \ ${WRKSRC}/libgnome/gnome/Makefile.in \ ${WRKSRC}/libgnome/gnome/overrides/Makefile.in \ ${WRKSRC}/defs/gnome/defs/Makefile.in \ ${WRKSRC}/defs/Makefile.in \ ${WRKSRC}/gtk/Makefile.in \ ${WRKSRC}/gtk/gnome/gw/Makefile.in \ ${WRKSRC}/gtk/gnome/gtk/Makefile.in \ ${WRKSRC}/gtk/gnome/overrides/Makefile.in \ ${WRKSRC}/gtk/gnome/contrib/Makefile.in \ ${WRKSRC}/gtk/gnome/Makefile.in \ ${WRKSRC}/libgnomeui/Makefile.in \ ${WRKSRC}/libgnomeui/gnome/overrides/Makefile.in \ ${WRKSRC}/libgnomeui/gnome/gw/Makefile.in \ ${WRKSRC}/libgnomeui/gnome/Makefile.in \ ${WRKSRC}/libgnomecanvas/gnome/gw/Makefile.in \ ${WRKSRC}/libgnomecanvas/gnome/Makefile.in \ ${WRKSRC}/libgnomecanvas/gnome/overrides/Makefile.in \ ${WRKSRC}/libglade/gnome/overrides/Makefile.in \ ${WRKSRC}/libglade/gnome/gw/Makefile.in \ ${WRKSRC}/libglade/gnome/Makefile.in \ ${WRKSRC}/pango/gnome/Makefile.in \ ${WRKSRC}/pango/gnome/overrides/Makefile.in \ ${WRKSRC}/pango/gnome/gw/Makefile.in \ ${WRKSRC}/glib/gnome/Makefile.in \ ${WRKSRC}/glib/gnome/gobject/Makefile.in \ ${WRKSRC}/glib/gnome/overrides/Makefile.in \ ${WRKSRC}/glib/gnome/gw/Makefile.in \ ${WRKSRC}/glib/gnome/gw/support/Makefile.in \ ${WRKSRC}/glib/Makefile.in \ ${WRKSRC}/glib/bin/Makefile.in \ ${WRKSRC}/glib/test-suite/Makefile.in \ ${WRKSRC}/common.mk \ ${WRKSRC}/cairo/gnome/gw/Makefile.in \ ${WRKSRC}/cairo/gnome/Makefile.in \ ${WRKSRC}/atk/gnome/overrides/Makefile.in \ ${WRKSRC}/atk/gnome/gw/Makefile.in \ ${WRKSRC}/atk/gnome/Makefile.in