#!/bin/bash # Copyright 2000 BSDi, Inc. Concord, CA, USA # Copyright 2001, 2002 Slackware Linux, Inc. Concord, CA, USA # Copyright 2005 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. # # Small changes by rhatto # CWD="`pwd`" if [ -f ~/.slackbuildrc ]; then source ~/.slackbuildrc elif [ -f /etc/slackbuildrc ]; then source /etc/slackbuildrc fi PACKAGE="openssl" VERSION=${VERSION:=0.9.8h} ARCH=${ARCH:=i486} BUILD=${BUILD:=1rha} SRC_DIR=${SRC:=$CWD} TMP=${TMP:=/tmp} REPOS=${REPOS:=$TMP} RTOOL="wget" PACKAGE_EXT="gz" SRC="openssl-$VERSION.tar.$PACKAGE_EXT" URL="http://www.openssl.org/source/$SRC" # ------- 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 SRC_DIR="$SRC_DIR/$PACKAGE" mkdir -p $SRC_DIR if [ "$RTOOL" == "wget" ] && [ ! -f "$SRC_DIR/$SRC" ]; then rm -f $SRC_DIR/$SRC.asc wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET wget "$URL.asc" -O "$SRC_DIR/$SRC.asc" || exit $ERROR_WGET fi gpg --import << EOGPG -----BEGIN PGP PUBLIC KEY BLOCK----- Version: PGP Key Server 0.9.6 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 hW1+cfom8BkW+Lyy51GG =r/SQ -----END PGP PUBLIC KEY BLOCK----- EOGPG gpg --verify $SRC_DIR/$SRC.asc $SRC_DIR/$SRC || exit $ERROR_GPG if [ "$ARCH" == "x86_64" ]; then LIBDIR=/usr/lib64 else LIBDIR=/usr/lib fi TMP="$TMP/$PACKAGE" rm -rf $TMP mkdir -p $TMP PKG1=$TMP/package-openssl PKG2=$TMP/package-ossllibs NAME1=openssl-$VERSION-$ARCH-$BUILD NAME2=openssl-solibs-$VERSION-$ARCH-$BUILD # So that ls has the right field counts for parsing... export LC_ALL=C # This is used to fix manpage links: relink() { ORIGLINE=`/bin/ls -l $1` LINK=`echo $ORIGLINE | cut -f 9 -d ' '`.gz FILE=`echo $ORIGLINE | cut -f 11 -d ' '`.gz rm $1 if [ -r $FILE ]; then ln -sf $FILE $LINK fi } cd $TMP rm -rf $PKG1 $PKG2 openssl-$VERSION || exit 1 tar xvf $SRC_DIR/$SRC || exit $ERROR_TAR cd openssl-$VERSION # Use .so.0, not .so.0.9.8: zcat $CWD/openssl.soname.diff.gz | patch -p1 --backup --verbose --suffix=.orig || exit $ERROR_PATCH # Fix CAN-2005-2969 (SSL 2.0 rollback bug): for vulnerable in 0.9.7g 0.9.7f 0.9.7e 0.9.7d 0.9.7c 0.9.7b 0.9.7a 0.9.7 0.9.8; do if [ "$VERSION" == "$vulnerable" ]; then zcat $CWD/patch-CAN-2005-2969.diff.gz | patch -p0 --backup --verbose --suffix=.orig || exit $ERROR_PATCH fi done if [ "$ARCH" = "i486" ]; then # Build with -march=i486 -mcpu=i686: zcat $CWD/openssl.optsx86.diff.gz | patch -p1 --backup --verbose --suffix=.orig || exit $ERROR_PATCH fi chown -R root.root . mkdir -p $PKG1/usr/doc/openssl-$VERSION cp -a CHANGES CHANGES.SSLeay FAQ INSTALL INSTALL.MacOS INSTALL.VMS INSTALL.W32 \ LICENSE NEWS README README.ENGINE doc $PKG1/usr/doc/openssl-$VERSION find $PKG1/usr/doc/openssl-$VERSION -type d -exec chmod 755 {} \; find $PKG1/usr/doc/openssl-$VERSION -type f -exec chmod 644 {} \; # These are the known patent issues with OpenSSL: # name # expires # MDC-2: 4,908,861 13/03/2007, not included. # IDEA: 5,214,703 25/05/2010, not included. # RC5: 5,724,428 03/03/2015, not included. ./config --prefix=/usr --openssldir=/etc/ssl no-mdc2 no-idea no-rc5 shared || exit $ERROR_CONF make depend || exit $ERROR_MAKE # Use -j1 here if you know what's good for you. make || exit $ERROR_MAKE make install INSTALL_PREFIX=$PKG1 || exit $ERROR_INSTALL # Add a cron script to warn root if a certificate is going to expire soon: mkdir -p $PKG1/etc/cron.daily zcat $CWD/certwatch.gz > $PKG1/etc/cron.daily/certwatch.new chmod 755 $PKG1/etc/cron.daily/certwatch.new mv $PKG1/etc/ssl/openssl.cnf $PKG1/etc/ssl/openssl.cnf.new if [ "$ARCH" == "x86_64" ]; then ( cd $PKG1/usr; mv lib lib64; mkdir lib; mv lib64/pkgconfig lib/pkgconfig ) strip --strip-unneeded $PKG1/usr/lib64/lib*.so.*.*.* $PKG1/usr/bin/* ( cd $PKG1/usr/lib64 ; ln -sf libcrypto.so.0 libcrypto.so ) ( cd $PKG1/usr/lib64 ; ln -sf libssl.so.0 libssl.so ) else strip --strip-unneeded $PKG1/usr/lib/lib*.so.*.*.* $PKG1/usr/bin/* ( cd $PKG1/usr/lib ; ln -sf libcrypto.so.0 libcrypto.so ) ( cd $PKG1/usr/lib ; ln -sf libssl.so.0 libssl.so ) fi chown -R root.bin $PKG1/usr/bin mv $PKG1/etc/ssl/man $PKG1/usr ( cd $PKG1/usr/man/man1 ; mv passwd.1 ssl_passwd.1 ) ( cd $PKG1/usr/man/man3 ; mv rand.3 ssl_rand.3 ) gzip -9 $PKG1/usr/man/man?/* for mandir in man1 man3 man7 ; do ( cd $PKG1/usr/man/$mandir for page in *.? ; do relink $page done ) done cd $PKG1 chmod 755 usr/lib/pkgconfig mkdir -p install zcat $CWD/doinst.sh-openssl.gz > install/doinst.sh cat $CWD/slack-desc.openssl > install/slack-desc makepkg -l y -c n $REPOS/${NAME1}.tgz || exit $ERROR_MKPKG # Make runtime package: if [ "$ARCH" == "x86_64" ]; then mkdir -p $PKG2/usr/lib64 ( cd usr/lib64 ; cp -a lib*.so.*.*.* $PKG2/usr/lib64 ) ( cd $PKG2/usr/lib64 ; ldconfig -l * ) else mkdir -p $PKG2/usr/lib ( cd usr/lib ; cp -a lib*.so.*.*.* $PKG2/usr/lib ) ( cd $PKG2/usr/lib ; ldconfig -l * ) fi mkdir -p $PKG2/etc ( cd $PKG2/etc ; cp -a $PKG1/etc/ssl . ) mkdir -p $PKG2/usr/doc/openssl-$VERSION ( cd $TMP/openssl-$VERSION cp -a CHANGES CHANGES.SSLeay FAQ INSTALL INSTALL.MacOS INSTALL.VMS INSTALL.W32 \ LICENSE NEWS README README.ENGINE $PKG2/usr/doc/openssl-$VERSION ) find $PKG2/usr/doc/openssl-$VERSION -type d -exec chmod 755 {} \; find $PKG2/usr/doc/openssl-$VERSION -type f -exec chmod 644 {} \; cd $PKG2 mkdir -p install zcat $CWD/doinst.sh-openssl-solibs.gz > install/doinst.sh cat $CWD/slack-desc.openssl-solibs > install/slack-desc makepkg -l y -c n $REPOS/${NAME2}.tgz || exit $ERROR_MKPKG if [ "$CLEANUP" == "yes" ]; then rm -rf $TMP fi