2020-04-29

supertux -- CXXABI - ABI Policy and Guidelines



ABI Policy and Guidelines
https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
3. Release versioning on the libstdc++.so binary,
It is versioned as follows:
GCC 4.6.0: libstdc++.so.6.0.15
GCC 4.6.1: libstdc++.so.6.0.16
GCC 4.7.0: libstdc++.so.6.0.17
GCC 4.8.0: libstdc++.so.6.0.18
GCC 4.8.3: libstdc++.so.6.0.19
GCC 4.9.0: libstdc++.so.6.0.20
GCC 5.1.0: libstdc++.so.6.0.21
GCC 6.1.0: libstdc++.so.6.0.22
GCC 7.1.0: libstdc++.so.6.0.23
GCC 7.2.0: libstdc++.so.6.0.24
GCC 8.0.0: libstdc++.so.6.0.25
GCC 9.1.0: libstdc++.so.6.0.26
GCC 9.2.0: libstdc++.so.6.0.27
GCC 9.3.0: libstdc++.so.6.0.28

4. Symbol versioning on the libstdc++.so binary.

GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5
GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5
GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6
GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7
GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7
GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8
GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9
GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10
GCC 7.1.0: GLIBCXX_3.4.23, CXXABI_1.3.11
GCC 7.2.0: GLIBCXX_3.4.24, CXXABI_1.3.11
GCC 8.0.0: GLIBCXX_3.4.25, CXXABI_1.3.11
GCC 9.0.0: GLIBCXX_3.4.26, CXXABI_1.3.11

slitaz-cooking
$ strings libstdc\+\+.so.6.0.16 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBC_2.0
GLIBC_2.3
GLIBC_2.1.3
GLIBC_2.2
GLIBC_2.1
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

$ strings libboost_locale.so.1.69.0 | grep GLIBCXX
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.7
GLIBCXX_3.4

VS.


slitaz-next

$ strings libboost_locale.so.1.68.0 | grep GLIBCXX | head
GLIBCXX_3.4.20
GLIBCXX_3.4.9
GLIBCXX_3.4.11
GLIBCXX_3.4.7
GLIBCXX_3.4
GLIBCXX_3.4.21
_ZNSt7__cxx1110moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc@@GLIBCXX_3.4.21
_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv@@GLIBCXX_3.4
_ZNSt7codecvtIcc11__mbstate_tEC2Ej@@GLIBCXX_3.4
_ZTINSt7__cxx117collateIwEE@@GLIBCXX_3.4.21

$ strings /usr/lib/libstdc\+\+.so.6.0.24 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.18
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

2020-04-20

supertux - CXX14



And then all that stuff at the end about language dialect "CXX14".
Target "supertux2_lib" requires the language dialect "CXX14"
Target "sexp" requires the language dialect "CXX14"
-- The C compiler identification is GNU 4.6.3
-- The CXX compiler identification is GNU 4.6.3

Ref:

C++14 Support in GCC

C++14 Language Features
https://gcc.gnu.org/projects/cxx-status.html#cxx14

 

supertux - openal - libatomic


openal - libatomic
 
warning: libatomic.so.1, needed by libopenal.so.1.20.1, not found

libatomic.so.1 => not found



Package: openal

Cook log 2020-03-26 10:50

Cook: openal 1.20.1
[ 95%] Building C object CMakeFiles/alrecord.dir/examples/alrecord.c.o
[ 97%] Linking C executable openal-info
/usr/bin/ld: warning: libatomic.so.1, needed by libopenal.so.1.20.1, not found (try using -rpath or -rpath-link)
make[2]: Leaving directory '${src}'
[ 97%] Built target openal-info
[ 98%] Linking C executable altonegen
http://cook.slitaz.org/index.cgi?pkg=openal


tux@slitaz:~$ tazpkg info openal
TazPkg information
====================================================================================
Package : openal
State : installed package
Version : 1.20.1
Category : multimedia
Short desc : cross-platform 3D audio API.
Maintainer : pascal.bellard@slitaz.org
License : LGPL2
Depends : gcc83-lib-base
Build deps : cmake gcc83

Web site : https://www.openal-soft.org/
Size : 608K/1.3M
Tags : multimedia audio sound 3D
====================================================================================

tux@slitaz:~$ ldd /usr/lib/libopenal.so.1.20.1
/usr/lib/libopenal.so.1.20.1:
libpthread.so.0 => /lib/libpthread.so.0 (0xf7595000)
libdl.so.2 => /lib/libdl.so.2 (0xf7590000)
libatomic.so.1 => not found
libm.so.6 => /lib/libm.so.6 (0xf7563000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xf7428000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xf740d000)
libc.so.6 => /lib/libc.so.6 (0xf7297000)
/lib/ld-2.14.1.so (0xf76e6000)
tux@slitaz:~$

supertux - libboost-1.69.0 VS. boost-1.68.0



receipt - libboost-1.69.0 VS. boost-1.68.0

LFS=" http://www.linuxfromscratch.org/blfs/view/svn/general/boost.html "

