155 lines
3.3 KiB
Bash
Executable File
155 lines
3.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script configures, builds and packs the binary package for
|
|
# the Cygwin net distribution version of OpenSSL
|
|
#
|
|
|
|
# Uncomment when debugging
|
|
#set -x
|
|
|
|
CONFIG_OPTIONS="--prefix=/usr shared zlib no-idea no-rc5"
|
|
INSTALL_PREFIX=/tmp/install/INSTALL
|
|
|
|
VERSION=
|
|
SHLIB_VERSION_NUMBER=
|
|
SUBVERSION=$1
|
|
|
|
function cleanup()
|
|
{
|
|
rm -rf ${INSTALL_PREFIX}/etc
|
|
rm -rf ${INSTALL_PREFIX}/usr
|
|
}
|
|
|
|
function get_openssl_version()
|
|
{
|
|
eval `grep '^VERSION=' Makefile`
|
|
if [ -z "${VERSION}" ]
|
|
then
|
|
echo "Error: Couldn't retrieve OpenSSL version from Makefile."
|
|
echo " Check value of variable VERSION in Makefile."
|
|
exit 1
|
|
fi
|
|
eval `grep '^SHLIB_VERSION_NUMBER=' Makefile`
|
|
if [ -z "${SHLIB_VERSION_NUMBER}" ]
|
|
then
|
|
echo "Error: Couldn't retrieve OpenSSL shared lib version from Makefile."
|
|
echo " Check value of variable SHLIB_VERSION_NUMBER in Makefile."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function base_install()
|
|
{
|
|
mkdir -p ${INSTALL_PREFIX}
|
|
cleanup
|
|
make install INSTALL_PREFIX="${INSTALL_PREFIX}"
|
|
}
|
|
|
|
function doc_install()
|
|
{
|
|
DOC_DIR=${INSTALL_PREFIX}/usr/share/doc/openssl
|
|
|
|
mkdir -p ${DOC_DIR}
|
|
cp CHANGES CHANGES.SSLeay INSTALL LICENSE NEWS README ${DOC_DIR}
|
|
|
|
create_cygwin_readme
|
|
}
|
|
|
|
function certs_install()
|
|
{
|
|
CERTS_DIR=${INSTALL_PREFIX}/usr/ssl/certs
|
|
|
|
mkdir -p ${CERTS_DIR}
|
|
cp -rp certs/* ${CERTS_DIR}
|
|
}
|
|
|
|
function create_cygwin_readme()
|
|
{
|
|
README_DIR=${INSTALL_PREFIX}/usr/share/doc/Cygwin
|
|
README_FILE=${README_DIR}/openssl-${VERSION}.README
|
|
|
|
mkdir -p ${README_DIR}
|
|
cat > ${README_FILE} <<- EOF
|
|
The Cygwin version has been built using the following configure:
|
|
|
|
./config ${CONFIG_OPTIONS}
|
|
|
|
The IDEA and RC5 algorithms are disabled due to patent and/or
|
|
licensing issues.
|
|
EOF
|
|
}
|
|
|
|
function create_profile_files()
|
|
{
|
|
PROFILE_DIR=${INSTALL_PREFIX}/etc/profile.d
|
|
|
|
mkdir -p $PROFILE_DIR
|
|
cat > ${PROFILE_DIR}/openssl.sh <<- "EOF"
|
|
export MANPATH="${MANPATH}:/usr/ssl/man"
|
|
EOF
|
|
cat > ${PROFILE_DIR}/openssl.csh <<- "EOF"
|
|
if ( $?MANPATH ) then
|
|
setenv MANPATH "${MANPATH}:/usr/ssl/man"
|
|
else
|
|
setenv MANPATH ":/usr/ssl/man"
|
|
endif
|
|
EOF
|
|
}
|
|
|
|
if [ -z "${SUBVERSION}" ]
|
|
then
|
|
echo "Usage: $0 subversion"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f config ]
|
|
then
|
|
echo "You must start this script in the OpenSSL toplevel source dir."
|
|
exit 1
|
|
fi
|
|
|
|
./config ${CONFIG_OPTIONS}
|
|
|
|
get_openssl_version
|
|
|
|
make depend || exit 1
|
|
|
|
make || exit 1
|
|
|
|
base_install
|
|
|
|
doc_install
|
|
|
|
certs_install
|
|
|
|
create_cygwin_readme
|
|
|
|
create_profile_files
|
|
|
|
cd ${INSTALL_PREFIX}
|
|
chmod u+w usr/lib/engines/*.so
|
|
strip usr/bin/*.exe usr/bin/*.dll usr/lib/engines/*.so
|
|
chmod u-w usr/lib/engines/*.so
|
|
|
|
# Runtime package
|
|
tar cjf libopenssl${SHLIB_VERSION_NUMBER//[!0-9]/}-${VERSION}-${SUBVERSION}.tar.bz2 \
|
|
usr/bin/cyg*dll
|
|
# Base package
|
|
find etc usr/bin/openssl.exe usr/bin/c_rehash usr/lib/engines usr/share/doc \
|
|
usr/ssl/certs usr/ssl/man/man[157] usr/ssl/misc usr/ssl/openssl.cnf \
|
|
usr/ssl/private \
|
|
-empty -o \! -type d |
|
|
tar cjfT openssl-${VERSION}-${SUBVERSION}.tar.bz2 -
|
|
# Development package
|
|
find usr/include usr/lib/*.a usr/lib/pkgconfig usr/ssl/man/man3 \
|
|
-empty -o \! -type d |
|
|
tar cjfT openssl-devel-${VERSION}-${SUBVERSION}.tar.bz2 -
|
|
|
|
ls -l openssl-${VERSION}-${SUBVERSION}.tar.bz2
|
|
ls -l openssl-devel-${VERSION}-${SUBVERSION}.tar.bz2
|
|
ls -l libopenssl${SHLIB_VERSION_NUMBER//[!0-9]/}-${VERSION}-${SUBVERSION}.tar.bz2
|
|
|
|
cleanup
|
|
|
|
exit 0
|