aboutsummaryrefslogtreecommitdiff
path: root/patches/libpng/libpng.SlackBuild
blob: 77a67f062d0a11f400819ea4f205a4475d15ea7b (plain)
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