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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
#!/bin/bash
#
# slackbuild script for libpng
# by rhatto at riseup.net
#
# some code grabbed from slackware 11.0 and slamd64-11.0 scripts, found at
# ftp://ftp.slackware.com/pub/slackware/slackware-11.0/source/l/libpng/ and
# http://slamd64.he.net/slamd64-11.0/source/l/libpng/libpng.SlackBuild
#
if [ -s "slack-required" ]; then
echo Recomended and required packages for building libpng are:
cat slack-required | sed -e 's/^/\t/'
if [ "$INTERACT" != "no" ]; then
echo If you dont have those installed, press Ctrl-C. Otherwise, hit ENTER.
read crap
# else
# echo Sleeping 3 seconds...
# sleep 3
fi
fi
CWD="`pwd`"
if [ -f ~/.slackbuildrc ]; then
source ~/.slackbuildrc
elif [ -f /etc/slackbuildrc ]; then
source /etc/slackbuildrc
fi
# default settings
PACKAGE="libpng"
ARCH=${ARCH:=i486}
VERSION=${VERSION:=1.2.18}
BUILD=${BUILD:=1rha}
SRC_DIR=${SRC:=$CWD}
TMP=${TMP:=/tmp}
REPOS=${REPOS:=$TMP}
if [ "$ARCH" == "x86_64" ]; then
export LDFLAGS="-L/lib64 -L/usr/lib64"
LIBDIR=/usr/lib64
else
LIBDIR=/usr/lib
fi
# ------- error codes for createpkg --------------
ERROR_WGET=31; ERROR_MAKE=32; ERROR_INSTALL=33
ERROR_MD5=34; ERROR_CONF=35; ERROR_HELP=36
ERROR_TAR=37; ERROR_MKPKG=38; ERROR_GPG=39
ERROR_PATCH=40
RTOOL="wget"
PACKAGE_EXT="gz"
SRC="$PACKAGE-$VERSION.tar.$PACKAGE_EXT"
URL="http://ufpr.dl.sourceforge.net/sourceforge/libpng/$SRC"
SRC_DIR="$SRC_DIR/$PACKAGE"
mkdir -p $SRC_DIR
if [ "$RTOOL" == "wget" ] && [ ! -f "$SRC_DIR/$SRC" ]; then
wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
fi
TMP="$TMP/$PACKAGE"
rm -rf $TMP
mkdir -p $TMP
cd $TMP
tar xvf $SRC_DIR/$SRC || exit $ERROR_TAR
cd $PACKAGE-$VERSION
if [ -f "$CWD/$PACKAGE-$VERSION.diff" ]; then
patch -p1 < $CWD/$PACKAGE-$VERSION.diff || exit $ERROR_PATCH
fi
chown -R root:root .
find . -perm 664 -exec chmod 644 {} \;
find . -perm 600 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;
find . -perm 400 -exec chmod 644 {} \;
find . -perm 440 -exec chmod 644 {} \;
find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 511 -exec chmod 755 {} \;
find . -perm 711 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
if [ "$ARCH" == "x86_64" ]; then
# Do *NOT* move this... put here in Slamd64 so that libdir
# can be overriden and so that we don't have inline assembly problems
# - if you change this, rebuilding libpng will break, and
# you'll have to rebuild everything that links to it (e.g. KDE).
zcat $CWD/libpng.libs.diff.gz | patch -p1 --verbose || exit $ERROR_PATCH
ln -sf scripts/makefile.linux ./Makefile
# makefile.linux breaks on trying to deal with MMX on AMD64.
# If we use automake, the Makefile doesn't deal with certain
# exported functions we need (e.g. png_read_destroy)
# We *could* patch libpng to use 64 bit safe MMX instructions, but
# the tested and recommended way appears to be to disable the MMX
# instructions on AMD64
zcat $CWD/libpng.mmx-x86-only.diff.gz | patch -p1 --verbose || exit 1 # Patch from Mandriva
./configure --prefix=/usr --libdir=$LIBDIR || exit $ERROR_CONF
else
./configure --prefix=/usr --libdir=$LIBDIR || exit $ERROR_CONF
zcat $CWD/libpng.libs.diff.gz | patch -p1 --verbose || exit $ERROR_PATCH
ln -sf scripts/makefile.linux ./Makefile
fi
make || exit $ERROR_MAKE
make DESTDIR=$TMP/package-$PACKAGE install || exit $ERROR_INSTALL
CWD="`pwd`"
cd $TMP/package-$PACKAGE
# This symlink is needed to keep old applications running:
( cd usr/lib
if [ ! -e libpng.so.0 -a -e libpng.so.3 ]; then
ln -sf libpng.so.3 libpng.so.0
fi
)
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
gzip -9 usr/man/man?/*
mkdir install
cat << EOF > install/slack-desc
# 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------------------------------------------------------|
libpng: libpng (Portable Network Graphics library)
libpng:
libpng: PNG (Portable Network Graphics) is an extensible file format for the
libpng: lossless, portable, well-compressed storage of raster images. PNG
libpng: provides a patent-free replacement for GIF and can also replace many
libpng: common uses of TIFF. Indexed-color, grayscale, and truecolor images
libpng: are supported, plus an optional alpha channel. Sample depths range
libpng: from 1 to 16 bits.
libpng:
libpng:
libpng:
EOF
# docs
mkdir -p usr/doc/$PACKAGE-$VERSION
DOCS="ANNOUNCE CHANGES INSTALL KNOWNBUG LICENSE README TODO Y2KINFO libpng.txt example.c"
for file in $DOCS; do
cp $CWD/$file* usr/doc/$PACKAGE-$VERSION/
done
makepkg -c y -l y $REPOS/$PACKAGE-$VERSION-$ARCH-$BUILD.tgz || exit $ERROR_MKPKG
if [ "$CLEANUP" == "yes" ]; then
rm -rf $TMP
fi
|