OS-8098: Update platform build to use 2019.4 images


Issue Type:Bug
Priority:4 - Normal
Created at:2020-01-31T13:52:49.100Z
Updated at:2022-05-16T18:56:41.121Z


Created by:Former user
Reported by:Former user
Assigned to:Jonathan Perkin


Pkgsrc 2019Q4 is now available, and is the current LTS release. We should update the SmartOS build zone to this image in order to stay current.

Of note, jperkin delivered a 'smartos-tools' package as part of 2019Q4, so we should start using that instead of the i386 hand-rolled dmake, astmsgtools, rpcgen, sgstools that we're installing by hand (since installing these can result in alarming pkgsrc errors since the architecture doesn't match the default x86_64)

The fix here involves

Since pkgsrc 2019Q4 involves a new min_platform ( 20161222T003256Z), it's probably easiest if we bump the min_platform for builds to the same version proposed for Triton via TRITON-2043 at the same time, which is 20181206T011455Z - see that ticket for more of the gory details. This would mean the closest SmartOS release is 20181206T012147Z,


For reference, the platform build last switched its build image to 2018Q4 x86_64 via OS-7785 and friends.


Comment by Former user
Created at 2020-02-03T18:19:28.234Z

Additional fixes are needed as part of this change for a few illumos-extra components

  1. node.js requires Python 2.x in its path as 'python' since its build include python tooling that fails to run on Python 3.x (the default 'python' in pkgsrc 2019Q4)
  2. there seems to be a behavioural difference in /opt/local/bin/pkg-config between pkgconf-1.4.1nb1 in 2018Q4 and pkgconf-1.6.0 in 2019Q4. Specifically, configure scripts in curl and wget both now attempt to use pkg-config, resulting in /opt/local/lib being added as -L options to the linker, which breaks the build (usually because we're compiling 32-bit software, but /opt/local/lib contains 64-bit libraries) SmartOS system libraries should instead always be using proto-area libraries, and should never be linking to /opt/local.

The workarounds we're experimenting with for these issues are:

  1. drop a python -> /opt/local/bin/python2.7 symlink into the node.js build directory, and modify the Makefile to ensure that gets added at the top of the $PATH used for running Node's configure script.
  2. set $PKG_CONFIG (and, confusingly) $PKGCONFIG to '/dev/null', preventing the use of /opt/local/bin/pkg-config by the wget and curl configure scripts

Comment by Former user
Created at 2020-03-20T09:59:19.761Z
Updated at 2020-03-20T09:59:27.182Z

Branches containing the work so far are at:

Comment by Former user
Created at 2020-05-29T13:53:38.747Z

Re PKG_CONFIG, illumos-extra already tries to avoid this:

# pkg-config may be installed. This will actually only hurt us rather than help
# us. pkg-config is based as a part of the pkgsrc packages and will pull in
# versions of libraries that we have in /opt/local rather than using the ones in
# /usr that we want. PKG_CONFIG_LIBDIR controls the actual path. This
# environment variable nulls out the search path. Other vars just control what
# gets appended.
$(DESTDIR)/usr/gnu/bin/gas: FRC
        (cd binutils && \
            PKG_CONFIG_LIBDIR="" \
            STRAP=$(STRAP) \
            $(MAKE) DESTDIR=$(DESTDIR) install)

Presumably that's no longer sufficient