summaryrefslogtreecommitdiffstats
path: root/libraries/libopenraw/libopenraw.SlackBuild
blob: c348349971c25e612023615fcbf2a00e55dfb20c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash

# Slackware build script for libopenraw
# Copyright 2007-2011  Michiel van Wessem, Leicester, United Kingdom
# Copyright 2019 B. Watson
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS 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 COPYRIGHT
# OWNER OR 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.

# Now maintained by B. Watson <urchlay@slackware.uk>

# 20230104 bkw: update for v0.3.3.

# 20211124 bkw:
# - update for v0.3.0. upstream started using rust, so:
# - figure out how to use 'cargo vendor' so the build can be done
#   without network access. see mkvendored.sh for details.

# 20191231 bkw:
# - take over maintenance
# - update for v0.1.3
# - don't install useless INSTALL in doc dir
# - install demo source in doc dir
# - install tools/ordiag in /usr/bin
# - --disable-static
# - add doinst.sh with update-gdk-pixbuf-loaders

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=libopenraw
VERSION=${VERSION:-0.3.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

if [ -z "$ARCH" ]; then
  case "$( uname -m )" in
    i?86) ARCH=i586 ;;
    arm*) ARCH=arm ;;
       *) ARCH=$( uname -m ) ;;
  esac
fi

if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

if [ "$ARCH" = "i586" ]; then
    SLKCFLAGS="-O2 -march=i586 -mtune=i686"
    LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
    SLKCFLAGS="-O2 -march=i686 -mtune=i686"
    LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
    SLKCFLAGS="-O2 -fPIC"
    LIBDIRSUFFIX="64"
else
  SLKCFLAGS="-O2"
  LIBDIRSUFFIX=""
fi

set -e

# the last part of the vendored sources filename. was gonna stay in sync
# with BUILD, but I had to bump BUILD without changing the sources.
VSVER=${VSVER:-1}

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
tar xvf $CWD/$PRGNAM-vendored-sources-$VERSION-$VSVER.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L .  -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
        \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+

# 20211124 bkw: whoops, missing include...
sed -i '1i#include <limits>' lib/cr2file.cpp

# 20211124 bkw: prevent cargo from using the network.
# this only works because we have a vendored sources tarball with
# everything cargo would have downloaded.
export CARGO_NET_OFFLINE=true

# 20211124 bkw: prevent cargo from writing outside of $TMP
export CARGO_HOME=$(pwd)/.cargo

CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
  --disable-static \
  --enable-shared \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --localstatedir=/var \
  --mandir=/usr/man \
  --docdir=/usr/doc/$PRGNAM-$VERSION \
  --build=$ARCH-slackware-linux

make V=1
make install-strip DESTDIR=$PKG

# for whatever reason, upstream v0.0.9 calls itself v1.0 in
# pkg-config, but v0.1.3 calls itself v0.1 (and v0.3.0 calls itself
# v0.3). this causes raw-thumbnailer builds to fail. use symlinks as
# a workaround.
MMVER=$( echo $VERSION | cut -d. -f1,2 )
cd $PKG/usr/lib$LIBDIRSUFFIX/pkgconfig
for i in $PRGNAM $PRGNAM-gnome; do
  pcfile=$i-$MMVER.pc
  sed -i '/^Requires:/s,0\.1,'$MMVER',' $pcfile
  ln -s $pcfile $i-1.0.pc
done
cd -

# this looks useful
mkdir -p $PKG/usr/bin
install -s -m0755 -oroot -groot tools/.libs/ordiag $PKG/usr/bin

# the demos are example code, install just the sources.
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/demo
cp -a AUTHORS COPYING* ChangeLog NEWS README TODO $PKG/usr/doc/$PRGNAM-$VERSION
cp -a demo/*.c demo/*.cpp $PKG/usr/doc/$PRGNAM-$VERSION/demo
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

find $PKG/usr/lib$LIBDIRSUFFIX -name '*.la' -delete

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE