Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
executable file 109 lines (89 sloc) 3.66 KB
#! /bin/sh
set -xe
PKG=inkscape
VERSION=0.92.1
BUILD=0
PREFIX=/pkg/$PKG-$VERSION-$BUILD
mkdir -p $PREFIX
cat >$PREFIX/profile <<-EOF
PATH=$PREFIX/bin:\$PATH
EOF
source $PREFIX/profile
export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
# what is the problem here?
# https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
#
# our installed Glib & friends are build with an old cxx( which didn't use the CXX11 ABI)
# our installed imagemagick is build with a new cxx (which defaulted to CXX11 ABI)
#
# we want to use both libraries. So neither _GLIBCXX_USE_CXX11_ABI=1 (the default now) nor
# _GLIBCXX_USE_CXX11_ABI=0 by it self is enough.
#
# with _GLIBCXX_USE_CXX11_ABI=1 (default)
# ./lib/libinkscape_base.so: undefined reference to `Magick::Blob::base64(std::string)'
# ...
# with _GLIBCXX_USE_CXX11_ABI=0 (default)
# main.cpp:(.text+0x2a01): undefined reference to `Glib::build_filename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
# ...
#
# As a quick fix we include ImageMagick with _GLIBCXX_USE_CXX11_ABI=0 here, so this ImageMagick
# library is compatible to the installed Glib and friends.
#
# We can't use the newest ImageMagick:
#
# /pkg/inkscape-0.92.1-0/build/inkscape-0.92.1/src/extension/internal/bitmap/channel.cpp: In member function ‘virtual void Inkscape::Extension::Internal::Bitmap::Channel::applyEffect(Magick::Image*)’:
# /pkg/inkscape-0.92.1-0/build/inkscape-0.92.1/src/extension/internal/bitmap/channel.cpp:31:58: error: ‘MatteChannel’ is not a member of ‘Magick’
#
# ImageMagick
VER=6.9.7-9
mkdir -p $PREFIX/build
cd $PREFIX/build
test -e ImageMagick-$VER.tar.xz || wget https://www.imagemagick.org/download/releases/ImageMagick-$VER.tar.xz
test -d ImageMagick-$VER || tar xf ImageMagick-$VER.tar.xz
cd ImageMagick-$VER
./configure --prefix=$PREFIX CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0
make -j $(nproc)
make install
# inkscape
mkdir -p $PREFIX/build
cd $PREFIX/build
test -e inkscape-0.92.1.tar_XlpI7qT.bz2 || wget https://inkscape.org/gallery/item/10682/inkscape-0.92.1.tar_XlpI7qT.bz2
test -d inkscape-0.92.1 || tar xf inkscape-0.92.1.tar_XlpI7qT.bz2
cd inkscape-$VERSION
# another problem: the CMakeLists of inkscape includes
# if(APPLE)
# SET(CMAKE_MACOSX_RPATH TRUE)
# SET(CMAKE_INSTALL_RPATH "@loader_path/../lib/inkscape")
# else()
# SET(CMAKE_INSTALL_RPATH "$ORIGIN/../lib/inkscape")
# endif()
# Thereby overwriting any RPATH we might set e.g.
# cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 -DCMAKE_INSTALL_RPATH=$PREFIX/lib .
# to find ImageMagick library.
patch -p1 <<'EOF'
From: Unpriviledged Software Builder <build@theinternet.molgen.mpg.de>
Date: Fri, 24 Feb 2017 13:02:24 +0100
Subject: [PATCH] Honor CMAKE_INSTALL_RPATH
This enables us to configure CMAKE_INSTALL_RPATH e.g. use
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DCMAKE_INSTALL_RPATH=$PREFIX/lib .
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e5d8919..e253961 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,7 +27,7 @@ if(APPLE)
SET(CMAKE_MACOSX_RPATH TRUE)
SET(CMAKE_INSTALL_RPATH "@loader_path/../lib/inkscape")
else()
- SET(CMAKE_INSTALL_RPATH "$ORIGIN/../lib/inkscape")
+ SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH}:$ORIGIN/../lib/inkscape")
endif()
cmake_policy(SET CMP0003 NEW) # don't be prolific with library paths
--
2.4.1
EOF
cmake -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX -DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 -DCMAKE_INSTALL_RPATH=$PREFIX/lib .
make -j $(nproc)
make install
You can’t perform that action at this time.