(In)Stability of the Quarterly Branch

Julian Elischer julian at freebsd.org
Fri Dec 16 10:08:59 UTC 2016

On 15/12/2016 9:43 PM, Torsten Zuehlsdorff wrote:
> On 15.12.2016 14:16, David Demelier wrote:
>> What I want: a ports tree that matches the FreeBSD version like
>> OpenBSD. You have FreeBSD 11.0? You get a ports tree for that version
>> specifically. No major update, no breaking changes. Just bug fixes.
>> That will also simplify a lot FreeBSD ports by not having thousands of
>> conditional checking the FreeBSD version.
> That what i really, really, really NOT want. I have regular problems 
> with our admins because of that. You want a specific version of an 
> software? No problem: just install a specific version of your 
> operation system. Need two of them, but they are not in this bundle? 
> To bad, than you need a new server. This is an daily-base scenario i 
> really don't want to port to FreeBSD.

   the problem I have is that on the one machine the UI people want 
node-x.y and the VM configuration people need boto-a.b, but boto-a.b 
and node-x.y don't exist at the same time in the ports tree and there 
is no snapshot of packages when they exist..  it's like saying "that 
dinosaur and this dinosaur never met because one was Jurassic and the 
other was Triassic. To make it worse the packages taken from different 
times insist on installing different versions of some other package, 
so I can't just take packages from different times (because they 
OVERSPECIFY their dependencies,, it may work but I don't get the 
chance because the install balks).

So I'm left with compiling..
If I use poudriere I need otmake a synthetic tree with different 
revisions, bus the API for the ports tree moves so fast that often you 
cant; even do that because one requires mk/uses/python.mumble and 
theother wants some incompatible other  change.

So the problems I see are
1/ over specification of dependencies, leading to artificial 
requirements to upgrade things.
2/ leaf dependencies having too many options, leading to exponential 
fan-out of dependencies.
3/ API changes too frequent, and not enough care taken thinking about 
what happens if one needs to get a back-rev version of something.
4/ ports not always noticing when a dependency package is installed 
and compiling the dependency anyhow.

here's an example;
'tracker' is a simple package.
but requires the following makefiles to be in sync API wise.

