CDSoft / pp

PP - Generic preprocessor (with pandoc in mind) - macros, literate programming, diagrams, scripts...

Home Page:http://cdelord.fr/pp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot run >2.3.4 on Ubuntu 16.04

holmboe opened this issue · comments

When running pp version later than 2.3.4 on Ubuntu 16.04 it fails:

vagrant@vagrant:~$ ./pp
./pp: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by ./pp)

On Ubuntu 16.04, where pp fails to run:

vagrant@vagrant:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:        16.04
Codename:       xenial
vagrant@vagrant:~$ objdump -T /lib/x86_64-linux-gnu/libm.so.6 | grep -oEi 'GLIBC_[0-9]*.[0-9]*.[0-9]*'| sort | uniq
GLIBC_2.15
GLIBC_2.15 
GLIBC_2.18
GLIBC_2.18 
GLIBC_2.2.5
GLIBC_2.23
GLIBC_2.23 
GLIBC_2.4
GLIBC_2.4 
GLIBC_PR

The same commands on Ubuntu 18.04, where pp runs without problems:

vagrant@vagrant:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:        18.04
Codename:       bionic
vagrant@vagrant:~$ objdump -T /lib/x86_64-linux-gnu/libm.so.6 | grep -oEi 'GLIBC_[0-9]*.[0-9]*.[0-9]*'| sort | uniq
GLIBC_2.15
GLIBC_2.15 
GLIBC_2.18
GLIBC_2.18 
GLIBC_2.23
GLIBC_2.23 
GLIBC_2.24
GLIBC_2.24 
GLIBC_2.25
GLIBC_2.2.5
GLIBC_2.25 
GLIBC_2.26
GLIBC_2.26 
GLIBC_2.27
GLIBC_2.27 
GLIBC_2.4
GLIBC_2.4 
GLIBC_PR

This was tested with 2.3.4, 2.7.2 and a few versions in between those two.

Binaries are compiled on Fedora. They may or may not work on other Linux distributions. I highly recommend to compile pp from the sources on your OS:

  • install stack (https://docs.haskellstack.org/en/stable/install_and_upgrade/#linux)
  • unpack pp.tgz
  • make install
    This should work on most decent Linux distributions.

Thanks for the information and instructions. My solution will likely be to upgrade the build containers from Ubuntu 16.04 to 18.04, and if there are any other showstoppers going that route I will resort to building pp in the 16.04 container.

A tip for your release process: use Travis CI to build your Git tags and then upload them to Github Releases (see https://docs.travis-ci.com/user/deployment/releases). In that way you can build releases with older distros than you are running on your development machine.

Feel free to close this issue. 👍

Sorry for the late reply... Please keep in mind that pp is not supported anymore, it's hard to deploy. For new projects I suggest ypp which is is based on a Lua interpreter and way easier to compile and install and binaries are easier to produce (thanks to zig) and deploy (see hey).

E.g. to install ypp:

curl https://cdelord.fr/hey/ypp-x86_64-linux-musl | sh

The binaries compiled with musl should be more portable.