blob: cfdb04d2a4820320297fec3a0db341771d2e6d4f [file] [log] [blame]
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +00001#!/bin/bash
2#
3# This script configures, builds and packs the binary package for
4# the Cygwin net distribution version of OpenSSL
5#
6
7# Uncomment when debugging
8#set -x
9
Dr. Stephen Hensonff094bc2009-11-11 19:05:20 +000010CONFIG_OPTIONS="--prefix=/usr shared zlib no-idea no-rc5"
Andy Polyakov1e024f02010-08-24 21:51:08 +000011INSTALL_PREFIX=/tmp/install/INSTALL
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000012
13VERSION=
Andy Polyakov86963f42012-03-31 11:06:46 +000014SHLIB_VERSION_NUMBER=
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000015SUBVERSION=$1
16
17function cleanup()
18{
19 rm -rf ${INSTALL_PREFIX}/etc
20 rm -rf ${INSTALL_PREFIX}/usr
21}
22
23function get_openssl_version()
24{
Nils Larschcd202fe2005-04-27 08:56:15 +000025 eval `grep '^VERSION=' Makefile`
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000026 if [ -z "${VERSION}" ]
27 then
Nils Larschcd202fe2005-04-27 08:56:15 +000028 echo "Error: Couldn't retrieve OpenSSL version from Makefile."
29 echo " Check value of variable VERSION in Makefile."
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000030 exit 1
31 fi
Andy Polyakov86963f42012-03-31 11:06:46 +000032 eval `grep '^SHLIB_VERSION_NUMBER=' Makefile`
33 if [ -z "${SHLIB_VERSION_NUMBER}" ]
34 then
35 echo "Error: Couldn't retrieve OpenSSL shared lib version from Makefile."
36 echo " Check value of variable SHLIB_VERSION_NUMBER in Makefile."
37 exit 1
38 fi
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000039}
40
41function base_install()
42{
43 mkdir -p ${INSTALL_PREFIX}
44 cleanup
45 make install INSTALL_PREFIX="${INSTALL_PREFIX}"
46}
47
48function doc_install()
49{
Richard Levitted1360f62004-09-28 13:10:16 +000050 DOC_DIR=${INSTALL_PREFIX}/usr/share/doc/openssl
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000051
52 mkdir -p ${DOC_DIR}
53 cp CHANGES CHANGES.SSLeay INSTALL LICENSE NEWS README ${DOC_DIR}
54
55 create_cygwin_readme
56}
57
Richard Levitte447aa492005-05-21 16:41:34 +000058function certs_install()
59{
60 CERTS_DIR=${INSTALL_PREFIX}/usr/ssl/certs
61
62 mkdir -p ${CERTS_DIR}
63 cp -rp certs/* ${CERTS_DIR}
64}
65
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000066function create_cygwin_readme()
67{
Richard Levitted1360f62004-09-28 13:10:16 +000068 README_DIR=${INSTALL_PREFIX}/usr/share/doc/Cygwin
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000069 README_FILE=${README_DIR}/openssl-${VERSION}.README
70
71 mkdir -p ${README_DIR}
72 cat > ${README_FILE} <<- EOF
73 The Cygwin version has been built using the following configure:
74
75 ./config ${CONFIG_OPTIONS}
76
Dr. Stephen Hensonff094bc2009-11-11 19:05:20 +000077 The IDEA and RC5 algorithms are disabled due to patent and/or
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +000078 licensing issues.
79 EOF
80}
81
82function create_profile_files()
83{
84 PROFILE_DIR=${INSTALL_PREFIX}/etc/profile.d
85
86 mkdir -p $PROFILE_DIR
87 cat > ${PROFILE_DIR}/openssl.sh <<- "EOF"
88 export MANPATH="${MANPATH}:/usr/ssl/man"
89 EOF
90 cat > ${PROFILE_DIR}/openssl.csh <<- "EOF"
91 if ( $?MANPATH ) then
92 setenv MANPATH "${MANPATH}:/usr/ssl/man"
93 else
94 setenv MANPATH ":/usr/ssl/man"
95 endif
96 EOF
97}
98
99if [ -z "${SUBVERSION}" ]
100then
101 echo "Usage: $0 subversion"
102 exit 1
103fi
104
105if [ ! -f config ]
106then
107 echo "You must start this script in the OpenSSL toplevel source dir."
108 exit 1
109fi
110
111./config ${CONFIG_OPTIONS}
112
113get_openssl_version
114
Richard Levittee20afbb2002-11-14 12:39:39 +0000115make depend || exit 1
116
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +0000117make || exit 1
118
119base_install
120
121doc_install
122
Richard Levitte447aa492005-05-21 16:41:34 +0000123certs_install
124
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +0000125create_cygwin_readme
126
127create_profile_files
128
129cd ${INSTALL_PREFIX}
Richard Levitted996a9a2005-06-23 20:55:38 +0000130chmod u+w usr/lib/engines/*.so
131strip usr/bin/*.exe usr/bin/*.dll usr/lib/engines/*.so
132chmod u-w usr/lib/engines/*.so
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +0000133
134# Runtime package
Andy Polyakov86963f42012-03-31 11:06:46 +0000135tar cjf libopenssl${SHLIB_VERSION_NUMBER//[!0-9]/}-${VERSION}-${SUBVERSION}.tar.bz2 \
Andy Polyakov1e024f02010-08-24 21:51:08 +0000136 usr/bin/cyg*dll
137# Base package
138find etc usr/bin/openssl.exe usr/bin/c_rehash usr/lib/engines usr/share/doc \
139 usr/ssl/certs usr/ssl/man/man[157] usr/ssl/misc usr/ssl/openssl.cnf \
140 usr/ssl/private \
Richard Levitte447aa492005-05-21 16:41:34 +0000141 -empty -o \! -type d |
Richard Levitte62be0032003-01-13 14:47:52 +0000142tar cjfT openssl-${VERSION}-${SUBVERSION}.tar.bz2 -
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +0000143# Development package
Richard Levitte447aa492005-05-21 16:41:34 +0000144find usr/include usr/lib/*.a usr/lib/pkgconfig usr/ssl/man/man3 \
145 -empty -o \! -type d |
Richard Levitte62be0032003-01-13 14:47:52 +0000146tar cjfT openssl-devel-${VERSION}-${SUBVERSION}.tar.bz2 -
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +0000147
Richard Levitte62be0032003-01-13 14:47:52 +0000148ls -l openssl-${VERSION}-${SUBVERSION}.tar.bz2
149ls -l openssl-devel-${VERSION}-${SUBVERSION}.tar.bz2
Andy Polyakov86963f42012-03-31 11:06:46 +0000150ls -l libopenssl${SHLIB_VERSION_NUMBER//[!0-9]/}-${VERSION}-${SUBVERSION}.tar.bz2
Lutz Jänicke8b2f9cd2002-04-21 17:54:03 +0000151
152cleanup
153
154exit 0