Rework nrelease framework for pkgsrc. The way the bootstrap kit was
[dragonfly.git] / nrelease / Makefile
1 # $DragonFly: src/nrelease/Makefile,v 1.45 2005/12/10 14:47:05 joerg Exp $
2 #
3
4 all: release
5
6 # compat target
7 installer_release: release
8 installer_quickrel: 
9 installer_realquickrel: realquickrel
10
11 .if make(installer_release) || make(installer_quickrel) || make(installer_realquickrel)
12 WITH_INSTALLER=
13 .endif
14
15 ISODIR ?= /usr/release
16 ISOFILE ?= ${ISODIR}/dfly.iso
17 ISOROOT = ${ISODIR}/root
18 OBJSYS= ${.OBJDIR}/../sys
19 KERNCONF ?= GENERIC
20
21 PKGSRC_PKG_ADD?=        /usr/pkg/sbin/pkg_add
22 PKGSRC_PKG_PATH?=       ${.CURDIR}
23 PKGSRC_BOOTSTRAP_FILE?= ${PKGSRC_PKG_PATH}/bootstrap.tar.gz
24 PKGSRC_DB?=             /var/db/pkg
25 PKGSRC_PREFIX?=         /usr/pkg
26 PKGSRC_RSYNC_SRC?=      rsync://packages.stura.uni-rostock.de/dfly14-nrelease
27
28 ENV?=   env
29 TAR?=   tar
30 RSYNC_CMD?=     rsync -avz
31
32 PKGSRC_PACKAGES?=       cdrecord
33
34 # Specify which root skeletons are required, and let the user include
35 # their own.  They are copied into ISODIR during the `pkgcustomizeiso'
36 # target; each overwrites the last.
37 #
38 REQ_ROOTSKELS= ${.CURDIR}/root
39 ROOTSKELS?=     ${REQ_ROOTSKELS}
40
41 .if defined(WITH_INSTALLER)
42 PKGSRC_PACKAGES+=       dfuibe_installer dfuife_curses
43 ROOTSKELS+=             installer
44 .endif
45
46 # note: we use the '${NRLOBJDIR}/nrelease' construct, that is we add
47 # the additional '/nrelease' manually, as a safety measure.
48 #
49 NRLOBJDIR?= /usr/obj
50
51 WORLD_CCVER ?= ${CCVER}
52 KERNEL_CCVER ?= ${CCVER}
53
54 #########################################################################
55 #                               BASE ISO TARGETS                        #
56 #########################################################################
57
58 release:        check clean buildworld1 buildkernel1 \
59                 buildiso customizeiso mklocatedb mkiso
60
61 quickrel:       check clean buildworld2 buildkernel2 \
62                 buildiso customizeiso mklocatedb mkiso
63
64 realquickrel:   check clean buildiso customizeiso mklocatedb mkiso
65
66 check:
67         @${ECHO} Testing mkisofs...
68         @mkisofs --version > /dev/null
69         @${ECHO} Testing pkg_add and list of packages...
70         @${ENV} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGSRC_PKG_ADD} -n ${PKGSRC_PACKAGES} > /dev/null 2>&1
71         @${ECHO} Testing for existence of bootstrap kit...
72         @[ -r ${PKGSRC_BOOTSTRAP_FILE} ]
73
74 buildworld1:
75         ( cd ${.CURDIR}/..; CCVER=${WORLD_CCVER} make buildworld )
76
77 buildworld2:
78         ( cd ${.CURDIR}/..; CCVER=${WORLD_CCVER} make quickworld )
79
80 buildkernel1:
81         ( cd ${.CURDIR}/..; CCVER=${KERNEL_CCVER} make buildkernel KERNCONF=${KERNCONF} )
82
83 buildkernel2:
84         ( cd ${.CURDIR}/..; CCVER=${KERNEL_CCVER} make quickkernel KERNCONF=${KERNCONF} )
85
86 # note that we do not want to mess with any /usr/obj directories not related
87 # to buildworld, buildkernel, or nrelease, so we must supply the proper
88 # MAKEOBJDIRPREFIX for targets that are not run through the buildworld and 
89 # buildkernel mechanism.
90 #
91 buildiso:
92         if [ ! -d ${ISOROOT} ]; then mkdir -p ${ISOROOT}; fi
93         if [ ! -d ${NRLOBJDIR}/nrelease ]; then mkdir -p ${NRLOBJDIR}/nrelease; fi
94         ( cd ${.CURDIR}/..; make DESTDIR=${ISOROOT} installworld )
95         ( cd ${.CURDIR}/../etc; MAKEOBJDIRPREFIX=${NRLOBJDIR}/nrelease \
96                 make -m ${.CURDIR}/../share/mk DESTDIR=${ISOROOT} distribution )
97         cpdup ${ISOROOT}/etc ${ISOROOT}/etc.hdd
98         ( cd ${.CURDIR}/..; make DESTDIR=${ISOROOT} \
99                 installkernel KERNCONF=${KERNCONF} )
100         ln -s kernel ${ISOROOT}/kernel.BOOTP
101         mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.local.dist -p ${ISOROOT}/usr/local/
102         mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.var.dist -p ${ISOROOT}/var
103         dev_mkdb -f ${ISOROOT}/var/run/dev.db ${ISOROOT}/dev
104
105 customizeiso:
106 .for ROOTSKEL in ${ROOTSKELS}
107         cpdup -X cpignore -o ${ROOTSKEL} ${ISOROOT}
108 .endfor
109         rm -rf `find ${ISOROOT} -type d -name CVS -print`
110         rm -rf ${ISOROOT}/usr/local/share/pristine
111         pwd_mkdb -p -d ${ISOROOT}/etc ${ISOROOT}/etc/master.passwd
112 .for UPGRADE_ITEM in Makefile                   \
113                      etc.${MACHINE_ARCH}        \
114                      isdn/Makefile              \
115                      rc.d/Makefile              \
116                      periodic/Makefile          \
117                      periodic/daily/Makefile    \
118                      periodic/security/Makefile \
119                      periodic/weekly/Makefile   \
120                      periodic/monthly/Makefile
121         cp -R ${.CURDIR}/../etc/${UPGRADE_ITEM} ${ISOROOT}/etc/${UPGRADE_ITEM}
122 .endfor
123         cd ${ISOROOT} && ${TAR} xzf ${PKGSRC_BOOTSTRAP_FILE}
124 .for pkg in ${PKGSRC_PACKAGES}
125         ${ENV} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGSRC_PKG_ADD} -I -K ${ISOROOT}${PKGSRC_DB} -p ${ISOROOT}${PKGSRC_PREFIX} ${pkg}
126 .endfor
127
128 mklocatedb:
129         ( find -s ${ISOROOT} -path ${ISOROOT}/tmp -or \
130                 -path ${ISOROOT}/usr/tmp -or -path ${ISOROOT}/var/tmp \
131                 -prune -o -print | sed -e 's#^${ISOROOT}##g' | \
132                 /usr/libexec/locate.mklocatedb \
133                 -presort >${ISOROOT}/var/db/locate.database )
134
135 mkiso:
136         ( cd ${ISOROOT}; mkisofs -b boot/cdboot -no-emul-boot \
137                 -R -J -V DragonFly -o ${ISOFILE} . )
138
139 clean:
140         if [ -d ${ISOROOT} ]; then chflags -R noschg ${ISOROOT}; fi
141         if [ -d ${ISOROOT} ]; then rm -rf ${ISOROOT}/*; fi
142         if [ -d ${NRLOBJDIR}/nrelease ]; then rm -rf ${NRLOBJDIR}/nrelease; fi
143
144 realclean:      clean
145         rm -rf ${OBJSYS}/${KERNCONF}
146
147 fetch:
148         mkdir -p ${PKGSRC_PKG_PATH}
149         ${RSYNC_CMD} ${PKGSRC_RSYNC_SRC} ${PKGSRC_PKG_PATH}
150
151 .PHONY: all release installer_release quickrel installer_quickrel realquickrel
152 .PHONY: installer_realquickrel check buildworld1 buildworld2
153 .PHONY: buildkernel1 buildkernel2 buildiso customizeiso mklocatedb mkiso
154 .PHONE: clean realclean fetch
155
156 .include <bsd.prog.mk>