You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

301 lines
9.5 KiB

#!/bin/sh
# Generated by Alien's SlackBuild Toolkit: http://slackware.com/~alien/AST
# Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015 Eric Hameleers, Eindhoven, Netherlands
# Copyright 2015-2017 Thorn Inurcide
# Copyright 2015-2017 tde-slackbuilds project on GitHub
# All rights reserved.
#
# Permission to use, copy, modify, and distribute this software for
# any purpose with or without fee is hereby granted, provided that
# the above copyright notice and this permission notice appear in all
# copies.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
PRGNAM=inkscape
VERSION=1.1.2
BUILD=${BUILD:-1}
ARCHIVE_TYPE="tar.xz"
SRCURL="https://media.inkscape.org/dl/resources/file/$PRGNAM-$VERSION.$ARCHIVE_TYPE"
source ../../get-source.sh
## need this here for CXX_FLAGS for double-conversion
getsource_fn
## inkscape v1.1.x needs double-conversion
[[ $(cat $TMPVARS/PRE_DOWNLOAD) != yes ]] && {
# ### double-conversion - start
{
## If it is already installed, go to end
ldconfig -p|grep libdouble-conversion 1>/dev/null || {
## otherwise, if the source archive is in 'src' ..
[[ -s $BUILD_TDE_ROOT/src/v3.1.5.tar.gz ]] && {
## .. build, package, and install ..
(
echo -e "\n building double-conversion \n"
cd /$TMP_BUILD
rm -rf *double-conversion*
tar xf $BUILD_TDE_ROOT/src/v3.1.5.tar.gz
cd double-conversion-3.1.5/
cd cmake/
# LIBDIRSUFFIX not required - builds to lib64 where appropriate ..
cmake ${G_NINJA:-} \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
-DCMAKE_CXX_COMPILER=$COMPILER_CXX \
..
PKG=$TMP_BUILD/package-double-conversion
make_fn
cd $TMP_BUILD/package-double-conversion
makepkg -l y -c n $OUTPUT/double-conversion-3.1.5-$ARCH-$BUILD.txz
installpkg $OUTPUT/double-conversion-3.1.5-$ARCH-$BUILD.txz
)
echo -e "\n now building inkscape \n"
} || { ## .. but if the source archive isn't in 'src', display download URL ..
echo -e "
############
double-conversion is required for building inkscape
Download:
\033[39;1m
( cd $BUILD_TDE_ROOT/src
wget https://github.com/google/double-conversion/archive/v3.1.5.tar.gz )
\033[0m
and re-run this script ..
############
" ; exit 1 ; }
}
}
# ### double-conversion - end
}
untar_fn
## patch for poppler 22.03+
## inkscape commit a18c57ffff313fd08bc8a44f6b6bf0b01d7e9b75
patch -p0 << EOF
--- src/extension/internal/pdfinput/pdf-input.cpp
+++ src/extension/internal/pdfinput/pdf-input.cpp
@@ -671,2 +671,1 @@ PdfInput::open(::Inkscape::Extension::Input * /*mod*/, const gchar * uri) {
- GooString *filename_goo = new GooString(uri);
- pdf_doc = std::make_shared<PDFDoc>(filename_goo, nullptr, nullptr, nullptr); // TODO: Could ask for password
+ pdf_doc = _POPPLER_MAKE_SHARED_PDFDOC(uri); // TODO: Could ask for password
--- src/extension/internal/pdfinput/poppler-transition-api.h
+++ src/extension/internal/pdfinput/poppler-transition-api.h
@@ -17,0 +17,6 @@
+#if POPPLER_CHECK_VERSION(22, 3, 0)
+#define _POPPLER_MAKE_SHARED_PDFDOC(uri) std::make_shared<PDFDoc>(std::make_unique<GooString>(uri))
+#else
+#define _POPPLER_MAKE_SHARED_PDFDOC(uri) std::make_shared<PDFDoc>(new GooString(uri), nullptr, nullptr, nullptr)
+#endif
+
EOF
## patch for poppler 22.04+
## inkscape commit d989cdf1059c78bc3bb6414330242073768d640b
patch -p0 << EOF
--- src/extension/internal/pdfinput/pdf-parser.cpp
+++ src/extension/internal/pdfinput/pdf-parser.cpp
@@ -33,0 +33,1 @@
+#include "poppler-transition-api.h"
@@ -2161,1 +2162,1 @@
- GfxFont *font = res->lookupFont(args[0].getName());
+ auto font = res->lookupFont(args[0].getName());
@@ -2182,1 +2183,3 @@
+#if !POPPLER_CHECK_VERSION(22, 4, 0)
font->incRefCnt();
+#endif
@@ -2376,1 +2379,0 @@
- GfxFont *font;
@@ -2395,1 +2397,1 @@
- font = state->getFont();
+ auto font = state->getFont();
@@ -2448,4 +2450,4 @@
- _POPPLER_CALL_ARGS(charProc, ((Gfx8BitFont *)font)->getCharProc, code);
- if ((resDict = ((Gfx8BitFont *)font)->getResources())) {
+ _POPPLER_CALL_ARGS(charProc, _POPPLER_FONTPTR_TO_GFX8(font)->getCharProc, code);
+ if (resDict = _POPPLER_FONTPTR_TO_GFX8(font)->getResources()) {
pushResources(resDict);
- }
+ }
--- src/extension/internal/pdfinput/poppler-transition-api.h
+++ src/extension/internal/pdfinput/poppler-transition-api.h
@@ -17,0 +17,6 @@
+#if POPPLER_CHECK_VERSION(22, 4, 0)
+#define _POPPLER_FONTPTR_TO_GFX8(font_ptr) ((Gfx8BitFont *)font_ptr.get())
+#else
+#define _POPPLER_FONTPTR_TO_GFX8(font_ptr) ((Gfx8BitFont *)font_ptr)
+#endif
+
--- src/extension/internal/pdfinput/svg-builder.cpp
+++ src/extension/internal/pdfinput/svg-builder.cpp
@@ -111,1 +111,0 @@
- _current_font = nullptr;
@@ -1024,5 +1023,2 @@
- if (_font_style) {
- //sp_repr_css_attr_unref(_font_style);
- }
_font_style = sp_repr_css_attr_new();
- GfxFont *font = state->getFont();
+ auto font = state->getFont();
@@ -1174,1 +1170,0 @@
- _current_font = font;
--- src/extension/internal/pdfinput/svg-builder.h
+++ src/extension/internal/pdfinput/svg-builder.h
@@ -206,1 +206,0 @@
- GfxFont *_current_font;
EOF
## set internal 2geom lib paths to lib$LIBDIRSUFFIX
sed -i "s|CMAKE_INSTALL_PREFIX}/lib|&$LIBDIRSUFFIX|" src/3rdparty/2geom/CMakeLists.txt
sed -i "s|DESTINATION lib|&$LIBDIRSUFFIX|" src/3rdparty/2geom/CMakeLists.txt
sed -i "s|libdir=.*$|&$LIBDIRSUFFIX|" src/3rdparty/2geom/2geom.pc.in
## only build for required locales
{
## set up a directory to store the required locale files temporarily
TEMP_DIR=$TMP_BUILD/tmp-$PRGNAM/loc_tmp
mkdir $TEMP_DIR
## .. for po/LINGUAS
LOCALES=$(cat po/LINGUAS)
rm po/LINGUAS
for locale in $I18N
do
[[ $LOCALES == *$locale* ]] && \
echo $locale >> po/LINGUAS
done
## .. for translations
locas="" ## for slack-desc
for locale in $I18N
do
mv po/$locale.po $TEMP_DIR && locas="$locas $locale"
done
rm -rf po/*.po
mv $TEMP_DIR/* po/
## .. for tutorials
for locale in $I18N
do
mv share/tutorials/*.$locale.* $TEMP_DIR
done
rm share/tutorials/*.*.*
mv $TEMP_DIR/* share/tutorials/
} || true # because the existence of the files hasn't been tested
## only package man pages for required locales
for file in man/ink*.*.pod.in
do
[[ $I18N != *$(echo $file | cut -d"." -f2)* ]] && rm $file
done
## and install them to $prefix, as per most other Slackware packages
sed -i 's|MANFILE_DEST "${SHARE_INSTALL}|MANFILE_DEST "${CMAKE_INSTALL_PREFIX}|' CMakeScripts/Pod2man.cmake
## only package welcome screen text for required locales
I18N_SVG="about.svg start-welcome-text.svg"
#
for Loc in $I18N
do
[[ -s share/screens/start-welcome-text.$Loc.svg ]] && I18N_SVG="$I18N_SVG start-welcome-text.$Loc.svg" && COUNT_TEXT=$[${COUNT_TEXT:-}+1]
COUNT_I18N=$[${COUNT_I18N:-}+1]
done
## Add the TRANSLATING file if any of the locales has no start-welcome-text.$I18N.svg
[[ ${COUNT_I18N:-} != ${COUNT_TEXT:-} ]] && I18N_SVG="TRANSLATING $I18N_SVG"
sed -i "s|\"\*.svg\"|$I18N_SVG|" share/screens/CMakeLists.txt
listdocs_fn
chown_fn
cd_builddir_fn
## options have been pulled from CMakeLists.txt
cmake ${G_NINJA:-} \
-DCMAKE_C_FLAGS="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS="$SLKCFLAGS" \
-DCMAKE_C_COMPILER=$COMPILER \
-DCMAKE_CXX_COMPILER=$COMPILER_CXX \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_SHARED_LIBS="ON" \
-DBUILD_TESTING="OFF" \
-DENABLE_BINRELOC="OFF" \
-DENABLE_LCMS="ON" \
-DENABLE_POPPLER="ON" \
-DENABLE_POPPLER_CAIRO="ON" \
-DWITH_ASAN="OFF" \
-DWITH_DBUS="OFF" \
-DWITH_FUZZ="OFF" \
-DWITH_GNU_READLINE="ON" \
-DWITH_GRAPHICS_MAGICK="ON" \
-DWITH_GSPELL="OFF" \
-DWITH_IMAGE_MAGICK="ON" \
-DWITH_INTERNAL_2GEOM="ON" \
-DWITH_JEMALLOC="OFF" \
-DWITH_LIBCDR="ON" \
-DWITH_LIBVISIO="OFF" \
-DWITH_LIBWPG="OFF" \
-DWITH_LPETOOL="OFF" \
-DLPE_ENABLE_TEST_EFFECTS="OFF" \
-DWITH_MANPAGE_COMPRESSION="ON" \
-DWITH_NLS="ON" \
-DWITH_OPENMP="ON" \
-DWITH_PROFILING="OFF" \
-DWITH_SVG2="ON" \
-Wno-dev \
..
make_fn
INSTALL_TDE="/usr/local"
installdocs_fn
strip_fn
mkdir_install_fn
INSTALL_TDE=/usr/local
doinst_sh_fn
echo "
# HOW TO EDIT THIS FILE:
# The 'handy ruler' below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in. You must make
# exactly 11 lines for the formatting to be correct. It's also customary to
# leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
$PRGNAM: Inkscape (Open Source vector graphics editor)
$PRGNAM:
$PRGNAM: Inkscape is an Open Source vector graphics editor, with capabilities
$PRGNAM: similar to Illustrator, Freehand, CorelDraw, or Xara X using the W3C
$PRGNAM: standard Scalable Vector Graphics (SVG) file format.
$PRGNAM:
$PRGNAM: With language support for:
$PRGNAM: en$locas
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM:
" > $PKG/install/slack-desc
makepkg_fn