slitaz-cooking
 

Receipt for: libboost-dev
http://cook.slitaz.org/index.cgi?receipt=libboost-dev

# SliTaz package receipt.
# Boost is a set of two types of libraries. Most of them are just
# headers with inline functions, these are included in this package
# named libboost-dev. Some few set of libraries require build and
# installation steps. These will be relocated and have their own two
# packages : libboost-name and libboost-name-dev.

PACKAGE="libboost-dev"
VERSION="1.69.0"
CATEGORY="development"
SHORT_DESC="Free peer-reviewed portable C++ source libraries."
MAINTAINER="chadi.elahmad@gmail.com"
LICENSE="MIT"
WEB_SITE="https://www.boost.org/"
# We have to do it this way because of the underscores
# to get a package with the slitaz version numbering
SOURCE="boost"
WGET_SOURCE="boost_1_69_0"
TARBALL="$WGET_SOURCE.tar.bz2"
#EXTRA_SOURCE_FILES="boost_changeset_75540.u"
WGET_URL="$SF_MIRROR/$SOURCE/$TARBALL"
DEPENDS="gcc-lib-base libboost-chrono-dev libboost-date-time-dev \
libboost-math-dev"
BUILD_DEPENDS="bzip2-dev expat expat-dev python python-dev zlib-dev"

RELOCATE_LIBS="{ date_time filesystem graph iostreams \
math program_options python regex serialization \
signal system test thread tr1 wave }"

# Rules to configure and make the package.
# Uses boost:build building tool for the compilation:
# Doesn't use DESTDIR.
# Doesn't recognize the $CONFIGURE_ARGS, gives an error back
# Have to add some params to get static libs compiled too

compile_rules()
{
# Determine if TOOLPREFIX has been defined in tazwok.conf as it should
if [ -z "$TOOLPREFIX" ] ; then
# Provide a default TOOLPREFIX value
TOOLPREFIX=$ARCH-pc-linux-gnu-
fi
# [ -s $SOURCES_REPOSITORY/boost_changeset_75540.u ] ||
# wget -O $SOURCES_REPOSITORY/boost_changeset_75540.u --no-check-certificate \
# 'https://svn.boost.org/trac/boost/changeset/75540?format=diff&new=75540'
# patch -p2 < $SOURCES_REPOSITORY/boost_changeset_75540.u || return 1
./bootstrap.sh \
--prefix=$DESTDIR/usr \
--exec-prefix=$DESTDIR/usr \
--libdir=$DESTDIR/usr/lib \
--includedir=$DESTDIR/usr/include \
--without-icu &&
EXPAT_INCLUDE=/usr/include \
EXPAT_LIBPATH=/usr/lib \
./bjam \
--prefix=$DESTDIR/usr \
--exec-prefix=$DESTDIR/usr \
--libdir=$DESTDIR/usr/lib \
--includedir=$DESTDIR/usr/include \
--build-type=minimal \
install
# create the missing links to the shared libs
cd $DESTDIR/usr/lib
#for i in ls *-mt.so; do
# boost_tmp=echo $i | sed s/-gcc.*-mt//g
# boost_tmp_mt=echo $i | sed s/-gcc.*-mt/-mt/g
# ln -s $i $boost_tmp
# ln -s $i $boost_tmp_mt
#done
#for i in ls *-mt.a; do
# boost_tmp=echo $i | sed s/-gcc.*-mt//g
# boost_tmp_mt=echo $i | sed s/-gcc.*-mt/-mt/g
# ln -s $i $boost_tmp
# ln -s $i $boost_tmp_mt
#done
}



VS.


slitaz-next
 

# SliTaz package receipt v2.
http://cook.slitaz.org/next/boost/receipt

PACKAGE="boost"
VERSION="1.68.0"
CATEGORY="meta"
SHORT_DESC="Boost C++ libraries"
MAINTAINER="devel@slitaz.org"
LICENSE="MIT"
WEB_SITE="https://www.boost.org/"
LFS="http://www.linuxfromscratch.org/blfs/view/svn/general/boost.html"
TARBALL="$PACKAGE-$VERSION.tar.bz2"
WGET_URL="https://dl.bintray.com/boostorg/release/$VERSION/source/${PACKAGE}_${VERSION//./_}.tar.bz2"
# https://www.boost.org/users/download/
TARBALL_SHA256="7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7"
BUILD_DEPENDS="icu-dev zlib-dev bzip2-dev python-dev"

[..]
# About splitting: there's complex relationships between header files.
# Previously, for example, the /usr/include/boost/chrono/* files were packed
# into libboost-chrono-dev package. And so on for many /usr/include/boost/*/
#
# But, for example:
# 1. /usr/include/boost/chrono/config.hpp (former boost-chrono-dev package)
# includes <boost/config.hpp> (boost-dev package)
# 2. /usr/include/boost/compute/detail/duration.hpp (former boost-dev package)
# includes <boost/chrono/duration.hpp> (boost-chrono package)
#
# And many other circular dependencies between boost-dev and boost-*-dev
# packages.
#
# Solution: make single solid big boost-dev package with all development
# files.
#
# How to change dependencies of packages that depends on boost?
# Substitute boost-?-dev by the pair: boost-? and boost-dev.

