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 12.1.

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


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['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['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
  • 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

Obsolete issues

Rejected upstream

Projects/Jhbuild/FreeBSD (last edited 2020-05-16 17:17:59 by TingweiLan)