I needed to find all instances where ports still depended on X11.

Causes could be either plain X11 ports (grep x11 in your poudriere package list) or ports that still depend on X11.

Those have to be adjusted using poudriere options -c -p portstree -j jailname

I've made fancy symlinks named mybuild-jailname-portstree to let the "serious" ports builds all have the same options, while I can nonetheless do builds with totally different options for my home systems. You'll see that in the first grep over mybuild-op* right below.

The other parts all filter the various "X11 is unset" options ports use.

People will be really quick to tell you that some are deprecated and you should use $new_shit to set this, but as you can gather from the list of filters: A lot of different things are used in the actual ports.

 

Using grep to find X11 options

The greps here are my attempt to find out what is really set:

 

# grep -Ri X11 mybuild-op* | \
  grep -v -e "WITHOUT_X11=true" -e "OPTIONS_FILE_UNSET+=X11" \
  -e _FILE_COMPLETE_OPTIONS_LIST -e "WITHOUT.*true" -e "OPTIONS_FILE_UNSET.*x11" -e nox11
grep: warning: mybuild-options/mybuild-options: recursive directory loop
mybuild-options/libX11/options:# Options for libX11-1.1.3_1,1
mybuild-options/libX11/options:_OPTIONS_READ=libX11-1.1.3_1,1
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11alpha
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11cmyk
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11cmyk2
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11cmyk4
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11cmyk8
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11gray2
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11gray4 
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11mono 
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11rg16x 
mybuild-options/print_ghostscript9/options:OPTIONS_FILE_SET+=GS_x11rg32x 

 

In this case I should review the options on the ghostscript port for 15th time and unset those that still refer x11 packages.

I'll also need to remove all X11/GUI related packages and then I should be fine, having around 1300 actually useful packages, none of them depending on X11.

 

Why?

Extremely small footprint, and hundreds less of included libaries. Accordingly, a system that can be updated more quickly and also safer.

The downside?

You can't run Firefox over SSH on those servers. I hope noone will complain about that.

 

 

Bug(s) you need to manually fix

 

One open bug (#193004) is in the imagemagick package. It's breaking all -nox11 builds - by a duplicate origin error for ghostscript and ghostscript-nox11.

Grab the patch via this link: diff for ImageMagick Makefile . I had to click the view button once to actually *see* it.

Alternatively, here is the a copy, might be outdated at some point...

diff --git graphics/ImageMagick/Makefile graphics/ImageMagick/Makefile
index 83f9f75..69ceb5c 100644
--- graphics/ImageMagick/Makefile
+++ graphics/ImageMagick/Makefile
@@ -363,6 +363,7 @@ CONFIGURE_ARGS+=	--without-x
 CONFLICTS+=		ImageMagick-6*
 PLIST_SUB+=		X11='@comment '
 PKGNAMESUFFIX=		-nox11
+WITHOUT_X11=		yes
 .else
 CONFLICTS+=		ImageMagick-nox11-6*
 CONFLICTS+=		display-[0-9]*

 

 

I left a comment it would be nice to find it fixed after 8 months.

They had been looking at a more generic solution. But while that is being sought the patch couldn't be applied and the bug still renders stuff unbuildable??