Building for Ubuntu 16.04 LTS in CI

I’ve re-read @Ellson’s post above and with my new insight, everything now makes much more sense to me. I think I’ve got confirmation that it’s currently not possible to do what I want and that we need to modify the Debian rules for building the packages for Ubuntu 16.04. I don’t think we need to do it from the .gitlab-ci.yml file though. It could be part of the normal build flow. If someone ever finds a way to install the missing packages on Ubuntu 16.04 and has problem with our rules, we can install the missing packages using the same method as them and then change the rules.

…we can install the missing packages…

Please don’t tell me that you are planning to add and support packages that are not currently in the ubuntu-16.04 distribution (or any other specific distribution, for that matter) ? I think that is the wrong solution and would only add unnecessary work.

If a ubuntu-16.04 user is missing some feature because of some unavailable package (ocaml? a recent php?) then the should distru-upgrade to a later Ubuntu release.

I’m not.

I’ve now crossed out that part of the text to avoid further confusion about what I want.

" ./configure && make && make install , the binaries are directly installed without any packages being produced (is that correct?) "

Sorry I didn’t respond earlier to this. Yes you are correct. This installs on the developer’s local system only and produces no binary rpm or deb packages. By default it installs under /usr/local/bin, /usr/local/lib, …

One use-case is not just single system install, but also single user install with no root privileges. All I need is a writable directory for my local installation tree, e.g.
mkdir -p $HOME/myprefix
export PATH=$HOME/myprefix/bin:$PATH
Then I build and install with:
./configure --prefix=$HOME/myprefix
make; make install

How is this done with CMake ?

The only few things I know about CMake is what I learnt yesterday when building for Windows 10 so I hope someone else can answer. What I discovered though, is that (at least on Windows) there’s a utility called cpack that creates installable packages. In this case a source code .zip and binary .exe installer. It seems to be possible to select the install directory. From the build script:

$env:graphviz_install_dir = "C:\Users\magja\graphviz\build2\my-install-dir"
mkdir $env:graphviz_install_dir

./Graphviz-install.exe /S /D=$env:graphviz_install_dir | Out-Null;
cmake -DCMAKE_INSTALL_PREFIX=$HOME/myprefix
make; make install
cmake -DCMAKE_INSTALL_PREFIX=$HOME/myprefix
make; make install

Doesn't matter for now,  but I don't think this is equivalent to
   ./configure --prefix=....
which also sets the default LD_LIBRARY_PATH in the executables and libraries.


You may be right. As static libraries are the default in CMake, I don’t think it expects to manage LD_LIBRARY_PATH, rpath, etc for you.