summaryrefslogtreecommitdiffstats
path: root/encap/epkg/Makefile
blob: ddd19f7f8078b1c3cf3208b6ff5e213d0967c7cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# $Id$

.PHONY : log all clean distclean install pkgconfig zlib openssl libtar curl fget expat epkg
.SUFFIXES : 

BASEDIR = /usr/local
ENCAPDIR = ${BASEDIR}/encap
PREFIX = /tmp/epkg-static-libs
PATH = ${PREFIX}/bin:/usr/sfw/bin:/usr/ccs/bin:/usr/local/bin:/opt/csw/bin:/usr/sbin:/usr/bin:/bin
CC = gcc -static-libgcc
LDFLAGS = -L${PREFIX}/lib
CPPFLAGS = -I${PREFIX}/include
LD_LIBRARY_PATH = ${PREFIX}/lib
LIBPATH = ${PREFIX}/lib
PKG_CONFIG_PATH = ${PREFIX}/lib/pkgconfig
ENCAP_CONTACT = dclark@pobox.com
export PATH CC LDFLAGS CPPFLAGS LD_LIBRARY_PATH LIBPATH PKG_CONFIG_PATH ENCAP_CONTACT

PKGCONFIG = pkg-config-0.22
ZLIB = zlib-1.2.3
LIBTAR = libtar-1.2.12
OPENSSL = openssl-0.9.8e
CURL = curl-7.16.4
FGET = fget-1.3.3
EXPAT = expat-2.0.1
EPKG = epkg-2.3.9

# Get Platform for GNU/Linux distributions...
UNAME := $(shell uname)

ifeq ($(UNAME),Linux)
DISTRO := $(shell cat /etc/issue | grep ^[a-zA-Z] | head -1)
UNAMEM := $(shell uname -m)
endif

## Get OS for GNU/Linux distributions...
ifeq ($(DISTRO),Debian GNU/Linux 3.1 \n \l)
OS = linux_debian_sarge
endif

ifeq ($(DISTRO),Debian GNU/Linux 4.0 \n \l)
OS = linux_debian_etch
endif

ifeq ($(DISTRO),Debian GNU/Linux testing/unstable \n \l)
OS = linux_debian_sid
endif

ifeq ($(DISTRO),Ubuntu 6.06.1 LTS \n \l)
OS = linux_ubuntu_dapper
endif

ifeq ($(DISTRO),Red Hat Linux release 6.0 (Hedwig))
OS = linux_redhat_60
endif

ifeq ($(DISTRO),Red Hat Linux release 7.2 (Enigma))
OS = linux_redhat_72
endif

ifeq ($(DISTRO),Welcome to SuSE SLES 8 (powered by UnitedLinux 1.0) (i586))
OS = linux_suse_sles8
endif

ifeq ($(DISTRO),Welcome to SUSE Linux Enterprise Server 10 (i586) - Kernel \r (\l).)
OS = linux_suse_sles10
endif

ifeq ($(DISTRO),Welcome to SUSE Linux Enterprise Server 10 (i686) - Kernel \r (\l).)
OS = linux_suse_sles10
endif

ifeq ($(DISTRO),Welcome to SUSE Linux Enterprise Server 10 (x86_64) - Kernel \r (\l).)
OS = linux_suse_sles10
endif

ifeq ($(DISTRO),Red Hat Enterprise Linux AS release 4 (Nahant Update 5))
OS = linux_redhat_rhel4
endif

ifeq ($(DISTRO),Red Hat Enterprise Linux AS release 4 (Nahant Update 4))
OS = linux_redhat_rhel4
endif

## Get ARCH for GNU/Linux distributions...
ARCH = ix86
ifeq ($(UNAMEM),x86_64)
ARCH = x86_64
endif

## Finally, set PLATFORM for GNU/Linux distributions...
PLATFORM = 
ifeq ($(UNAME),Linux)
PLATFORM = -p ${ARCH}-${OS}
endif

log:
	( $(MAKE) epkg.done > ./make.log 2>&1 ) &
	tail -f make.log
	
all: epkg.done

.DELETE_ON_ERROR : # delete the target of a rule if it has changed and its
                   # commands exit with a nonzero exit status

clean:
	-rm *.done
	-rm -rf ${PREFIX}

distclean: clean
	for D in ${PKGCONFIG} ${ZLIB} ${LIBTAR} ${OPENSSL} ${CURL} ${FGET} ${EXPAT} ${EPKG}; do (cd $$D && printf "In $$D \n" && (make clean 2>/dev/null || true) && (make distclean 2>/dev/null || true)); done
	if [ -f ${CURL}/lib/ca-bundle.crt.orig ]; then mv ${CURL}/lib/ca-bundle.crt.orig ${CURL}/lib/ca-bundle.crt; fi
	cd ${OPENSSL} && if [ -f config.orig ]; then mv config.orig config; fi
	-rm /usr/local/etc/epkg-ca-bundle.pem
	-rm /usr/local/etc/mkencap_environment
	-rm epkg-*-encap-*-*.tar.gz