# Build dependencies
TRACKER_DEP_PORTS:= devel/desktop-file-utils devel/gettext-tools 
devel/gmake graphics/gtk-update-icon-cache
TRACKER_DEP_PORTS+= print/indexinfo textproc/intltool devel/gettext 
lang/perl5.20 lang/python27 graphics/poppler
TRACKER_DEP_PORTS+= devel/gobject-introspection textproc/libxslt 
devel/pkgconf multimedia/gstreamer1-plugins
TRACKER_DEP_PORTS+= devel/xdg-utils converters/o3read 
graphics/poppler-utils www/w3m
TRACKER_DEP_PORTS+= devel/desktop-file-utils 
graphics/gtk-update-icon-cache multimedia/gstreamer1-plugin
TRACKER_DEP_PORTS+= devel/dbus-glib mail/gmime26 sysutils/hal 
textproc/raptor sysutils/e2fsprogs
TRACKER_DEP_PORTS+= misc/e2fsprogs-libuuid devel/icu 
multimedia/libmediaart devel/librest
TRACKER_DEP_PORTS+= multimedia/totem-pl-parser audio/flac 
audio/libvorbis textproc/libcue
TRACKER_DEP_PORTS+= audio/libogg audio/taglib graphics/poppler-glib 
TRACKER_DEP_PORTS+= devel/libgsf textproc/exempi textproc/wv 
TRACKER_DEP_PORTS+= graphics/giflib graphics/png graphics/tiff 
TRACKER_DEP_PORTS+= accessibility/atk graphics/gdk-pixbuf2 
devel/glib20 x11-toolkits/gtk30
TRACKER_DEP_PORTS+= textproc/libxml2 x11-toolkits/pango 
archivers/libarchive databases/sqlite3
TRACKER_DEP_PORTS+= devel/libffi devel/pcre converters/libiconv 
graphics/cairo devel/bison
TRACKER_DEP_PORTS+= lang/python2 x11/libXext x11/libXrender x11/libX11 
TRACKER_DEP_PORTS+= x11/libXi x11/libXrandr x11/libXcursor 
x11/libXfixes x11/libXdamage
TRACKER_DEP_PORTS+= x11/libXcomposite x11-toolkits/libXt 
graphics/jasper graphics/jbigkit graphics/jpeg-turbo
TRACKER_DEP_PORTS+= x11-fonts/fontconfig x11-fonts/libXft 
print/freetype2 print/harfbuzz x11-fonts/xorg-fonts-truetype
TRACKER_DEP_PORTS+= x11-fonts/encodings misc/shared-mime-info 
misc/hicolor-icon-theme textproc/p5-XML-Parser security/libgcrypt
TRACKER_DEP_PORTS+= multimedia/gstreamer1 misc/iso-codes devel/orc 
devel/dbus multimedia/v4l_compat
TRACKER_DEP_PORTS+= sysutils/policykit devel/libvolume_id 
sysutils/consolekit misc/pciids sysutils/gnome_subr
TRACKER_DEP_PORTS+= sysutils/dmidecode ftp/curl textproc/gtk-doc 
lang/vala security/ca_root_nss
TRACKER_DEP_PORTS+= devel/libsoup-gnome multimedia/libquvi09 
textproc/expat2 devel/cmake graphics/lcms2
TRACKER_DEP_PORTS+= graphics/openjpeg15 graphics/poppler-data 
graphics/libwmf accessibility/at-spi2-atk graphics/libepoxy
TRACKER_DEP_PORTS+= graphics/colord print/cups 
x11-themes/adwaita-icon-theme textproc/xmlto x11/xprop
TRACKER_DEP_PORTS+= x11/xset devel/boehm-gc
TRACKER_DEP_PORTS+= misc/dejagnu x11/xcb-util-renderutil 
graphics/libGL graphics/libEGL x11/glproto
TRACKER_DEP_PORTS+= x11/dri2proto x11/pixman x11/renderproto 
devel/xorg-macros x11/bigreqsproto
TRACKER_DEP_PORTS+= x11/xcmiscproto x11/xextproto x11/xtrans 
x11/kbproto x11/inputproto
TRACKER_DEP_PORTS+= x11-fonts/xf86bigfontproto x11/libXau x11/libXdmcp 
x11/xproto x11/libxcb
TRACKER_DEP_PORTS+= devel/m4 x11/xineramaproto x11/fixesproto 
x11/randrproto x11/damageproto
TRACKER_DEP_PORTS+= x11/compositeproto x11/libSM devel/nasm 
graphics/graphite2 x11-fonts/font-bh-ttf
TRACKER_DEP_PORTS+= x11-fonts/font-misc-meltho 
x11-fonts/font-misc-ethiopic x11-fonts/mkfontscale x11-fonts/font-util 
TRACKER_DEP_PORTS+= security/libgpg-error shells/bash misc/getopt 
textproc/docbook-xsl print/libpaper
TRACKER_DEP_PORTS+= devel/libatomic_ops textproc/docbook-xml 
x11/libICE multimedia/libv4l
TRACKER_DEP_PORTS+= lang/expect lang/tcl86 devel/libcheck 
x11/xcb-proto devel/libpthread-stubs
TRACKER_DEP_PORTS+= x11/xcb-util devel/makedepend devel/libclc 
devel/llvm36 lang/gcc
TRACKER_DEP_PORTS+= devel/binutils x11/presentproto x11/libXxf86vm 
x11/libxshmfence graphics/libdrm
TRACKER_DEP_PORTS+= graphics/libglapi devel/libdevq graphics/gbm 
textproc/py-sphinx devel/jsoncpp
TRACKER_DEP_PORTS+= devel/cmake-modules x11-fonts/mkfontdir 
x11-fonts/bdftopcf x11-fonts/libfontenc textproc/xmlcatmgr
TRACKER_DEP_PORTS+= textproc/docbook textproc/xmlcharent 
textproc/docbook-sgml sysutils/polkit textproc/jade
TRACKER_DEP_PORTS+= textproc/itstool textproc/rarian devel/libsoup
TRACKER_DEP_PORTS+= devel/autoconf devel/automake lang/clang36 
devel/libedit devel/ninja
TRACKER_DEP_PORTS+= devel/py-Jinja2 textproc/py-docutils devel/py-six 
devel/py-setuptools27 devel/py-babel
TRACKER_DEP_PORTS+= textproc/py-pygments textproc/py-sphinx_rtd_theme 
textproc/py-alabaster textproc/py-snowballstemmer math/gmp
TRACKER_DEP_PORTS+= math/mpfr lang/gcc-ecj45 archivers/zip math/mpc 
TRACKER_DEP_PORTS+= devel/libpciaccess x11/libXvMC devel/scons 
x11-fonts/libXfont textproc/iso8879
TRACKER_DEP_PORTS+= textproc/sdocbook-xml lang/spidermonkey170 
textproc/py-libxml2 net/glib-networking multimedia/libquvi-scripts09
TRACKER_DEP_PORTS+= net/libproxy lang/lua52 accessibility/at-spi2-core 
devel/libtool graphics/libglesv2
TRACKER_DEP_PORTS+= graphics/argyllcms textproc/docbook-utils 
net/avahi-app security/gnutls x11-toolkits/libXmu
TRACKER_DEP_PORTS+= x11-fonts/libXfontcache misc/help2man 
devel/autoconf-wrapper devel/automake-wrapper devel/py-setuptools
TRACKER_DEP_PORTS+= devel/gmake-lite textproc/py-MarkupSafe 
devel/py-pytest devel/py-pytz textproc/py-pystemmer
TRACKER_DEP_PORTS+= x11/videoproto x11/libXv x11-fonts/fontsproto 
devel/nspr devel/gsettings-desktop-schemas

that's the fanout of makefiles that making 'tracker ' hits.
and if anything goes wrong in any of that.. it stops..
so making a 'blended' system is really hard.

yeah yeah  "don't do that"...  but it's not that simple in the real world.

> This is a good idea. But does not help everytime. Many rubygem based 
> ports build just fine, but fail afterwards.

> Greetings,
> Torsten
> _______________________________________________
> freebsd-ports at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to 
> "freebsd-ports-unsubscribe at freebsd.org"

More information about the freebsd-ports mailing list