xref: /dragonfly/nrelease/Makefile (revision 927da715)
1# $DragonFly: src/nrelease/Makefile,v 1.90 2008/09/01 21:20:30 swildner Exp $
2#
3
4#########################################################################
5#				ENHANCEMENTS	 			#
6#########################################################################
7
8# These targets are now obsolete and should not be used
9#
10installer_release: warning release
11installer_quickrel: warning quickrel
12installer_realquickrel: warning realquickrel
13installer_fetch: warning fetch
14
15.if make(installer_release) || make(installer_quickrel) || make(installer_realquickrel) || make(installer_fetch)
16WITH_INSTALLER=
17.endif
18
19# New method e.g. 'make installer fetch'.  A series of enhancement
20# targes may be specified which set make variables which enhance
21# the build in various ways.
22#
23gui installer:
24
25warning:
26	@echo "WARNING: The installer_* targets are now obsolete, please"
27	@echo "use 'make installer blah' instead of 'make installer_blah'"
28	@echo ""
29	@echo "will continue in 10 seconds"
30	@sleep 10
31
32.if make(gui)
33WITH_GUI=
34.endif
35.if make(installer)
36WITH_INSTALLER=
37.endif
38
39#########################################################################
40#				 SETUP		 			#
41#########################################################################
42
43ISODIR ?= /usr/release
44ISOROOT ?= ${ISODIR}/root
45OBJSYS= ${.OBJDIR}/../sys
46
47.if make(gui)
48KERNCONF ?= DFLYLIVE VKERNEL DFLYLIVE-SMP DFLYLIVE-SMP-NOAPIC
49.else
50KERNCONF ?= GENERIC VKERNEL
51.endif
52
53PKGSRC_PREFIX?=		/usr/pkg
54PKGBIN_PKG_ADD?=	${PKGSRC_PREFIX}/sbin/pkg_add
55PKGBIN_PKG_DELETE?=	${PKGSRC_PREFIX}/sbin/pkg_delete
56PKGBIN_PKG_ADMIN?=	${PKGSRC_PREFIX}/sbin/pkg_admin
57PKGBIN_MKISOFS?=	${PKGSRC_PREFIX}/bin/mkisofs
58PKGSRC_PKG_PATH?=	${ISODIR}/packages
59PKGSRC_DB?=		/var/db/pkg
60PKGSRC_BOOTSTRAP_URL?=	http://pkgbox.dragonflybsd.org/DragonFly-pkgsrc-packages/i386/1.12.0-RELEASE-BUILD
61
62ENVCMD?=	env
63TAR?=	tar
64
65PKGSRC_BOOTSTRAP_KIT?=	bootstrap-kit-20080211
66CVSUP_BOOTSTRAP_KIT?=	cvsup-bootstrap-20070716
67
68# Default packages to be installed on the release ISO.
69#
70PKGSRC_PACKAGES?=	cdrtools-ossdvd-2.01.1.36nb2.tgz \
71			isc-dhcp-base-4.0.0.tgz isc-dhcp-server-4.0.0.tgz
72
73# Even though buildiso wipes the packages, our check target has to run
74# first and old packages (listed as they appear in pkg_info) must be
75# cleaned out in order for the pkg_add -n test we use in the check target
76# to operate properly.
77#
78OLD_PKGSRC_PACKAGES?= cdrtools-2.01.01.27nb1 cdrecord-2.00.3nb2 \
79		      bootstrap-kit-20070205
80
81# Specify which root skeletons are required, and let the user include
82# their own.  They are copied into ISODIR during the `pkgcustomizeiso'
83# target; each overwrites the last.
84#
85REQ_ROOTSKELS= ${.CURDIR}/root
86ROOTSKELS?=	${REQ_ROOTSKELS}
87
88.if defined(WITH_INSTALLER)
89OLD_PKGSRC_PACKAGES+=	dfuibe_installer-1.1.6 gettext-lib-0.14.5 \
90			dfuibe_installer-1.1.7nb1 dfuife_curses-1.5 \
91			gettext-lib-0.14.6 gettext-tools-0.14.6nb1 \
92			libaura-3.1 libdfui-4.2 libinstaller-5.1
93ROOTSKELS+=		${.CURDIR}/installer
94.endif
95
96.if defined(WITH_GUI)
97ISOFILE?=		${ISODIR}/dfly-gui.iso
98PKGSRC_PACKAGES+=	modular-xorg-apps \
99			modular-xorg-drivers \
100			modular-xorg-fonts \
101			modular-xorg-libs \
102			fluxbox \
103			firefox3 \
104			xpdf \
105			zsh \
106			emacs \
107			vim \
108			pidgin \
109			irssi \
110			xchat \
111			rxvt-unicode \
112			eterm \
113			perl \
114			nano \
115			bash \
116			exctags \
117			zip \
118			sudo \
119			links-gui \
120			nmap \
121			wget \
122			terminus-font \
123			rsync \
124			idesk \
125			screen
126ROOTSKELS+=		${.CURDIR}/gui
127.endif
128
129ISOFILE ?= ${ISODIR}/dfly.iso
130
131# note: we use the '${NRLOBJDIR}/nrelease' construct, that is we add
132# the additional '/nrelease' manually, as a safety measure.
133#
134NRLOBJDIR?= /usr/obj
135
136WORLD_CCVER ?= ${CCVER}
137KERNEL_CCVER ?= ${CCVER}
138
139#########################################################################
140#				BASE ISO TARGETS 			#
141#########################################################################
142
143release:	check clean buildworld1 buildkernel1 \
144		buildiso syssrcs customizeiso mklocatedb mkiso
145
146quickrel:	check clean buildworld2 buildkernel2 \
147		buildiso syssrcs customizeiso mklocatedb mkiso
148
149realquickrel:	check clean buildiso syssrcs customizeiso mklocatedb mkiso
150
151quick:		quickrel
152
153realquick:	realquickrel
154
155#########################################################################
156#			   CORE SUPPORT TARGETS 			#
157#########################################################################
158
159check:
160.if !exists(${PKGBIN_PKG_ADD})
161	@echo "Unable to find ${PKGBIN_PKG_ADD}.  You can use the following"
162	@echo "command to bootstrap pkgsrc:"
163	@echo "    make pkgsrc_bootstrap"
164	@exit 1
165.endif
166.for PKG in ${OLD_PKGSRC_PACKAGES}
167	@${ENVCMD} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGBIN_PKG_DELETE} -K ${ISOROOT}${PKGSRC_DB} ${PKG} > /dev/null 2>&1 || exit 0
168.endfor
169.for PKG in ${PKGSRC_PACKAGES}
170	@${ENVCMD} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGBIN_PKG_ADD} -K ${ISOROOT}${PKGSRC_DB} -n ${PKG} > /dev/null 2>&1 || \
171		(echo "Unable to find ${PKG}, use the following command to fetch required packages:"; echo "    make [installer] fetch"; exit 1)
172.endfor
173.if !exists(${PKGBIN_MKISOFS})
174	@echo "mkisofs is not installed.  It is part of the cdrecord package."
175	@echo "You can install it with:"
176	@echo "    make pkgsrc_cdrecord"
177	@exit 1
178.endif
179.if !exists(${PKGSRC_PKG_PATH}/${PKGSRC_BOOTSTRAP_KIT}.tgz)
180	@echo "The pkgsrc bootstrap kit is not installed.  You can install it with:"
181	@echo "    make [installer] fetch"
182	@exit 1
183.endif
184.if !exists(${PKGSRC_PKG_PATH}/${CVSUP_BOOTSTRAP_KIT}.tgz)
185	@echo "The cvsup bootstrap kit is not installed.  You can install it with:"
186	@echo "    make [installer] fetch"
187	@exit 1
188.endif
189
190buildworld1 buildworld2:
191	cd ${.CURDIR}/..; CCVER=${WORLD_CCVER} make ${WITH_INSTALLER:C/^/-DWANT_INSTALLER/} ${.TARGET:C/build(.*)2/quick\1/:C/1//}
192
193buildkernel1 buildkernel2:
194.if make(gui)
195	cd ${.CURDIR}/..; \
196	for kernconf in ${KERNCONF}; do \
197		CCVER=${KERNEL_CCVER} make ${.TARGET:C/build(.*)2/quick\1/:C/1//} \
198			KERNCONF=$${kernconf} KERNCONFDIR=${.CURDIR}/gui/root; \
199	done
200.else
201	cd ${.CURDIR}/..; \
202	first=; \
203	for kernconf in ${KERNCONF}; do \
204		CCVER=${KERNEL_CCVER} make ${.TARGET:C/build(.*)2/quick\1/:C/1//} \
205			KERNCONF=$${kernconf} \
206			$${first:+-DNO_MODULES}; \
207		first=done; \
208	done
209.endif
210
211# note that we do not want to mess with any /usr/obj directories not related
212# to buildworld, buildkernel, or nrelease, so we must supply the proper
213# MAKEOBJDIRPREFIX for targets that are not run through the buildworld and
214# buildkernel mechanism.
215#
216buildiso:
217	if [ ! -d ${ISOROOT} ]; then mkdir -p ${ISOROOT}; fi
218	if [ ! -d ${NRLOBJDIR}/nrelease ]; then mkdir -p ${NRLOBJDIR}/nrelease; fi
219	( cd ${.CURDIR}/..; make ${WITH_INSTALLER:C/^/-DWANT_INSTALLER/} DESTDIR=${ISOROOT} installworld )
220	( cd ${.CURDIR}/../etc; MAKEOBJDIRPREFIX=${NRLOBJDIR}/nrelease \
221		make -m ${.CURDIR}/../share/mk DESTDIR=${ISOROOT} distribution )
222	cpdup ${ISOROOT}/etc ${ISOROOT}/etc.hdd
223.if make(gui)
224	if [ ! -d ${ISOROOT}/kernel.smp ]; then mkdir -p ${ISOROOT}/kernel.smp; fi
225	cd ${.CURDIR}/..; \
226	make installkernel DESTDIR=${ISOROOT} \
227	KERNCONF=DFLYLIVE DESTKERNNAME=kernel KERNCONFDIR=${.CURDIR}/gui/root; \
228	cd ${.CURDIR}/..; \
229	make installkernel DESTDIR=${ISOROOT} \
230	KERNCONF=VKERNEL DESTKERNNAME=kernel.VKERNEL -DNO_MODULES KERNCONFDIR=${.CURDIR}/gui/root; \
231	cd ${.CURDIR}/..; \
232	make installkernel DESTDIR=${ISOROOT}/kernel.smp \
233	KERNCONF=DFLYLIVE-SMP DESTKERNNAME=kernel KERNCONFDIR=${.CURDIR}/gui/root; \
234	cd ${.CURDIR}/..; \
235	make installkernel DESTDIR=${ISOROOT}/kernel.smp \
236	KERNCONF=DFLYLIVE-SMP-NOAPIC DESTKERNNAME=kernel.noapic \
237		KERNCONFDIR=${.CURDIR}/gui/root -DNO_MODULES;
238.else
239	cd ${.CURDIR}/..; \
240	first=; \
241	for kernconf in ${KERNCONF}; do \
242		make DESTDIR=${ISOROOT} \
243			installkernel KERNCONF=$${kernconf} \
244			$${first:+DESTKERNNAME=kernel.$${kernconf}} \
245			$${first:+-DNO_MODULES}; \
246		first=done; \
247	done
248.endif
249	ln -s kernel ${ISOROOT}/kernel.BOOTP
250	mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.local.dist -p ${ISOROOT}/usr/local/
251	mtree -deU -f ${.CURDIR}/../etc/mtree/BSD.var.dist -p ${ISOROOT}/var
252	dev_mkdb -f ${ISOROOT}/var/run/dev.db ${ISOROOT}/dev
253
254# Include kernel sources on the release CD (~14MB)
255#
256syssrcs:
257.if !defined(WITHOUT_SRCS)
258	( cd ${.CURDIR}/../..; tar --exclude CVS -cf - src/Makefile src/Makefile.inc1 src/sys | bzip2 -9 > ${ISOROOT}/usr/src-sys.tar.bz2 )
259.endif
260
261customizeiso:
262	(cd ${PKGSRC_PKG_PATH}; tar xzpf ${CVSUP_BOOTSTRAP_KIT}.tgz)
263.for ROOTSKEL in ${ROOTSKELS}
264	cpdup -X cpignore -o ${ROOTSKEL} ${ISOROOT}
265.endfor
266	rm -rf ${ISOROOT}/tmp/bootstrap ${ISOROOT}/usr/obj/pkgsrc
267	cd ${ISOROOT}; tar xvzpf ${PKGSRC_PKG_PATH}/${PKGSRC_BOOTSTRAP_KIT}.tgz
268	cp -p ${PKGSRC_PKG_PATH}/${CVSUP_BOOTSTRAP_KIT}/usr/local/bin/cvsup ${ISOROOT}/usr/local/bin/cvsup
269	cp -p ${PKGSRC_PKG_PATH}/${CVSUP_BOOTSTRAP_KIT}/usr/local/man/man1/cvsup.1 ${ISOROOT}/usr/local/man/man1/cvsup.1
270	rm -rf ${ISOROOT}/tmp/bootstrap ${ISOROOT}/usr/obj/pkgsrc
271	rm -rf `find ${ISOROOT} -type d -name CVS -print`
272	rm -rf ${ISOROOT}/usr/local/share/pristine
273	pwd_mkdb -p -d ${ISOROOT}/etc ${ISOROOT}/etc/master.passwd
274.for UPGRADE_ITEM in Makefile			\
275		     etc.${MACHINE_ARCH} 	\
276		     isdn/Makefile		\
277		     rc.d/Makefile		\
278		     periodic/Makefile		\
279		     periodic/daily/Makefile	\
280		     periodic/security/Makefile	\
281		     periodic/weekly/Makefile	\
282		     periodic/monthly/Makefile
283	cp -R ${.CURDIR}/../etc/${UPGRADE_ITEM} ${ISOROOT}/etc/${UPGRADE_ITEM}
284.endfor
285.for PKG in ${PKGSRC_PACKAGES}
286	${ENVCMD} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGBIN_PKG_ADD} -I -K ${ISOROOT}${PKGSRC_DB} -p ${ISOROOT}${PKGSRC_PREFIX} ${PKG}
287.endfor
288	find ${ISOROOT}${PKGSRC_DB} -name +CONTENTS -type f -exec sed -i '' -e 's,${ISOROOT},,' -- {} \;
289	${PKGBIN_PKG_ADMIN} -K ${ISOROOT}${PKGSRC_DB} rebuild
290.if defined(WITH_GUI)
291.for FONT in 75dpi 100dpi misc Type1 TTF
292	chroot ${ISOROOT} /usr/pkg/bin/mkfontdir /usr/pkg/lib/X11/fonts/${FONT}
293.endfor
294.endif
295
296mklocatedb:
297	( find -s ${ISOROOT} -path ${ISOROOT}/tmp -or \
298		-path ${ISOROOT}/usr/tmp -or -path ${ISOROOT}/var/tmp \
299		-prune -o -print | sed -e 's#^${ISOROOT}##g' | \
300		/usr/libexec/locate.mklocatedb \
301		-presort >${ISOROOT}/var/db/locate.database )
302
303mkiso:
304	( cd ${ISOROOT}; ${PKGBIN_MKISOFS} -b boot/cdboot -no-emul-boot \
305		-R -J -V DragonFly -o ${ISOFILE} . )
306
307clean:
308	if [ -d ${ISOROOT} ]; then chflags -R noschg ${ISOROOT}; fi
309	if [ -d ${ISOROOT} ]; then rm -rf ${ISOROOT}/*; fi
310	if [ -d ${NRLOBJDIR}/nrelease ]; then rm -rf ${NRLOBJDIR}/nrelease; fi
311
312realclean:	clean
313	rm -rf ${OBJSYS}/${KERNCONF}
314	# do not use PKGSRC_PKG_PATH here, we do not want to destroy an
315	# override location.
316	if [ -d ${ISODIR}/packages ]; then rm -rf ${ISODIR}/packages; fi
317
318fetch:
319	@if [ ! -d ${PKGSRC_PKG_PATH} ]; then mkdir -p ${PKGSRC_PKG_PATH}; fi
320.for PKG in ${PKGSRC_PACKAGES}
321	@${ENVCMD} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGBIN_PKG_ADD} -K ${ISOROOT}${PKGSRC_DB} -n ${PKG} > /dev/null 2>&1 || \
322	(cd ${PKGSRC_PKG_PATH}; echo "Fetching ${PKGSRC_BOOTSTRAP_URL}/${PKG}"; fetch ${PKGSRC_BOOTSTRAP_URL}/${PKG})
323.endfor
324.if !exists(${PKGSRC_PKG_PATH}/${PKGSRC_BOOTSTRAP_KIT}.tgz)
325	(cd ${PKGSRC_PKG_PATH}; fetch ${PKGSRC_BOOTSTRAP_URL}/${PKGSRC_BOOTSTRAP_KIT}.tgz)
326.endif
327.if !exists(${PKGSRC_PKG_PATH}/${CVSUP_BOOTSTRAP_KIT}.tgz)
328	(cd ${PKGSRC_PKG_PATH}; fetch ${PKGSRC_BOOTSTRAP_URL}/${CVSUP_BOOTSTRAP_KIT}.tgz)
329.endif
330
331pkgsrc_bootstrap:
332	mkdir -p ${PKGSRC_PKG_PATH}
333.if !exists(${PKGSRC_PKG_PATH}/${PKGSRC_BOOTSTRAP_KIT}.tgz)
334	(cd ${PKGSRC_PKG_PATH}; fetch ${PKGSRC_BOOTSTRAP_URL}/${PKGSRC_BOOTSTRAP_KIT}.tgz)
335.endif
336	(cd ${PKGSRC_PKG_PATH}; tar xzpf ${PKGSRC_BOOTSTRAP_KIT}.tgz)
337	(cd ${PKGSRC_PKG_PATH}/${PKGSRC_BOOTSTRAP_KIT}/bootstrap; ./bootstrap)
338
339pkgsrc_cdrecord:
340.if !exists (${PKGBIN_MKISOFS})
341	${PKGBIN_PKG_ADD} ${PKGSRC_PKG_PATH}/cdrtools*
342.endif
343
344
345.PHONY: all release installer_release quickrel installer_quickrel realquickrel
346.PHONY: installer_fetch installer
347.PHONY: quick realquick
348.PHONY: installer_realquickrel check buildworld1 buildworld2
349.PHONY: buildkernel1 buildkernel2 buildiso customizeiso mklocatedb mkiso
350.PHONY: clean realclean fetch
351
352.include <bsd.prog.mk>
353