aboutsummaryrefslogtreecommitdiff
path: root/dev/libs/libpth/libpth.SlackBuild
blob: fce16c92127d02a202595ed1650b346ae0e82d91 (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
173
174
175
176
177
178
179
180
181
#!/bin/bash
#
# SlackBuild for pth (GNU Portable Threads)
# http://www.gnu.org/software/pth/
#
# Author: Luis ( luis at riseup d0t net )
#

CWD=`pwd`

# Look for slackbuildrc
if [ -f ~/.slackbuildrc ]; then
  source ~/.slackbuildrc
elif [ -f /etc/slackbuildrc ]; then
  source /etc/slackbuildrc
fi

# Set variables
SRC_NAME="pth"
PKG_NAME="libpth"
ARCH=${ARCH:=i486}
VERSION=${VERSION:=2.0.7}
BUILD=${BUILD:=1ls}
SRC_DIR=${SRC_DIR:=$CWD}
TMP=${TMP:=/tmp}
PKG=${PKG:=$TMP/package-$PKG_NAME}
REPOS=${REPOS:=$TMP}
PREFIX=${PREFIX:=/usr}
PKG_SRC="$SRC_DIR/$SRC_NAME-$VERSION"

# Set system libraries' path and optmization flags based on $ARCH
LIBDIR="$PREFIX/lib"

if [ "$ARCH" = "i386" ]; then
  SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
elif [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O2 -march=i686"
elif [ "$ARCH" = "s390" ]; then
  SLKCFLAGS="-O2"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2"
  LIBDIR="$PREFIX/lib64"
fi

# Set error codes (used by 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;     ERROR_VCS=41;       ERROR_MKDIR=42

# Clean up any leftovers of previous builds
rm -rf "$PKG_SRC" 2> /dev/null
rm -rf "$PKG" 2> /dev/null

# Create directories, if necessary
mkdir -p "$SRC_DIR" || exit $ERROR_MKDIR
mkdir -p "$PKG" || exit $ERROR_MKDIR
mkdir -p "$REPOS" || exit $ERROR_MKDIR

# Import (minimized) signing key from
# ftp://ftp.gnu.org/gnu/gnu-keyring.gpg
gpg --import << EOKEY || exit $ERROR_GPG
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQGiBDxKtR0RBACh9cmwVQjGuRAH9zEIV6s5ZhNRjG0Mk9sGjwkP1bXRHhRq64Dp
iCnqSZvlBVLBSOB48YHEj5tQayjxIoLR1R79o2uA99/SuSAtmByKk1rrrLGyb8Hp
KKGWLPITnY8on0Lwj36lGXWkbjdSPneEX61FkOtZ47tyLePXSZy9twU8dwCgj0R3
Z2f3x7d0u1IXonA4v/m3EIED/2lTlAOVtlewlMAsNWlH5HL7HInbtWSNJTebszix
qivgZ3yuI+/aGNECYmK/SDia0s9BUto2ih0t+Hdo6Tw5nEivEFfYTl4gOjg+yYu1
7RgjRAAwiDirni7BfleChztiovaVOVWIW/vs3HMY+nbgkqcjMyWqhC/7c2RL+5jQ
enHHA/0cK4SWrC4pL2syPxwQFDmWSYz80dh5kPTUkXG09BEZ3fvnlNs1m6c2ALdf
B8LiKlxUqZn+/hrNcbkByq/CJG+oiY0omJUyFzIbmu5t9aKhl8UpQ0+91j7aVTya
5XfyQnNdtSi1hvcxvMyjI2wfUNrKzNFK3WQ/9P2lADnp8G8j7bQpUmFsZiBTLiBF
bmdlbHNjaGFsbCA8cnNlQGVuZ2Vsc2NoYWxsLmNvbT6IXwQTEQIAFwUCPEq1HQUL
BwoDBAMVAwIDFgIBAheAABIJEG50SsupwJ4wB2VHUEcAAQHzlQCfYaJnY4MWESnO
g4vBoDFt9uAIM9gAn3szlXmMoNFCSKyvJRYDcfH/E8fHuQINBDxKtT4QCAC0My97
Ek/z0LRlMPoBMNbZZyq7waa8+SB3ponfh6o1O5Ce6FRyP3IqxzAvo2eMV0IvwyAy
9EcyxuKAsL53NadbRUEy2q9bJECn/AlbIHiJvriSQstzWCEyBVRsH2wHi3YGns7c
saNs4e7pDKaf5vedqeca8OpJ4bj8U1kiebGzz7qqalmpSF6czUbFZppL5C7n6PVR
PtJGoB2u3fS6aOJgpndhsiHupNHWYB8/tUGeAysDYESx9rhasPVhehC8mpHiwHAb
kxHalAnbJI8YZ0MFAqOr8fPPVDzO8ArsbkjuKHGgQvkV38Gsn+SnPDExobvBCCI4
8hBkcbVtCrzV8gLfAAMHCACKajjfnpQ1HX70bHF/a9i99/OtldwoarMu3enEp5iu
5kMIH6Nh67WUcl79xX08/AWJUcJgI8n4oE4HAhXi4sTWl+4MnNoYls9qnpVLNmHh
c4dhRDAHdHVRsVT1vXNpUckfLxj4j37w9BRNuQCMLYSYdeKy1ENNZrOgh2WOLDTn
tH8mlIb3fIXQ0EY78uC16MtPL/Q5Z9FL9DvJiIe+6XoLXJhuKTk6svztWN+T4Ix0
8e8GT6YZysKE85OUeJqMqQXUdzReIG5qRqrNT984AXJdMwsjEbrsjLgETDyyqmqF
uDg9DiusvaMuhgNxLpTnmUTo3xOKwkdY93UfDYhbEwNpiE4EGBECAAYFAjxKtT4A
EgkQbnRKy6nAnjAHZUdQRwABASWPAJoCqfTDhzFQOngPku+kWHdajWj1pgCeIIKl
ZKGPGjkCEUGma0qd+GUAh4A=
=rGe0
-----END PGP PUBLIC KEY BLOCK-----
EOKEY

# Dowload source and its signature, if necessary
SRC="$SRC_NAME-$VERSION.tar.gz"
URL="ftp://ftp.gnu.org/gnu/pth/$SRC"

if [ ! -f "$SRC_DIR/$SRC" ]; then
  wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
fi
if [ ! -f "$SRC_DIR/$SRC.sig" ]; then
  wget "$URL.sig" -O "$SRC_DIR/$SRC.sig" || exit $ERROR_WGET
fi

# Check source's signature
gpg --verify "$SRC_DIR/$SRC.sig" "$SRC_DIR/$SRC" || exit $ERROR_GPG

# Untar, configure, compile and install
tar --no-same-owner --no-same-permissions -xvf "$SRC_DIR/$SRC" -C "$SRC_DIR" || exit $ERROR_TAR
cd "$PKG_SRC"
CFLAGS="$SLKCFLAGS" \
  CXXFLAGS="$SLKCFLAGS" \
  ./configure \
  --prefix="$PREFIX" --libdir="$LIBDIR" || exit $ERROR_CONF
make || exit $ERROR_MAKE
make test
make install DESTDIR="$PKG" || exit $ERROR_INSTALL

# Strip binaries
( cd "$PKG"
  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
)

# Compress and link manpages
if [ -d "$PKG/$PREFIX/man" ]; then
  ( cd "$PKG/$PREFIX/man"
    for manpagedir in $(find . -type d -name "man*") ; do
      ( cd $manpagedir
        for eachpage in $( find . -type l -maxdepth 1) ; do
          ln -s $( readlink $eachpage ).gz $eachpage.gz
          rm $eachpage
        done
        gzip -9 *.?
      )
    done
  )
fi

# Install documentation
DOCS="ANNOUNCE AUTHORS COPYING ChangeLog HACKING HISTORY INSTALL NEWS PORTING \
      README SUPPORT TESTS THANKS USERS"
mkdir -p "$PKG/$PREFIX/doc/$PKG_NAME-$VERSION" || exit $ERROR_MKDIR
cp -a $DOCS "$PKG/$PREFIX/doc/$PKG_NAME-$VERSION"

# Add package description (slack-desc)
mkdir -p "$PKG/install" || exit $ERROR_MKDIR
cat << EODESC > "$PKG/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--------------------------------------------------------|
libpth: libpth (The GNU Portable Threads)
libpth:
libpth: Pth is a very portable POSIX/ANSI-C based library for Unix platforms
libpth: which provides non-preemptive priority-based scheduling for multiple
libpth: threads of execution ("multithreading") inside server applications.
libpth: All threads run in the same address space of the server application,
libpth: but each thread has its own individual program-counter, run-time
libpth: stack, signal mask and errno variable.
libpth:
libpth: For more information, http://www.gnu.org/software/pth/
libpth:
EODESC

# Build the package
cd "$PKG"
makepkg -l y -c n "$REPOS/$PKG_NAME-$VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG

# Delete source and build directories, if requested
if [ "$CLEANUP" == "yes" ]; then
  rm -rf "$PKG_SRC" "$PKG"
fi