-
Notifications
You must be signed in to change notification settings - Fork 2
/
Makefile.xampp
108 lines (89 loc) · 3.42 KB
/
Makefile.xampp
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
############################ OBSOLETE ################################
# XAMPP is UNMAINTAINED and replaced by bitnami. I keep this here as a
# reference because it does interesting stuff with chroot jailing the
# server in order to contain the system in a directory.
######################################################################
# All xampp related stuff are here.
## DOC
# XAMPP_SCOPE can be local or global, in the local case we are
# chrooting to fs. In the global case we need actual root access.
XAMPP_SCOPE=local
ifeq ($(XAMPP_SCOPE),local)
XAMPP_ROOTACCESS=fakechroot fakeroot chroot $(FILESYSTEM_ROOT)
XAMPP_INSTALLER=$(FSROOT_TMP)/xampp.run #Should be somewhere where ROOTACCESS will interpret as /tmp/xampp.run
else
XAMPP_ROOTACCESS=fakeroot
XAMPP_INSTALLER=/tmp/xampp.run
endif
xampp.run-raw-url=http://downloads.sourceforge.net/project/xampp/XAMPP%20Linux/1.8.3/xampp-linux-x64-1.8.3-1-installer.run
RAW_PROJECTS += xampp.run
$(XAMPP_INSTALLER): $(DRAFTS_DIR)/raw-xampp.run | $(FSROOT_TMP)
cp $(DRAFTS_DIR)/raw-xampp.run $@
ifeq ($(XAMPP_SCOPE),local)
prepare-env: jail
else
prepare-env:
endif
jail: jail-bind \
$(FILESYSTEM_ROOT)/bin/bash \
$(FILESYSTEM_ROOT)/bin/ln \
$(FILESYSTEM_ROOT)/bin/ls \
$(FILESYSTEM_ROOT)/usr/bin/chown \
$(FILESYSTEM_ROOT)/usr/bin/rm \
$(FILESYSTEM_ROOT)/usr/bin/whoami \
$(FILESYSTEM_ROOT)/usr/bin/useradd \
$(FILESYSTEM_ROOT)/usr/bin/groupadd \
$(FILESYSTEM_ROOT)/usr/bin/gawk \
$(FILESYSTEM_ROOT)/usr/bin/egrep \
$(FILESYSTEM_ROOT)/usr/bin/id \
$(FILESYSTEM_ROOT)/usr/bin/test \
$(FILESYSTEM_ROOT)/usr/bin/netstat \
$(FILESYSTEM_ROOT)/usr/bin/expr \
$(FILESYSTEM_ROOT)/usr/bin/cat \
$(FILESYSTEM_ROOT)/bin/uname \
$(FILESYSTEM_ROOT)/bin/sleep \
$(FILESYSTEM_ROOT)/usr/bin/tail \
$(FILESYSTEM_ROOT)/usr/bin/hostname \
$(FILESYSTEM_ROOT)/usr/bin/httpd \
$(FILESYSTEM_ROOT)/bin/sh \
$(FILESYSTEM_ROOT)/bin/su \
$(FILESYSTEM_ROOT)/bin/suexec \
$(FILESYSTEM_ROOT)/etc/group \
$(FILESYSTEM_ROOT)/etc/hosts \
$(FILESYSTEM_ROOT)/etc/passwd
# Here we actually need sudo.
jail-bind: | $(FSROOT_PROC) $(FSROOT_DEV) $(FSROOT_SYS)
mount -l | grep $(FSROOT_PROC) > /dev/null || sudo mount -o bind /proc $(FSROOT_PROC)
mount -l | grep $(FSROOT_DEV) > /dev/null || sudo mount -o bind /dev $(FSROOT_DEV)
mount -l | grep $(FSROOT_SYS) > /dev/null || sudo mount -o bind /sys $(FSROOT_SYS)
CMD=/bin/bash
# Zsh is a bit sneaky with it's libraries so I will just use bash.
jail-shell: jail
fakechroot fakeroot chroot $(FILESYSTEM_ROOT) $(CMD)
%-symbolic-deps:
for i in $$(ldd `which $*` | grep -o "/[^ ]*"); do \
if ! [ -x $$i ]; then \
mkdir -p $(FILESYSTEM_ROOT)/$$(dirname $$i) && cp $$i $(FILESYSTEM_ROOT)/$$i; \
fi \
done;
$(FILESYSTEM_ROOT)/etc/% : | $(FSROOT_ETC)
cp /etc/$* $@
.SECONDEXPANSION:
$(FILESYSTEM_ROOT)/usr/bin/%: $$*-symbolic-deps | $(FSROOT_USRBIN)
cp $$(which $*) $@
.SECONDEXPANSION:
$(FILESYSTEM_ROOT)/bin/%: $$*-symbolic-deps | $(FSROOT_BIN)
cp $$(which $*) $@
xampp-build: $(XAMPP_INSTALLER) prepare-env | $(FSROOT_TMP)
@echo "Building the $(XAMPP_SCOPE) setup with root: $(XAMPP_ROOTACCESS)"
if [ "$$(cat /etc/group | grep nogroup)" = "" ]; then \
$(XAMPP_ROOTACCESS) groupadd nogroup; \
fi
chmod a+x $(XAMPP_INSTALLER)
$(XAMPP_ROOTACCESS) /tmp/xampp.run --mode unattended
xampp-uninstall: prepare-env
$(XAMPP_ROOTACCESS) rm -rf /opt/lampp
xampp-run: prepare-env
$(XAMPP_ROOTACCESS) /opt/lampp/lampp start
xampp-kill: prepare-env
$(XAMPP_ROOTACCESS) /opt/lampp/lampp stop