jhbuild on FreeBSD

This is being used as a scratch space for people working on getting jhbuild running on FreeBSD.

These instructions assume an install of FreeBSD 11.2.

Working so far

This is what currently works (± caveats below):

...almost everything now.


Expect build problems with: gdm, accountsservice.

Jhbuild tinderbox

We have a couple of tinderboxes starting to get set up:

Packages to install

Install the following packages via pkg.

pkg install alsa-lib argyllcms automake avahi-app bash bash-completion bison cairomm caribou cmake cracklib cups cyrus-sasl db5 dbus dbus-glib desktop-file-utils docbook-xsl docbook-utils e2fsprogs-libuuid enchant exempi fusefs-libs gettext git gmake gmime26 gnutls graphviz hyphen icon-naming-utils icu intltool iso-codes itstool ja-anthy jpeg-turbo json-c ko-libhangul krb5 kyotocabinet lcms2 libGLU libXcomposite libXft libXtst libarchive libbluray libcanberra libcanberra-gtk3 libcdio-paranoia libdmapsharing libdvdread libexif libgphoto2 libical libimobiledevice libmtp libmusicbrainz5 libnfs liboauth libplist libproxy libpsl libpwquality libraw libsndfile libtasn1 libtool libunistring libv4l libvpx libxkbcommon libxkbfile libxklavier libxslt llvm50 mesa-libs meson mpc mpfr neon nettle nss openldap-client opus p5-Text-CSV pcre2 pixman pkgconf png polkit poppler-glib pulseaudio python py27-cairo py27-gobject3 py27-libxml2 py27-rdflib py36-cairo py36-gobject3 sassc speech-dispatcher ragel raptor2 ruby rust samba46 shared-mime-info source-highlight speex sqlite3 startup-notification taglib texinfo tiff vala valgrind wavpack webp wget xauth xkeyboard-config xorg xorg-macros xtrans yajl yasm ytnef

Drop gcc and g++ symlinks if you have the gcc package installed.

rm /usr/local/bin/gcc
rm /usr/local/bin/g++


os.environ['MAKE']='gmake LIBTOOL=/usr/local/bin/libtool'

dvcs_mirror_dir = '~/.cache/git'

# .pc files from FreeBSD base system is missing
skip = ['openssl']

# -Werror
module_autogenargs['easytag'] = '--disable-Werror'
module_autogenargs['gnome-photos'] = '--disable-Werror'
module_autogenargs['gupnp-av'] = '--disable-Werror'
module_autogenargs['libgdata'] = '--disable-always-build-tests'
module_autogenargs['rhythmbox'] = '--disable-more-warnings'
module_autogenargs['yelp'] = '--disable-Werror'

# Unintentional upstream Linux/GNUisms
module_autogenargs['cheese'] = '--disable-lcov'
module_autogenargs['gjs'] = '--disable-coverage'
module_autogenargs['gst-plugins-bad'] = '--disable-qt'
module_autogenargs['pulseaudio'] = '--disable-xen'

# configure script contains bashisms
module_extra_env['aisleriot'] = {'CONFIG_SHELL': '/usr/local/bin/bash'}
module_extra_env['dleyna-connector-dbus'] = {'CONFIG_SHELL': '/usr/local/bin/bash'}
module_extra_env['dleyna-renderer'] = {'CONFIG_SHELL': '/usr/local/bin/bash'}

# format string
module_extra_env['anjuta'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['brasero'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['cheese'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['clutter'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['epiphany'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['evince'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['ghex'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['gitg'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['gnumeric'] = {'CFLAGS': '-Wno-error=format-nonliteral'} 
module_extra_env['goffice'] = {'CFLAGS': '-Wno-error=format-nonliteral'} 
module_extra_env['mutter'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['nautilus-sendto'] = {'CFLAGS': '-Wno-error=format-nonliteral'} 
module_extra_env['totem'] = {'CFLAGS': '-Wno-error=format-nonliteral'}
module_extra_env['vinagre'] = {'CFLAGS': '-Wno-error=format-nonliteral'}

Outstanding FreeBSD issues

These are the current high-priority pain points on the FreeBSD side:

  • FreeBSD's libtool set RPATH or RUNPATH on wrong things
    • libraries built by jhbuild may find wrong dependencies at runtime
    • undefined reference problem may occur
  • FreeBSD does not install some .pc files in the base system
  • we need to have a working systemd-logind implementation
    • the last version of gdm supporting consolekit is 3.17.2
  • we need to solve the udev issue as well -- but GLib may soon grow an abstraction for this
    • long term, this will be solved by adding an abstraction to GLib (desrt)
  • we need a better solution for hwdb lookup -- colord builds, but isn't functioning correctly
    • udev upstream thinks that colord's usage of hwdb is incorrect
    • colord upstream says it has to do with some weird requirement of the X server
    • maybe fixed with new udev API... (see above)
  • there is no way to do reverse-file lookup for uninstalled packages via 'pkg'. This is required for jhbuild sysdeps --install.
  • someone needs to port NetworkManager to FreeBSD

  • someone needs to port bluez to FreeBSD
  • FreeBSD's libgeom has some symbols in the g_ namespace -- including g_close(), which directly conflicts with GLib

    • 2014-02-05: desrt sent email about this to pjd@, waiting for reply
  • /usr/bin/krb5-config comes in PATH before /usr/local/bin/krb5-config, but the one from /usr/local is required for gnome-control-center.
  • we need python3 support enabled in the speech-dispatcher package
  • FreeBSD's signal.h doesn't define ucontext_t and mcontext_t
  • libbluray built by portmaster is broken

Outstanding GNOME/freedesktop issues

There are some things that are going to go wrong during the build. The links below have patches or suggested workarounds.

Important "hard to fix" issues

There are some issues in core components that cannot be easily fixed. Workarounds are used to keep jhbuild working.

Low priority "nice to fix" issues

Solved GNOME/freedesktop issues

Solved FreeBSD issues

Invalid issues

Rejected upstream

Projects/Jhbuild/FreeBSD (last edited 2019-03-19 16:33:37 by TingweiLan)