Merge "Add pharos-validator tool"
[pharos-tools.git] / pharos-validator / src / pxe_initrd / pxe_initrd.mk
1 ##############################################################################
2 # Copyright (c) 2015 Todd Gaunt and others.
3 #
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10 include config.mk
11
12 # Don't customize these
13 CHROOT=initrd-build
14 DATADIR=src
15 ETC=etc
16
17 # Perform all but install commands
18 all: initrd.gz
19
20 ready-source:
21         mkdir -p tmp
22         pushd tmp/ && wget -N \
23                 "${mirror}/${branch}/main/x86_64/apk-tools-static-${version}.apk" \
24                 && tar -xzf apk-tools-static-*.apk && popd
25
26 initrd.gz: ready-source
27         # Run the alpine installer
28         ./tmp/sbin/apk.static -X "${mirror}"/"${branch}"/main \
29                 -U --allow-untrusted --root "${CHROOT}" --initdb add alpine-base
30         # Virtual devices for /dev
31         if ! [ -a "${CHROOT}"/dev/ram0 ];then mknod -m 666 "${CHROOT}"/dev/ram0 b 1 1 ;fi
32         if ! [ -a "${CHROOT}"/dev/zero ];then mknod -m 666 "${CHROOT}"/dev/zero c 1 5 ;fi
33         if ! [ -a "${CHROOT}"/dev/full ];then mknod -m 666 "${CHROOT}"/dev/full c 1 7 ;fi
34         if ! [ -a "${CHROOT}"/dev/random ];then mknod -m 666 "${CHROOT}"/dev/random c 1 8 ;fi
35         if ! [ -a "${CHROOT}"/dev/urandom ];then mknod -m 644 "${CHROOT}"/dev/urandom c 1 9 ;fi
36         if ! [ -a "${CHROOT}"/dev/tty1 ];then mknod -m 666 "${CHROOT}"/dev/tty1 c 4 1 ;fi
37         if ! [ -a "${CHROOT}"/dev/tty2 ];then mknod -m 666 "${CHROOT}"/dev/tty2 c 4 2 ;fi
38         if ! [ -a "${CHROOT}"/dev/tty3 ];then mknod -m 666 "${CHROOT}"/dev/tty3 c 4 3 ;fi
39         if ! [ -a "${CHROOT}"/dev/tty4 ];then mknod -m 666 "${CHROOT}"/dev/tty4 c 4 4 ;fi
40         if ! [ -a "${CHROOT}"/dev/tty5 ];then mknod -m 666 "${CHROOT}"/dev/tty5 c 4 5 ;fi
41         if ! [ -a "${CHROOT}"/dev/tty6 ];then mknod -m 666 "${CHROOT}"/dev/tty6 c 4 6 ;fi
42         if ! [ -a "${CHROOT}"/dev/tty ];then mknod -m 666 "${CHROOT}"/dev/tty c 5 0 ;fi
43         if ! [ -a "${CHROOT}"/dev/console ];then mknod -m 666 "${CHROOT}"/dev/console c 5 1 ;fi
44         if ! [ -a "${CHROOT}"/dev/ptmx ];then mknod -m 666 "${CHROOT}"/dev/ptmx c 5 2 ;fi
45         # link /usr/bin to /bin for package installation purposespurposes
46         chroot "${CHROOT}" /bin/ln -sf /bin /usr/bin
47         # Get the latest alpine mirror
48         mkdir -p "${CHROOT}/etc/apk"
49         echo "${mirror}/${branch}/main" > "${CHROOT}/etc/apk/repositories"
50         ######################################
51         # Update all packages and custom files
52         ######################################
53         mkdir -p "${CHROOT}/usr/src/"
54         # Copy over custom scripts/files
55         cp -rfv "../validation_tool/" "${CHROOT}/usr/src/"
56         echo "${DATADIR}/"
57         cp -rfv "${DATADIR}"/* "${CHROOT}/"
58         # Run a script to update all packages
59         chroot "${CHROOT}" /bin/update_pkgs.sh
60         # Installs the validation tool into the chroot directory
61         chroot "${CHROOT}" /bin/install_validation_tool.sh
62         # Enables required services with initrd's service manager
63         chroot "${CHROOT}" /bin/enable_services.sh
64         ######################################
65         # Create the initrd.gz
66         ######################################
67         cd "${CHROOT}" && find . | cpio -o -H newc | gzip > ../initrd.gz
68
69 install: all 
70         mkdir -p "${DESTDIR}"/"${TFTPPATH}"
71         cp -rf "${ETC}"/* "${DESTDIR}"/"${TFTPPATH}"/
72         cp -rf initrd.gz "${DESTDIR}"/"${TFTPPATH}"/
73
74 .PHONY: clean
75 clean:
76         rm -f initrd.gz
77         rm -rf "${CHROOT}"
78         rm -f apk-tools-static-*.apk
79         rm -rf tmp/