pkgconfig.done:
	cd ${PKGCONFIG} && ./configure --prefix=${PREFIX} && $(MAKE) && $(MAKE) install
	touch pkgconfig.done

zlib.done: pkgconfig.done
	cd ${ZLIB} && prefix=${PREFIX} CC=gcc ./configure && $(MAKE) && $(MAKE) install
	touch zlib.done
	
openssl.done: zlib.done
	cd ${OPENSSL} && if [ -f config.orig ]; then cp config.orig config; fi
	cd ${OPENSSL} && cat config | sed s:CC\=ccc:CC\=gcc:g | sed s:CC\=cc:CC\=gcc:g > config.bcfg2
	cd ${OPENSSL} && mv config config.orig
	cd ${OPENSSL} && cp config.bcfg2 config
	cd ${OPENSSL} && chmod 755 config
	cd ${OPENSSL} && LDFLAGS="-all-static $LDFLAGS" ./config --prefix="${PREFIX}" zlib no-shared no-asm -L${PREFIX}/lib -I${PREFIX}/include && $(MAKE) && $(MAKE) install
	touch openssl.done

libtar.done: openssl.done
	cd ${LIBTAR} && ./configure --disable-encap --disable-epkg-install --prefix=${PREFIX} && $(MAKE) && $(MAKE) install
	touch libtar.done

curl.done: libtar.done
	if [ -f ${CURL}/lib/ca-bundle.crt ]; then mv ${CURL}/lib/ca-bundle.crt ${CURL}/lib/ca-bundle.crt.orig; fi
	cp cacert.pem ${CURL}/lib/ca-bundle.crt
	cd ${CURL} && ./configure --with-ssl --disable-ipv6 --disable-shared --enable-static --prefix=${PREFIX} --sysconfdir=/usr/local/etc --with-ca-bundle=/usr/local/etc/epkg-ca-bundle.pem && $(MAKE) && $(MAKE) install
	if [ -f ${CURL}/lib/ca-bundle.crt.orig ]; then mv ${CURL}/lib/ca-bundle.crt.orig ${CURL}/lib/ca-bundle.crt; fi
	${PREFIX}/bin/curl -V | xargs echo | grep zlib | grep ftp | grep http | grep libz | grep ftps | grep https
	touch curl.done

fget.done: curl.done
	cd ${FGET} && ./configure --disable-encap --disable-epkg-install --prefix=${PREFIX} && $(MAKE) && $(MAKE) install
	touch fget.done

expat.done: fget.done
	cd ${EXPAT} && ./configure --disable-shared --prefix=${PREFIX} && $(MAKE) && $(MAKE) install
	touch expat.done

epkg.done: expat.done
	test -d $(ENCAPDIR)/$(EPKG) && rm -rf $(ENCAPDIR)/$(EPKG) || true
	-rm /usr/local/etc/epkg-ca-bundle.pem
	-rm /usr/local/etc/mkencap_environment
	-rm epkg-*-encap-*-*.tar.gz
	cd ${EPKG} && ./configure && $(MAKE) && (rm -rf /usr/local/encap/epkg-2* 2>/dev/null || true) && $(MAKE) install
	cp cacert.pem /usr/local/encap/${EPKG}/epkg-ca-bundle.pem
	printf 'if [ ! -f "$${ENCAP_TARGET}/etc/epkg-ca-bundle.pem" ]; then\n\techo "installing: $${ENCAP_TARGET}/etc/epkg-ca-bundle.pem";\n\tcp "$${ENCAP_SOURCE}/$${ENCAP_PKGNAME}/epkg-ca-bundle.pem" "$${ENCAP_TARGET}/etc/epkg-ca-bundle.pem";\nfi\n' >> $(ENCAPDIR)/$(EPKG)/postinstall
	$(ENCAPDIR)/$(EPKG)/bin/mkencap $(PLATFORM) -ef $(EPKG)
	$(ENCAPDIR)/$(EPKG)/bin/mkencap $(PLATFORM) -c $(EPKG)
	$(ENCAPDIR)/$(EPKG)/bin/epkg -f -r epkg
	-rm /usr/local/etc/epkg-ca-bundle.pem
	-rm /usr/local/etc/mkencap_environment
	$(ENCAPDIR)/$(EPKG)/bin/epkg -f -i epkg
	-$(ENCAPDIR)/$(EPKG)/bin/epkg -c
	test -f /usr/local/etc/epkg-ca-bundle.pem
	test -f /usr/local/etc/mkencap_environment
	touch epkg.done