Skip to content

Commit

Permalink
inkscape-0.92.4: Update and rebuild for libpoppler update
Browse files Browse the repository at this point in the history
1.  Use latest version from [branch 0.92.x][1]

    This branch includes a [commit fixing a build error with Poppler
    0.76][2], cf [issue 220][3].

2.  Use latest ImageMagick 6.9.10-53

[1]: https://gitlab.com/inkscape/inkscape/commits/0.92.x
[2]: https://gitlab.com/inkscape/inkscape/commit/dc25406853353320078eca22cf817fb052c97082
[3]: https://gitlab.com/inkscape/inkscape/issues/220
  • Loading branch information
pmenzel committed Jul 8, 2019
1 parent af293a4 commit 904f1af
Showing 1 changed file with 110 additions and 0 deletions.
110 changes: 110 additions & 0 deletions inkscape-0.92.4-1.build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
#! /bin/sh
set -xe

PKG=inkscape
VERSION=0.92.4
GITHASH=424477f665adb9996045d92026ceecb2eeb22dbe
BUILD=1
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.10-53

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-$GITHASH.tar.bz2 || wget -O inkscape-$GITHASH.tar.bz2 https://gitlab.com/inkscape/inkscape/-/archive/$GITHASH/inkscape-$GITHASH.tar.bz2
test -d inkscape-$GITHASH || tar xf inkscape-$GITHASH.tar.bz2
cd inkscape-$GITHASH

# 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

0 comments on commit 904f1af

Please sign in to comment.