summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko (leap communications) <kali@leap.se>2016-10-19 16:41:49 -0400
committerKali Kaneko (leap communications) <kali@leap.se>2016-10-19 16:41:49 -0400
commit446280b452218569978da2a6d9ba5f8ef3e501b6 (patch)
tree400359b6eadd5d601c6dd9cf87fbb43c35146dd2
parent42d14aad48e955642f9b4e36af42b6f347821b51 (diff)
[pkg] re-add scripts to build openvpn and gnupg binaries
-rwxr-xr-xpkg/thirdparty/gnupg/build_gnupg.sh68
-rw-r--r--pkg/thirdparty/openvpn/README6
-rw-r--r--pkg/thirdparty/openvpn/Sources4
-rwxr-xr-xpkg/thirdparty/openvpn/build.zsh.old191
-rwxr-xr-xpkg/thirdparty/openvpn/openvpn.sh123
5 files changed, 392 insertions, 0 deletions
diff --git a/pkg/thirdparty/gnupg/build_gnupg.sh b/pkg/thirdparty/gnupg/build_gnupg.sh
new file mode 100755
index 0000000..e125b68
--- /dev/null
+++ b/pkg/thirdparty/gnupg/build_gnupg.sh
@@ -0,0 +1,68 @@
+#!/usr/bin/env sh
+
+# ----------------------------------------------------------
+# Compile gnupg binary, to distribute with Bitmask bundles.
+# ----------------------------------------------------------
+# You will need to import the keys for the gnupg developers into your keyring,
+# see https://www.gnupg.org/download/integrity_check.html
+# and https://www.gnupg.org/signature_key.html
+
+# For osx specific details, see:
+# http://macgpg.sourceforge.net/docs/howto-build-gpg-osx.txt.asc
+# osx doesn't allow to build static binaries, see:
+# http://stackoverflow.com/questions/5259249/creating-static-mac-os-x-c-build
+
+set -e
+set -x
+
+gnupg_version="gnupg-1.4.20"
+url="ftp://ftp.gnupg.org/gcrypt/gnupg/$gnupg_version.tar.bz2"
+
+platform='unknown'
+unamestr=`uname`
+if [[ "$unamestr" == 'Linux' ]]; then
+ platform='linux'
+elif [[ "$unamestr" == 'Darwin' ]]; then
+ platform='osx'
+fi
+
+function prepare_source()
+{
+ wget -c $url -O $gnupg_version.tar.bz2;
+ wget -c $url.sig -O $gnupg_version.tar.bz2.sig;
+ #gpg --verify $gnupg_version.tar.bz2.sig $gnupg_version.tar.bz2;
+ tar -xjf $gnupg_version.tar.bz2;
+ cd $gnupg_version;
+}
+
+
+function build_static_gpg()
+{
+ ./configure CFLAGS="-static";
+ make;
+}
+
+function build_gpg()
+{
+ ./configure;
+ make;
+}
+
+function copy_to_builddir()
+{
+ mkdir -p ~/leap_thirdparty_build
+ cp g10/gpg ~/leap_thirdparty_build
+}
+
+function main()
+{
+ if [[ $platform == 'linux' ]]; then
+ (prepare_source; build_static_gpg; copy_to_builddir)
+ elif [[ $platform == 'osx' ]]; then
+ (prepare_source; build_gpg; copy_to_builddir)
+ fi
+
+}
+
+main "$@"
+
diff --git a/pkg/thirdparty/openvpn/README b/pkg/thirdparty/openvpn/README
new file mode 100644
index 0000000..bf2205c
--- /dev/null
+++ b/pkg/thirdparty/openvpn/README
@@ -0,0 +1,6 @@
+OpenVPN binary, build scripts
+Works using a GCC minGW32 cross-compiler on Debian/Ubuntu
+Produces a working MS Windows executable
+openvpn.exe: PE32 executable (DLL) (console) Intel 80386, for MS Windows
+goes smooth for the 99%, might still need some slapping the flags around now and then
+ -jrml
diff --git a/pkg/thirdparty/openvpn/Sources b/pkg/thirdparty/openvpn/Sources
new file mode 100644
index 0000000..e2fe7bb
--- /dev/null
+++ b/pkg/thirdparty/openvpn/Sources
@@ -0,0 +1,4 @@
+lzo -2.06 .tar.gz
+opensc -0.12.2 .tar.gz
+openssl -1.0.1c .tar.gz
+polarssl -1.1.4 .tgz
diff --git a/pkg/thirdparty/openvpn/build.zsh.old b/pkg/thirdparty/openvpn/build.zsh.old
new file mode 100755
index 0000000..b36717c
--- /dev/null
+++ b/pkg/thirdparty/openvpn/build.zsh.old
@@ -0,0 +1,191 @@
+#!/bin/zsh
+#
+# Copyright (C) 2012 Denis Roio <jaromil@dyne.org>
+#
+# This source code is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This source code is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# Please refer to the GNU Public License for more details.
+#
+# You should have received a copy of the GNU Public License along with
+# this source code; if not, write to:
+# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+REPO="http://files.dyne.org/leap/openvpn/sources"
+TOPSRC=`pwd`
+QUIET=0
+DEBUG=0
+
+
+autoload colors; colors
+# standard output message routines
+# it's always useful to wrap them, in case we change behaviour later
+notice() { if [[ $QUIET == 0 ]]; then print "$fg_bold[green][*]$fg_no_bold[default] $1" >&2; fi }
+error() { if [[ $QUIET == 0 ]]; then print "$fg[red][!]$fg[default] $1" >&2; fi }
+func() { if [[ $DEBUG == 1 ]]; then print "$fg[blue][D]$fg[default] $1" >&2; fi }
+act() {
+ if [[ $QUIET == 0 ]]; then
+ if [ "$1" = "-n" ]; then
+ print -n "$fg_bold[white] . $fg_no_bold[default] $2" >&2;
+ else
+ print "$fg_bold[white] . $fg_no_bold[default] $1" >&2;
+ fi
+ fi
+}
+
+{ test "$1" = "clean" } && {
+ notice "Cleaning up all build in ${TOPSRC}"
+ for src in `cat Sources | awk '
+/^#/ {next}
+/^./ { print $1 }'`; do
+ { test "$src" != "" } && { rm -rf "${src}" }
+ done
+ act "Done."
+ return 0
+}
+
+os="`uname -s`"
+target="$1"
+notice "OpenVPN build on $os for $target in ${TOPSRC}"
+
+prepare_sources() {
+ notice "Preparing sources"
+ # look for a file names "Sources", download and decompress entries
+ # format of file: name version compression (complete filename when merged)
+ { test -r Sources } || {
+ error "Sources not found, nothing to build here"
+ return 1
+ }
+ for src in `cat Sources | awk '
+/^#/ {next}
+/^./ { print $1 ";" $2 ";" $3 }'`; do
+ name="${src[(ws:;:)1]}"
+ ver="${src[(ws:;:)2]}"
+ arch="${src[(ws:;:)3]}"
+ file="${name}${ver}${arch}"
+ func "preparing source for ${name}${ver}"
+
+ { test "$1" != "" } && {
+ test "$1" != "$name" } && {
+ continue }
+
+ # download the file
+ { test -r ${file} } || {
+ act "downloading ${file}"
+ curl ${REPO}/${file} -o ${file}
+ }
+ # decompress the file
+ { test -r ${name} } || {
+ act "decompressing ${name}"
+ case $arch in
+ ## BARE SOURCE
+ .tar.gz) tar xfz ${file}; mv ${name}${ver} ${name} ;;
+ .tar.bz2) tar xfj ${file}; mv ${name}${ver} ${name} ;;
+ .tgz) tar xfz ${file}; mv ${name}${ver} ${name} ;;
+ *) error "compression not supported: $arch"
+ esac
+ }
+ act "${name} source ready"
+ done
+}
+
+act "Downloading sources"
+
+# git clone latest openvpn
+{ test -r openvpn } || { git clone https://github.com/OpenVPN/openvpn.git }
+
+case "$os" in
+ Darwin)
+ prepare_sources lzo
+ prepare_sources polarssl
+ ;;
+ Linux) # Cross-compile for Win32
+ prepare_sources lzo
+ prepare_sources opensc
+ prepare_sources openssl
+ # tap windows
+ { test -r tap-windows } || { git clone https://github.com/OpenVPN/tap-windows.git }
+ ;;
+esac
+
+notice "Sources ready, now compiling..."
+LOG="`pwd`/build.log"; touch ${LOG}
+act "logs saved in build.log"
+
+case "$target" in
+ osx)
+ { test -r polarssl/library/libpolarssl.a } || {
+ act "building PolarSSL..."
+ pushd polarssl
+ CC=clang cmake . >> ${LOG}
+ make -C library clean
+ cat CMakeCache.txt | awk '
+/^CMAKE_C_COMPILER/ { print "CMAKE_C_COMPILER:FILEPATH=/usr/bin/clang"; next }
+/^CMAKE_BUILD_TYPE/ { print $1 "Release"; next }
+/^CMAKE_C_FLAGS:STRING/ { print "CMAKE_C_FLAGS:STRING=-arch x86_64 -arch i386"; next }
+{ print $0 }
+' > CMakeCache.leap
+ cp CMakeCache.leap CMakeCache.txt
+ make -C library >> ${LOG}
+ popd
+ act "done."
+ }
+
+ act "building OpenVPN"
+ pushd openvpn
+ CC=clang CFLAGS="-arch x86_64 -arch i386" \
+ LZO_LIBS="/opt/local/lib/liblzo2.a" LZO_CFLAGS="-I/opt/local/include" \
+ POLARSSL_CFLAGS="-I${TOPSRC}/polarssl/include" \
+ POLARSSL_LIBS="${TOPSRC}/polarssl/library/libpolarssl.a" \
+ ./configure --with-crypto-library=polarssl >> ${LOG}
+ make src/openvpn/openvpn
+ popd
+ act "done."
+ ;;
+
+ win32)
+ { test -r lzo/src/liblzo2.la } || { pushd lzo
+ act "building LZO lib"
+ ./configure --host=i586-mingw32msvc >> ${LOG}
+ make >> ${LOG}; popd }
+ # openssl
+ { test -r openssl/libssl.a } || {
+ act "building OpenSSL lib"
+ pushd openssl
+ ./Configure --cross-compile-prefix=i586-mingw32msvc- mingw >> ${LOG}
+ make ${LOG}; popd }
+
+ pushd openvpn
+ act "building latest OpenVPN"
+ { test -r configure } || {
+ sed -i -e 's/-municode//' src/openvpn/Makefile.am
+ autoreconf -i >> ${LOG}
+ }
+ CFLAGS="-I/usr/i586-mingw32msvc/include/ddk -D_WIN32_WINNT=0x0501" \
+ LZO_LIBS="${TOPSRC}/lzo/src/liblzo2.la" \
+ LZO_CFLAGS="-I${TOPSRC}/lzo/include" \
+ TAP_CFLAGS="-I${TOPSRC}/tap-windows/src" \
+ OPENSSL_SSL_CFLAGS="-I${TOPSRC}/openssl/include" \
+ OPENSSL_CRYPTO_CFLAGS="-I${TOPSRC}/openssl/crypto" \
+ OPENSSL_SSL_LIBS="${TOPSRC}/openssl/libssl.a" \
+ OPENSSL_CRYPTO_LIBS="${TOPSRC}/openssl/libcrypto.a" \
+ ./configure --host=i586-mingw32msvc >> ${LOG}
+ make >> ${LOG}
+ popd
+
+ act "If OpenVPN build reports a final error on linkage, it might be due to a libtool bug"
+ act "(something like undefined reference to _WinMain@16)"
+ act "You need to go inside openvpn/src/openvpn and issue the last compile line manually"
+ act "adding an flat '-shared' at the end of it, then do 'cp .libs/openvpn.exe .'"
+ act "Happy hacking."
+ ;;
+ *)
+ error "Unknown target: $target"
+ ;;
+esac
diff --git a/pkg/thirdparty/openvpn/openvpn.sh b/pkg/thirdparty/openvpn/openvpn.sh
new file mode 100755
index 0000000..db63c98
--- /dev/null
+++ b/pkg/thirdparty/openvpn/openvpn.sh
@@ -0,0 +1,123 @@
+#!/bin/bash
+
+set -e
+set -x
+
+mkdir -p ~/openvpn && cd ~/openvpn
+
+BASE=`pwd`
+SRC=$BASE/src
+WGET="wget --prefer-family=IPv4"
+DEST=$BASE/stuff
+LDFLAGS="-L$DEST/lib -Wl"
+CPPFLAGS="-I$DEST/include"
+CFLAGS="-O3"
+CXXFLAGS=$CFLAGS
+CONFIGURE="./configure --prefix=/stuff"
+MAKE="make -j2"
+mkdir -p $SRC
+
+######## ####################################################################
+# ZLIB # ####################################################################
+######## ####################################################################
+
+mkdir $SRC/zlib && cd $SRC/zlib
+
+if [ ! -f zlib-1.2.8.tar.gz ]; then
+ $WGET http://zlib.net/zlib-1.2.8.tar.gz
+fi
+tar zxvf zlib-1.2.8.tar.gz
+cd zlib-1.2.8
+
+LDFLAGS=$LDFLAGS \
+CPPFLAGS=$CPPFLAGS \
+CFLAGS=$CFLAGS \
+CXXFLAGS=$CXXFLAGS \
+./configure \
+--prefix=/stuff
+
+$MAKE
+make install DESTDIR=$BASE
+
+########### #################################################################
+# OPENSSL # #################################################################
+########### #################################################################
+
+#mkdir -p $SRC/openssl && cd $SRC/openssl
+#if [ ! -f openssl-1.0.2f.tar.gz ]; then
+# $WGET https://www.openssl.org/source/openssl-1.0.2f.tar.gz
+#fi
+#tar zxvf openssl-1.0.2f.tar.gz
+#cd openssl-1.0.2f
+
+#./Configure darwin64-x86_64-cc \
+#-Wl \
+#--prefix=/opts zlib \
+#--with-zlib-lib=$DEST/lib \
+#--with-zlib-include=$DEST/include
+
+#$MAKE
+#make install INSTALLTOP=$DEST OPENSSLDIR=$DEST/ssl
+
+############ #################################################################
+# POLARSSL # #################################################################
+############ #################################################################
+
+mkdir -p $SRC/polarssl && cd $SRC/polarssl
+if [ ! -f polarssl-1.3.9-gpl.tgz ]; then
+ $WGET https://tls.mbed.org/download/polarssl-1.3.9-gpl.tgz
+fi
+tar zxvf polarssl-1.3.9-gpl.tgz
+cd polarssl-1.3.9
+mkdir build
+cd build
+cmake ..
+$MAKE
+make install DESTDIR=$BASE
+
+######## ####################################################################
+# LZO2 # ####################################################################
+######## ####################################################################
+
+mkdir $SRC/lzo2 && cd $SRC/lzo2
+if [ ! -f lzo-2.09.tar.gz ]; then
+ $WGET http://www.oberhumer.com/opensource/lzo/download/lzo-2.09.tar.gz
+fi
+tar zxvf lzo-2.09.tar.gz
+cd lzo-2.09
+
+LDFLAGS=$LDFLAGS \
+CPPFLAGS=$CPPFLAGS \
+CFLAGS=$CFLAGS \
+CXXFLAGS=$CXXFLAGS \
+$CONFIGURE
+
+$MAKE
+make install DESTDIR=$BASE
+
+########### #################################################################
+# OPENVPN # #################################################################
+########### #################################################################
+
+mkdir $SRC/openvpn && cd $SRC/openvpn
+if [ ! -f openvpn-2.3.10.tar.gz ]; then
+ $WGET http://swupdate.openvpn.org/community/releases/openvpn-2.3.10.tar.gz
+fi
+tar zxvf openvpn-2.3.10.tar.gz
+cd openvpn-2.3.10
+
+# OPENSSL_SSL_LIBS=$DEST/lib/
+
+POLARSSL_CFLAGS=-I$DEST/usr/local/include \
+POLARSSL_LIBS=$DEST/lib/libpolarssl.a \
+LDFLAGS=$LDFLAGS \
+CPPFLAGS=$CPPFLAGS \
+CFLAGS=$CFLAGS \
+CXXFLAGS=$CXXFLAGS \
+$CONFIGURE \
+--disable-plugin-auth-pam \
+--enable-password-save \
+--with-crypto-library=polarssl
+
+$MAKE LIBS="-all-static -lssl -lcrypto -lz -llzo2"
+make install DESTDIR=$BASE/openvpn