Merge remote-tracking branch 'origin/next' into thirteen
[ipfire-2.x.git] / lfs / stage2
1 ###############################################################################
2 #                                                                             #
3 # IPFire.org - A linux based firewall                                         #
4 # Copyright (C) 2007  Michael Tremer & Christian Schmidt                      #
5 #                                                                             #
6 # This program is free software: you can redistribute it and/or modify        #
7 # it under the terms of the GNU General Public License as published by        #
8 # the Free Software Foundation, either version 3 of the License, or           #
9 # (at your option) any later version.                                         #
10 #                                                                             #
11 # This program is distributed in the hope that it will be useful,             #
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of              #
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
14 # GNU General Public License for more details.                                #
15 #                                                                             #
16 # You should have received a copy of the GNU General Public License           #
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
18 #                                                                             #
19 ###############################################################################
20
21 ###############################################################################
22 # Definitions
23 ###############################################################################
24
25 include Config
26
27 VER        = ipfire
28
29 THISAPP    = stage2
30 TARGET     = $(DIR_INFO)/$(THISAPP)
31
32 ###############################################################################
33 # Top-level Rules
34 ###############################################################################
35
36 install : $(TARGET)
37
38 check :
39
40 download :
41
42 md5 :
43
44 ###############################################################################
45 # Installation Details
46 ###############################################################################
47
48 $(TARGET) :
49         @$(PREBUILD)
50
51         # Create directories
52         -mkdir -pv /{bin,boot,etc/opt,etc/modprobe.d,home,lib,mnt,opt}
53         -mkdir -pv /{media/{floppy,cdrom,usbkey},sbin,srv,var}
54         -install -dv -m 0750 /root
55         -install -dv -m 1777 /tmp /var/tmp
56         -mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
57         -mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
58         -mkdir -v  /usr/{,local/}share/{misc,terminfo,zoneinfo}
59         -mkdir -pv /usr/{,local/}share/man/man{1..8}
60         #-for dir in /usr /usr/local; do \
61         #  ln -sv share/{man,doc,info} $$dir; \
62         #done
63         
64         # Symlinks
65         # for this reason, stage2 rebuild will broke the iso:perl, grubbatch
66         -ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
67         -ln -sv /tools/bin/perl /usr/bin
68         -ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
69         -ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
70         sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
71         -ln -sv bash /bin/sh
72
73         # Config files
74         cp -rvf $(DIR_SRC)/config/etc/* /etc;
75         touch /etc/mtab
76         echo "$(NAME) v$(VERSION) - $(SLOGAN)" >  /etc/issue
77         echo "===============================" >> /etc/issue
78         echo "\n running on \s \r \m"          >> /etc/issue
79
80         # Bash startup files
81         install --directory --mode=0755 --owner=root --group=root /etc/profile.d
82         for i in $(DIR_SRC)/config/profile.d/*; do \
83             [ -f $$i ] && cp $$i /etc/profile.d; \
84         done
85         chmod 755 /etc/bashrc
86
87         # Install root's bash files.
88         for i in $(DIR_SRC)/config/bash/dot_*; do \
89                 [ -f $$i ] && cp $$i /root/$$(basename $${i/dot_/\.}); \
90         done
91
92         # Scripts
93         for i in `find $(DIR_SRC)/src/scripts -maxdepth 1 -type f`; do \
94             sed "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" $$i > /usr/local/bin/`basename $$i`; \
95             chmod 755 /usr/local/bin/`basename $$i`; \
96         done
97
98         # Move script to correct place.
99         mv -vf /usr/local/bin/ovpn-ccd-convert /usr/sbin/
100
101         # Nobody user
102         -mkdir -p /home/nobody
103         chown -R nobody:nobody /home/nobody
104
105         # Create /var dirs and files
106         -mkdir -v /var/{lock,log,mail,run,spool,empty}
107         -mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
108         -mkdir -pv /var/log/{counter,calamaris}
109         chown nobody.nobody /var/log/calamaris
110         touch /var/run/utmp /var/log/{btmp,lastlog,wtmp,net-traffic.log}
111         chgrp -v utmp /var/run/utmp /var/log/lastlog
112         chmod -v 664 /var/run/utmp /var/log/lastlog
113
114         # Permissions
115         chmod 0711 /var/empty
116         
117         # A small hack to include /root to the iso but not all of it's files.
118         touch /root/ipfire
119
120         # License agreement
121         -mkdir -pv /usr/share/doc/licenses/
122         cp -vf $(DIR_SRC)/doc/COPYING /usr/share/doc/licenses/GPLv3
123
124         @$(POSTBUILD)