| #!/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 |