Subversion Repository

Parent Directory Parent Directory | Revision Log Revision Log


Revision 38 - (hide annotations)
Fri Dec 11 20:18:32 2009 UTC (3 years, 5 months ago) by acrux
File size: 12207 byte(s)
fixed dependencies check
1 cjg 2 #
2     # Makefile for CRUX PPC, based on Makefile for CRUX
3     # Copyright (c) 2003-2004 Per Liden <per@fukt.bth.se>
4     # Copyright (c) 2004 Giulivo Navigante <giulivo@linuxmail.org>
5 acrux 36 # Copyright (c) 2005-2009 The CRUX PPC Team - http://cruxppc.org
6 cjg 2 #
7 acrux 36 # CRUX PPC
8 cjg 31 # 64bit Release
9 acrux 36 # release codename is: ottobre 2009
10 cjg 2 #
11    
12 acrux 36 CRUXPPCVERSION = 2.6
13 cjg 2 COLLECTIONS = core opt xorg
14     KERNEL_MIRROR = ftp://ftp.eu.kernel.org
15 acrux 36 KERNEL_VERSION = 2.6.31.6
16     KERNEL_PATCHES = cruxppc-logo.diff linux-$(KERNEL_VERSION).patch
17 cjg 2 FAKE_ROOT_DIR = $(PWD)/tmp/fake_root
18     ISO_ROOT_DIR = $(PWD)/tmp/iso_root
19 cjg 31 SRCISO_ROOT_DIR = $(PWD)/tmp/srciso_root
20     ISO_FILENAME = $(PWD)/crux-ppc64-$(CRUXPPCVERSION).iso
21     SRCISO_FILENAME = $(PWD)/crux-ppc64-$(CRUXPPCVERSION)-source.iso
22     ISO_PACKAGES = filesystem bash coreutils bzip2 e2fsprogs jfsutils \
23 acrux 36 xfsprogs reiserfsprogs patch findutils glibc grep gzip kbd \
24     module-init-tools less gawk ncurses net-tools pkgutils \
25     procps readline sed shadow sysklogd sysvinit tar \
26     util-linux-ng vim which dialog nano mdadm parted \
27 cjg 31 mac-fdisk hfsutils nvsetenv yaboot-bin glib mc pciutils \
28 acrux 36 libusb libusb-compat usbutils sysfsutils udev memtester \
29     zlib libpcre libgmp libdevmapper lvm2 \
30     openssl openssh dhcpcd wget iproute2 iputils
31 cjg 16 PORTS_core = $(shell /bin/ls -I README ports/core)
32 acrux 36 PORTS_opt = $(shell /bin/cat packages.opt64)
33     PORTS_xorg = $(shell /bin/cat packages.xorg)
34 cjg 2
35     ifeq ($(FORCE),yes)
36     PKGMK_FORCE=-f
37     else
38     PKGMK_FORCE=
39     endif
40    
41     .PHONY: help check-root check-log $(COLLECTIONS) all all-chroot bootstrap kernel kernel-clean clean iso
42    
43     help:
44     @echo "CRUX PPC Makefile"
45     @echo "Targets:"
46     @echo " <collection> build single collection"
47     @echo " all build all collections"
48     @echo " bootstrap bootstrap all collections"
49     @echo " kernel download and build kernel"
50     @echo " iso create iso image"
51     @echo "Collections:"
52     @echo " $(COLLECTIONS)"
53    
54 cjg 31 #pull:
55     # @for i in $(COLLECTIONS); do echo Updating $$i; (cd ports/$$i; git pull git://cruxppc.crux.it/cruxppc/git/ports/$$i.git $(CRUXPPCVERSION)); done
56 cjg 15
57 cjg 2 check-root:
58     @if [ "$$UID" != "0" ]; then \
59     echo "You need to be root to do this."; \
60     exit 1; \
61     fi
62    
63     check-log:
64 cjg 31 @grep "> ERROR:"; \
65 cjg 2 if [ "$$?" = "0" ]; then \
66     echo "(see log file for details)"; \
67     exit 1; \
68     else \
69     exit 0; \
70     fi
71    
72     kernel/linux-$(KERNEL_VERSION).tar.bz2:
73     cd kernel && wget --passive-ftp $(KERNEL_MIRROR)/pub/linux/kernel/v2.6/linux-$(KERNEL_VERSION).tar.bz2
74    
75     kernel/linux-$(KERNEL_VERSION): kernel/linux-$(KERNEL_VERSION).tar.bz2
76     tar -C kernel -xjmf kernel/linux-$(KERNEL_VERSION).tar.bz2
77     for FILE in $(KERNEL_PATCHES); do \
78     cd kernel/linux-$(KERNEL_VERSION) && patch -p1 < ../$$FILE && cd ../..; \
79     done
80 cjg 31 cp -a kernel/linux-$(KERNEL_VERSION) kernel/linux-$(KERNEL_VERSION)-Pseries
81 cjg 2
82     kernel/linux-$(KERNEL_VERSION)/vmlinux: kernel/linux-$(KERNEL_VERSION)
83     make -C kernel/linux-$(KERNEL_VERSION) mrproper
84     cp -f kernel/linux-$(KERNEL_VERSION).config kernel/linux-$(KERNEL_VERSION)/.config
85     make -C kernel/linux-$(KERNEL_VERSION) oldconfig
86 acrux 36 make -j8 -C kernel/linux-$(KERNEL_VERSION) all
87 cjg 31 touch kernel/linux-$(KERNEL_VERSION)/vmlinux
88 cjg 2
89 cjg 31 make -C kernel/linux-$(KERNEL_VERSION)-Pseries mrproper
90     cp -f kernel/linux-$(KERNEL_VERSION)-Pseries.config kernel/linux-$(KERNEL_VERSION)-Pseries/.config
91     make -C kernel/linux-$(KERNEL_VERSION)-Pseries oldconfig
92 acrux 36 make -j8 -C kernel/linux-$(KERNEL_VERSION)-Pseries all
93 cjg 31 touch kernel/linux-$(KERNEL_VERSION)-Pseries/vmlinux
94 cjg 2
95     kernel: kernel/linux-$(KERNEL_VERSION)/vmlinux
96    
97     kernel-clean:
98     if [ -e kernel/linux-$(KERNEL_VERSION) ]; then rm -rf kernel/linux-$(KERNEL_VERSION); fi
99 cjg 31 if [ -e kernel/linux-$(KERNEL_VERSION)-Pseries ]; then rm -rf kernel/linux-$(KERNEL_VERSION)-Pseries; fi
100 cjg 2
101     clean: kernel-clean
102    
103     $(COLLECTIONS): check-root
104     @for p in $(PORTS_$(@)); do \
105     echo "p: $$p"; \
106 cjg 31 (cd ports/$@/$$p; pkgmk -d $(PKGMK_FORCE)); \
107 cjg 2 done
108    
109     all: $(COLLECTIONS)
110    
111     all-chroot: check-root
112     @echo "Creating chroot environment"
113     @if [ -e $(FAKE_ROOT_DIR) ]; then \
114     umount $(FAKE_ROOT_DIR)/src; \
115     umount $(FAKE_ROOT_DIR)/proc; \
116     umount $(FAKE_ROOT_DIR)/dev; \
117     rm -rf $(FAKE_ROOT_DIR); \
118     fi
119     @mkdir -p $(FAKE_ROOT_DIR)
120     @echo "Installing packages"
121     @mkdir -p $(FAKE_ROOT_DIR)/var/lib/pkg
122 acrux 36 @touch $(FAKE_ROOT_DIR)/var/lib/pkg/db
123     # @for COLL in $(COLLECTIONS); do \
124     # for PACKAGE in ports/$$COLL/*/*.pkg.tar.gz; do \
125     # echo " $$PACKAGE"; \
126     # pkgadd -r $(FAKE_ROOT_DIR) $$PACKAGE; \
127     # done; \
128     # done
129 cjg 31 @for p in $(PORTS_core); do \
130     echo " $$p"; \
131     pkgadd -r $(FAKE_ROOT_DIR) ports/core/$$p/$$p*.pkg.tar.gz; \
132 cjg 2 done
133 cjg 31 @for p in $(PORTS_opt); do \
134     echo " $$p"; \
135     pkgadd -r $(FAKE_ROOT_DIR) ports/opt/$$p/$$p*.pkg.tar.gz; \
136     done
137     @for p in $(PORTS_xorg); do \
138     echo " $$p"; \
139     pkgadd -r $(FAKE_ROOT_DIR) ports/xorg/$$p/$$p*.pkg.tar.gz; \
140     done
141 cjg 2 @echo "Mounting /dev on $(FAKE_ROOT_DIR)/dev"
142     @mount --bind /dev $(FAKE_ROOT_DIR)/dev
143     @echo "Mounting /proc on $(FAKE_ROOT_DIR)/proc"
144     @mount --bind /proc $(FAKE_ROOT_DIR)/proc
145     @echo "Mouting $$PWD on $(FAKE_ROOT_DIR)/src"
146     @mkdir $(FAKE_ROOT_DIR)/src
147     @mount --bind $$PWD $(FAKE_ROOT_DIR)/src
148     @cp /etc/pkgmk.conf $(FAKE_ROOT_DIR)/etc
149     @echo "Entering chroot enrivonment"
150     @chroot $(FAKE_ROOT_DIR) /bin/bash --login -c "cd /src && $(MAKE) FORCE=yes all"
151     @echo "Exiting chroot enrivonment"
152     @echo "Unmounting $(FAKE_ROOT_DIR)/src"
153     @umount $(FAKE_ROOT_DIR)/src
154     @rmdir $(FAKE_ROOT_DIR)/src
155     @echo "Unmounting $(FAKE_ROOT_DIR)/proc"
156     @umount $(FAKE_ROOT_DIR)/proc
157     @echo "Unmounting $(FAKE_ROOT_DIR)/dev"
158     @umount $(FAKE_ROOT_DIR)/dev
159     @echo "Removing chroot environment"
160     @rm -rf $(FAKE_ROOT_DIR)
161    
162     bootstrap: check-root
163     @echo "Bootstrap started (`date +'%F %T'`)"
164     @echo "- Stage 0 (`date +'%F %T'`)"
165 cjg 31 @for i in $(PORTS_core) $(PORTS_opt) $(PORTS_xorg); do\
166     rm -f ports/*/$$i/.footprint.powerpc64;\
167     done
168 cjg 2 @$(MAKE) all &> log.stage0
169     @$(MAKE) check-log < log.stage0
170     @echo "- Stage 1 (`date +'%F %T'`)"
171 cjg 31 @for i in $(PORTS_core) $(PORTS_opt) $(PORTS_xorg); do\
172     rm -f ports/*/$$i/.footprint.powerpc64;\
173     done
174 cjg 8 @$(MAKE) all-chroot &> log.stage1
175 cjg 2 @$(MAKE) check-log < log.stage1
176     @echo "- Stage 2 (`date +'%F %T'`)"
177     @$(MAKE) all-chroot &> log.stage2
178     @$(MAKE) check-log < log.stage2
179     @echo "Bootstrap completed (`date +'%F %T'`)"
180    
181 cjg 15 handbook:
182     @if [ -e doc/handbook.txt ]; then rm -f doc/handbook.txt; fi
183     @(cd doc; ../scripts/get_wiki_handbook)
184    
185 cjg 16 releasenotes:
186     @if [ -e doc/releasenotes.txt ]; then rm -f doc/releasenotes.txt; fi
187     @(cd doc; ../scripts/get_wiki_release_notes)
188    
189 cjg 31 iso: check-root handbook releasenotes dependencies-check
190 cjg 2 @echo "Creating ISO image ($(ISO_FILENAME))"
191     @if [ -e $(ISO_ROOT_DIR) ]; then rm -rf $(ISO_ROOT_DIR); fi
192     @mkdir -p $(ISO_ROOT_DIR)
193     @echo "- Installing packages"
194     @for PACKAGE in $(ISO_PACKAGES); do \
195     tar -C $(ISO_ROOT_DIR) -xzpf ports/*/$$PACKAGE/$$PACKAGE\#*.pkg.tar.gz; \
196     done
197     @echo "- Copying ISO specific files"
198 cjg 31 @mkdir -p $(ISO_ROOT_DIR)/etc $(ISO_ROOT_DIR)/ppc/{chrp,mac,ppc64,pseries}
199 cjg 2 @cp iso/ppc/bootinfo.txt $(ISO_ROOT_DIR)/ppc
200 cjg 31 @cp iso/ppc/chrp/yaboot.chrp $(ISO_ROOT_DIR)/ppc/chrp
201     @cp iso/ppc/pseries/yaboot.msg $(ISO_ROOT_DIR)/ppc/pseries
202 cjg 2 @cp iso/ppc/mac/{ofboot.b,yaboot} $(ISO_ROOT_DIR)/ppc/mac
203 cjg 31 @cp iso/ppc/ppc64/{yaboot.conf,yaboot.msg} $(ISO_ROOT_DIR)/ppc/ppc64
204 acrux 36 @cp iso/etc/{fstab,hosts,inittab,issue,motd,ld.so.conf,protocols,rc,rc.shutdown,rc.single,services,shadow,yaboot.conf} $(ISO_ROOT_DIR)/etc
205 cjg 2 @echo "- Installing kernel"
206 cjg 31 @cp kernel/linux-$(KERNEL_VERSION)/System.map $(ISO_ROOT_DIR)/ppc/ppc64
207     @cp kernel/linux-$(KERNEL_VERSION)/vmlinux $(ISO_ROOT_DIR)/ppc/ppc64
208     @cp kernel/linux-$(KERNEL_VERSION)-Pseries/System.map $(ISO_ROOT_DIR)/ppc/pseries
209     @cp kernel/linux-$(KERNEL_VERSION)-Pseries/vmlinux $(ISO_ROOT_DIR)/ppc/pseries
210 cjg 2 @echo "- Installing kernel modules (see modules_install.log)"
211     @make -C kernel/linux-$(KERNEL_VERSION) INSTALL_MOD_PATH=$(ISO_ROOT_DIR) modules_install &> modules_install.log
212 cjg 31 @make -C kernel/linux-$(KERNEL_VERSION)-Pseries INSTALL_MOD_PATH=$(ISO_ROOT_DIR) modules_install &> modules_install.log-Pseries
213 cjg 2 @echo "- Deleting superfluous files"
214     @cd $(ISO_ROOT_DIR) && rm -rf var opt home
215     @cd $(ISO_ROOT_DIR)/usr && rm -rf man include lib/*.a lib/*.o lib/gconv lib/locale src
216 cjg 31 @cd $(ISO_ROOT_DIR)/usr && rm -rf lib64/*.a lib64/*.o lib64/gconv lib64/locale
217 cjg 2 @cd $(ISO_ROOT_DIR)/usr/share && mkdir l v; cp terminfo/l/linux l; cp terminfo/v/vt100 v; rm -rf terminfo/*; mv l v terminfo
218     @cd $(ISO_ROOT_DIR)/usr/share && rm -rf et ss vim i18n zoneinfo
219 cjg 31 @cd $(ISO_ROOT_DIR)/usr/bin && rm cal compile_et mk_cmds
220     @cd $(ISO_ROOT_DIR)/usr/bin64 && rm locale localedef rpcgen
221 cjg 2 @cd $(ISO_ROOT_DIR)/usr/sbin && rm group{add,del,mod} user{add,del,mod} grpck pwck iconvconfig rpcinfo zic zdump
222 cjg 31 @cd $(ISO_ROOT_DIR)/usr/sbin64 && rm iconvconfig rpcinfo zic zdump
223 cjg 5 @cd $(ISO_ROOT_DIR)/etc && rm -rf rc.d cron {resolv,sysctl,pkgadd,pkgmk}.conf securetty
224 cjg 2 @cd $(ISO_ROOT_DIR)/usr/lib && rm -rf pkgconfig/*
225     @cd $(ISO_ROOT_DIR)/lib/modules/$(KERNEL_VERSION) && rm -f build
226     @echo "- Creating symlinks"
227     @ln -sf /tmp/var $(ISO_ROOT_DIR)/var
228 cjg 31 @ln -sf /proc/mounts $(ISO_ROOT_DIR)/etc/mtab
229 cjg 2 @echo "- Updating library links and cache"
230     @ldconfig -r $(ISO_ROOT_DIR)
231     @echo "- Copying CRUX PPC packages"
232     @mkdir -p $(ISO_ROOT_DIR)/crux
233 cjg 15 @cp doc/handbook.txt $(ISO_ROOT_DIR)/crux
234 cjg 16 @cp doc/releasenotes.txt $(ISO_ROOT_DIR)/crux
235 cjg 2 @cp iso/setup.dependencies $(ISO_ROOT_DIR)/crux
236     @cp doc/gpl.txt $(ISO_ROOT_DIR)/crux
237     @cp iso/bin/{setup,setup-helper,setup-chroot,serial_console} $(ISO_ROOT_DIR)/usr/bin
238     @mkdir -p $(ISO_ROOT_DIR)/crux/kernel
239     @cp kernel/linux-$(KERNEL_VERSION).tar.bz2 $(ISO_ROOT_DIR)/crux/kernel
240     @cp kernel/linux-$(KERNEL_VERSION).config $(ISO_ROOT_DIR)/crux/kernel
241 cjg 31 @cp kernel/linux-$(KERNEL_VERSION)-Pseries.config $(ISO_ROOT_DIR)/crux/kernel
242 cjg 2 @for FILE in $(KERNEL_PATCHES); do \
243     cp kernel/$$FILE $(ISO_ROOT_DIR)/crux/kernel; \
244     done
245 cjg 31 @mkdir -p $(ISO_ROOT_DIR)/crux/core
246     @for PKG in $(PORTS_core); do \
247     cp ports/core/$$PKG/*.pkg.tar.gz $(ISO_ROOT_DIR)/crux/core; \
248 cjg 2 done
249 cjg 31 @mkdir -p $(ISO_ROOT_DIR)/crux/opt
250     @for PKG in $(PORTS_opt); do \
251     cp ports/opt/$$PKG/*.pkg.tar.gz $(ISO_ROOT_DIR)/crux/opt; \
252     done
253     @mkdir -p $(ISO_ROOT_DIR)/crux/xorg
254     @for PKG in $(PORTS_xorg); do \
255     cp ports/xorg/$$PKG/*.pkg.tar.gz $(ISO_ROOT_DIR)/crux/xorg; \
256     done
257 cjg 2 @echo "- Starting mkisofs"
258     @if [ -f $(ISO_FILENAME) ]; then rm -f $(ISO_FILENAME); fi
259 cjg 31 @genisoimage -r -V CRUX-PPC -U -chrp-boot -hfs -part -probe -no-desktop \
260 cjg 2 -hfs-bless $(ISO_ROOT_DIR)/ppc/mac -map iso/boot/map.hfs \
261     -hide-rr-moved -o $(ISO_FILENAME) $(ISO_ROOT_DIR)
262     @rm -rf $(ISO_ROOT_DIR)
263     @md5sum $(ISO_FILENAME) > $(ISO_FILENAME).md5
264     @echo "Done"
265    
266 cjg 23 dependencies-check:
267     @if [ -e iso/setup.dependencies ]; then rm iso/setup.dependencies; fi
268     @make iso/setup.dependencies
269     @for i in `cat iso/setup.dependencies | sed -e 's|[^:]*:\ ||' -e 's|\ |\n|g' | sort | uniq`; do \
270 cjg 31 ilenia -s $$i > /dev/null ; \
271 cjg 23 if [ "$$?" != "0" ]; then \
272 cjg 31 echo "Missing dependence $$i" ;\
273 cjg 23 exit 1 ;\
274     fi ; \
275     done
276    
277 cjg 2 iso/setup.dependencies:
278     @for PORT in $(foreach c,$(COLLECTIONS),$(PORTS_$(c))); do \
279     echo -n $$PORT": "; \
280 acrux 38 ilenia -D --all $$PORT | awk '{ print $$1 }' | xargs; \
281 cjg 2 done > $@
282    
283 cjg 31 source-iso:
284     @echo "Creating ISO image with sources ($(SRCISO_FILENAME))"
285     @rm -rf $(SRCISO_ROOT_DIR)
286     @mkdir -p $(SRCISO_ROOT_DIR)/{ports,kernel,misc}
287     @echo "- Copying ports"
288     @for PORT in $(PORTS_core) $(PORTS_opt) $(PORTS_xorg); do \
289     find ports -mindepth 2 -maxdepth 2 -name $$PORT -type d -exec cp -r {} $(SRCISO_ROOT_DIR)/ports \; ; \
290     rm -f $(SRCISO_ROOT_DIR)/ports/$$PORT/{*~,build.log,.footprint,.md5sum,*.pkg.tar.gz}; \
291     done
292     @echo "- Copying kernel and patches"
293     @cp kernel/linux-$(KERNEL_VERSION).tar.bz2 $(SRCISO_ROOT_DIR)/kernel
294     @for PATCH in $(KERNEL_PATCHES); do cp kernel/$$PATCH $(SRCISO_ROOT_DIR)/kernel; done
295     @echo "- Creating README"
296     @echo "- Starting genisoimage"
297     @genisoimage -R -l -J -V CRUX-PPC-$(CRUXVERSION) -A "CRUX PPC" -o $(SRCISO_FILENAME) $(SRCISO_ROOT_DIR)
298     @md5sum `basename $(SRCISO_FILENAME)` > `basename $(SRCISO_FILENAME) .iso`.md5
299    
300 cjg 2 # End of file