compile_rules() {
./bootstrap.sh --prefix=$install/usr &&
./b2 stage threading=multi link=shared &&
./b2 install threading=multi link=shared || return 1
cook_pick_docs doc/html/*
find $install -name '*.hpp' -exec chmod 644 '{}' \;
}

supertux - undefined reference



undefined reference to 'boost::locale:

 

undefined reference to 'boost::locale::generator::generate(std::__cx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const'

The problem seems to be boost-related:

add the line:

-DCMAKE_EXE_LINKER_FLAGS:STRING="-lboost_locale" \

into the cmake configuration options.


 

libboost_locale.so: undefined reference to 'boost::system::detail::generic_category_instance'


> locale is part of libboost-dev. I didnt need 1.68 boost-locale from next.

No.

You need boost-*-1.68.0 from next.

1. edit a list of packages - boost-dep.lst
tux@slitaz:~$ cat boost-dep.lst
libicu-60.2-i486.tazpkg
icu-60.2-i486.tazpkg
libicu-full-60.2-i486.tazpkg
icu-full-60.2-i486.tazpkg
boost-system-1.68.0-i486.tazpkg
boost-date-time-1.68.0-i486.tazpkg
boost-iostreams-1.68.0-i486.tazpkg
boost-regex-1.68.0-i486.tazpkg
boost-serialization-1.68.0-i486.tazpkg
boost-thread-1.68.0-i486.tazpkg
boost-1.68.0-any.tazpkg
boost-chrono-1.68.0-i486.tazpkg
boost-filesystem-1.68.0-i486.tazpkg
boost-locale-1.68.0-i486.tazpkg
boost-math-1.68.0-i486.tazpkg
boost-dev-1.68.0-i486.tazpkg

2. download the packages
http://cook.slitaz.org/next/icu/download
http://cook.slitaz.org/next/boost/download

3.
install-list    Install all packages from a list of packages

# tazpkg install-list bootst-dep.lst

4. recompile supertux

supertux - libboost - boost


libboost - boost

> -- Found Boost: /usr/include (found version "1.69.0") found components:
> filesystem system date_time locale

slitaz-next64

tux@slitaz:~$ tazpkg -s boost
Search result for "boost"
================================================================================
Installed packages
--------------------------------------------------------------------------------
================================================================================
0 installed packages found for "boost"
Available packages
--------------------------------------------------------------------------------
boost 1.68.0 meta
boost-atomic 1.68.0 libdevel
boost-chrono 1.68.0 libdevel
boost-container 1.68.0 libdevel
boost-context 1.68.0 libdevel
boost-contract 1.68.0 libdevel
boost-coroutine 1.68.0 libdevel
boost-date-time 1.68.0 libdevel
boost-dev 1.68.0 development
boost-fiber 1.68.0 libdevel
boost-filesystem 1.68.0 libdevel
boost-graph 1.68.0 libdevel
boost-iostreams 1.68.0 libdevel
boost-locale 1.68.0 libdevel
boost-log 1.68.0 libdevel
boost-math 1.68.0 libdevel
boost-math-tr1 1.68.0 libdevel
boost-prg-exec-monitor 1.68.0 libdevel
boost-program-options 1.68.0 libdevel
boost-python 1.68.0 libdevel
boost-random 1.68.0 libdevel
boost-regex 1.68.0 libdevel
boost-serialization 1.68.0 libdevel
boost-signals 1.68.0 libdevel
boost-stacktrace 1.68.0 libdevel
boost-system 1.68.0 libdevel
boost-thread 1.68.0 libdevel
boost-timer 1.68.0 libdevel
boost-type-erasure 1.68.0 libdevel
boost-unit-test-framework1.68.0 libdevel
boost-wave 1.68.0 libdevel
boost-wserialization 1.68.0 libdevel
================================================================================
32 available packages found for "boost"
tux@slitaz:~$


slitaz-next i386

boost

Boost C++ libraries (meta-package to install base modules)

Summary for: boost 1.68.0

http://cook.slitaz.org/next/boost/download
 

2020-04-17

slitaz-next64 - supertux



slitaz-next64 - supertux-0.6.1 

 

official build
SuperTux_2-v0.6.1.glibc2.14-x86_64.AppImage 162 MB

https://github.com/SuperTux/supertux/releases/download/v0.6.1/SuperTux_2-v0.6.1.glibc2.14-x86_64.AppImage


SuperTux Nightly Downloads
https://download.supertux.org/

2020-04-19 13:44
https://supertux-ci-downloads.s3-us-west-2.amazonaws.com/901c8f80678ed342abd49a72beef4c54fc977160/travis/linux/320920409/SuperTux_2-.glibc2.27-x86_64.AppImage

To run an AppImage, simply:
https://appimage.org/ 

Make it executable

$ chmod a+x SuperTux*.AppImage

and run!