Project

General

Profile

Bug #4 » pkgsrc-nrelease.diff

joerg, 12/09/2005 04:09 PM

View differences:

Makefile 8 Dec 2005 14:27:12 -0000
# $DragonFly: src/nrelease/Makefile,v 1.44 2005/12/04 21:24:13 dillon Exp $
# $DragonFly$
#
all: release
# compat target
installer_release: release
installer_quickrel:
installer_realquickrel: realquickrel
.if make(installer_release) || make(installer_quickrel) || make(installer_realquickrel)
WITH_INSTALLER=
.endif
ISODIR ?= /usr/release
ISOFILE ?= ${ISODIR}/dfly.iso
ISOROOT = ${ISODIR}/root
OBJSYS= ${.OBJDIR}/../sys
KERNCONF ?= GENERIC
PKG_PATH= /usr/freebsd_pkg/sbin
# Specify which packages are required on the ISO, and let the user
# specify additional packages to include. During the `pkgaddiso'
# target, the packages are obtained from PACKAGES_LOC.
#
REQ_PACKAGES= cdrtools-2.01 cvsup-without-gui-16.1h
REL_PACKAGES?= ${REQ_PACKAGES} ${EXTRA_PACKAGES}
.if defined(PACKAGES)
PACKAGES_LOC?= ${PACKAGES}/All
.else
PACKAGES_LOC?= /usr/ports/packages/All
.endif
PACKAGE_SITES?=http://www.bsdinstaller.org/packages/ \
http://cvs.bsdinstaller.org/packages/
PKGSRC_PKG_ADD?= /usr/pkg/sbin/pkg_add
PKGSRC_PKG_PATH?= ${.CURDIR}
PKGSRC_BOOTSTRAP_FILE?= ${PKGSRC_PKG_PATH}/bootstrap-20051127.tar.gz
PKGSRC_DB?= /var/db/pkg
PKGSRC_PREFIX?= /usr/pkg
PKGSRC_RSYNC_SRC?= rsync://packages.stura.uni-rostock.de/dfly14-nrelease
ENV?= env
TAR?= tar
RSYNC_CMD?= rsync -avz
PKGSRC_PACKAGES?= cdrecord
# Specify which root skeletons are required, and let the user include
# their own. They are copied into ISODIR during the `pkgcustomizeiso'
# target; each overwrites the last.
#
REQ_ROOTSKELS= ${.CURDIR}/root
ROOTSKELS?= ${REQ_ROOTSKELS} ${EXTRA_ROOTSKELS}
ROOTSKELS?= ${REQ_ROOTSKELS}
.if defined(WITH_INSTALLER)
PKGSRC_PACKAGES+= dfuibe_installer dfuife_curses
ROOTSKELS+= installer
.endif
# note: we use the '${NRLOBJDIR}/nrelease' construct, that is we add
# the additional '/nrelease' manually, as a safety measure.
......
#########################################################################
release: check clean buildworld1 buildkernel1 \
buildiso customizeiso pkgaddiso mklocatedb mkiso
buildiso customizeiso mklocatedb mkiso
quickrel: check clean buildworld2 buildkernel2 \
buildiso customizeiso pkgaddiso mklocatedb mkiso
realquickrel: check clean \
buildiso customizeiso pkgaddiso mklocatedb mkiso
#########################################################################
# ISO TARGETS WITH INSTALLER #
#########################################################################
INSTALLER_PKGS= libaura-3.1 libdfui-4.1 libinstaller-5.1 \
dfuibe_installer-1.1.6 dfuife_curses-1.5 \
thttpd-notimeout-2.24 dfuife_cgi-1.4
INSTALLER_SKELS= installer
INSTALLER_ENV= EXTRA_PACKAGES="${INSTALLER_PKGS} ${EXTRA_PACKAGES}" \
EXTRA_ROOTSKELS="${INSTALLER_SKELS} ${EXTRA_ROOTSKELS}"
buildiso customizeiso mklocatedb mkiso
installer_check:
@${INSTALLER_ENV} ${MAKE} check
installer_fetchpkgs:
@${INSTALLER_ENV} ${MAKE} fetchpkgs
installer_release:
${INSTALLER_ENV} ${MAKE} release
installer_quickrel:
${INSTALLER_ENV} ${MAKE} quickrel
installer_realquickrel:
${INSTALLER_ENV} ${MAKE} realquickrel
#########################################################################
# HELPER TARGETS #
#########################################################################
realquickrel: check clean buildiso customizeiso mklocatedb mkiso
check:
@if [ ! -f /usr/local/bin/mkisofs ]; then \
echo "You need to install the sysutils/cdrtools port for"; \
echo "this target"; \
exit 1; \
fi
.for PKG in ${REL_PACKAGES}
@if [ ! -f ${PACKAGES_LOC}/${PKG}.tgz ]; then \
echo "Unable to find ${PACKAGES_LOC}/${PKG}.tgz."; \
echo "(Perhaps you need to download or build it first?)"; \
echo ""; \
echo "If you are trying to build the installer, the"; \
echo "required packages can be obtained from:"; \
echo ""; \
echo " http://www.bsdinstaller.org/packages/"; \
echo ""; \
echo "They can be automatically downloaded by issuing:"; \
echo " make installer_fetchpkgs"; \
echo ""; \
exit 1; \
fi
.endfor
@if [ ! -f /usr/pkg/sbin/pkg_add ]; then \
echo "NetBSD pkgsrc has not been bootstrapped. You can"; \
echo "automatically download the pkgsrc and install the"; \
echo "the bootstrap with:"; \
echo " make pkgsrc_fetch"; \
echo " make pkgsrc_bootstrap"; \
exit 1; \
fi
@if [ ! -f /etc/mk.conf ]; then \
echo "NetBSD pkgsrc: /etc/mk.conf must exist. You can"; \
echo "automatically create this file with:"; \
echo " make pkgsrc_conf"; \
exit 1; \
fi
@echo "check: all preqs found"
pkgsrc_fetch:
cd /usr
cvs -d anoncvs@anoncvs.us.netbsd.org:/cvsroot checkout pkgsrc
pkgsrc_bootstrap:
rm -rf /tmp/bootstrap-workdir
cd /usr/pkgsrc/bootstrap && ./bootstrap --workdir=/tmp/bootstrap-workdir
rm -rf /tmp/bootstrap-workdir
fgrep -q LOCALBASE /etc/mk.conf || (echo "you may also have to run make pkgsrc_conf to initialize /etc/mk.conf")
pkgsrc_conf:
.if !exists(/etc/mk.conf)
cp ${.CURDIR}/mk.conf.pkgsrc /etc/mk.conf
.else
fgrep -q BSD_PKG_MK /etc/mk.conf || cat ${.CURDIR}/mk.conf.pkgsrc >> /etc/mk.conf
.endif
fetchpkgs:
.for PKG in ${REL_PACKAGES}
@if [ ! -f ${PACKAGES_LOC}/${PKG}.tgz ]; then \
cd ${PACKAGES_LOC} && \
echo "fetching ${PKG}..." && \
for SITE in ${PACKAGE_SITES}; do \
if [ ! -f ${PKG}.tgz ]; then \
fetch $${SITE}${PKG}.tgz || \
echo "Not available from $${SITE}"; \
fi; \
done; \
if [ ! -f ${PKG}.tgz ]; then \
echo "Couldn't retrieve ${PKG}.tgz!"; \
exit 1; \
fi; \
fi
.endfor
@${ECHO} Testing mkisofs...
@mkisofs --version > /dev/null
@${ECHO} Testing pkg_add and list of packages...
@${ENV} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGSRC_PKG_ADD} -n ${PKGSRC_PACKAGES} > /dev/null 2>&1
@${ECHO} Testing for existence of bootstrap kit...
@[ -r ${PKGSRC_BOOTSTRAP_FILE} ]
buildworld1:
( cd ${.CURDIR}/..; CCVER=${WORLD_CCVER} make buildworld )
......
dev_mkdb -f ${ISOROOT}/var/run/dev.db ${ISOROOT}/dev
customizeiso:
cd /usr/pkgsrc/bootstrap && ./bootstrap --workdir=${NRLOBJDIR}/nrelease/bootstrap-workdir --prefix=${ISOROOT}/usr/pkg
cp ${.CURDIR}/mk.conf.pkgsrc ${ISOROOT}/etc/mk.conf
.for ROOTSKEL in ${ROOTSKELS}
cpdup -X cpignore -o ${ROOTSKEL} ${ISOROOT}
.endfor
......
periodic/monthly/Makefile
cp -R ${.CURDIR}/../etc/${UPGRADE_ITEM} ${ISOROOT}/etc/${UPGRADE_ITEM}
.endfor
pkgcleaniso:
rm -f ${ISOROOT}/tmp/chrootscript
echo "#!/bin/sh" > ${ISOROOT}/tmp/chrootscript
.for PKG in ${REL_PACKAGES}
echo "${PKG_PATH}/pkg_delete -f ${PKG}" >> ${ISOROOT}/tmp/chrootscript
.endfor
chmod a+x ${ISOROOT}/tmp/chrootscript
chroot ${ISOROOT}/ /tmp/chrootscript || exit 0
rm ${ISOROOT}/tmp/chrootscript
pkgaddiso:
rm -f ${ISOROOT}/tmp/chrootscript
echo "#!/bin/sh" > ${ISOROOT}/tmp/chrootscript
.for PKG in ${REL_PACKAGES}
if [ ! -d ${ISOROOT}/var/db/pkg/${PKG} ]; then \
cp ${PACKAGES_LOC}/${PKG}.tgz ${ISOROOT}/tmp/${PKG}.tgz; \
echo "echo 'Installing package ${PKG}...' && \\" >> \
${ISOROOT}/tmp/chrootscript; \
echo "${PKG_PATH}/pkg_add /tmp/${PKG}.tgz && \\" >> \
${ISOROOT}/tmp/chrootscript; \
fi
.endfor
echo "echo 'All packages added successfully!'" >> \
${ISOROOT}/tmp/chrootscript
chmod a+x ${ISOROOT}/tmp/chrootscript
chroot ${ISOROOT}/ /tmp/chrootscript
rm ${ISOROOT}/tmp/chrootscript
.for PKG in ${REL_PACKAGES}
rm -f ${ISOROOT}/tmp/${PKG}.tgz
cd ${ISOROOT} && ${TAR} xzf ${PKGSRC_BOOTSTRAP_FILE}
.for pkg in ${PKGSRC_PACKAGES}
${ENV} PKG_PATH=${PKGSRC_PKG_PATH} ${PKGSRC_PKG_ADD} -I -K ${ISOROOT}${PKGSRC_DB} -p ${ISOROOT}${PKGSRC_PREFIX} ${pkg}
.endfor
mklocatedb:
......
-R -J -V DragonFly -o ${ISOFILE} . )
clean:
rm -rf /tmp/bootstrap-workdir
if [ -d ${ISOROOT} ]; then chflags -R noschg ${ISOROOT}; fi
if [ -d ${ISOROOT} ]; then rm -rf ${ISOROOT}/*; fi
if [ -d ${NRLOBJDIR}/nrelease ]; then rm -rf ${NRLOBJDIR}/nrelease; fi
......
realclean: clean
rm -rf ${OBJSYS}/${KERNCONF}
fetch:
mkdir -p ${PKGSRC_PKG_PATH}
${RSYNC_CMD} ${PKGSRC_RSYNC_SRC} ${PKGSRC_PKG_PATH}
.PHONY: all release installer_release quickrel installer_quickrel realquickrel
.PHONY: installer_realquickrel check buildworld1 buildworld2
.PHONY: buildkernel1 buildkernel2 buildiso customizeiso mklocatedb mkiso
.PHONE: clean realclean fetch
.include <bsd.prog.mk>
installer/etc/defaults/pfi.conf 8 Dec 2005 14:27:12 -0000
pfi_frontend="curses"
# Determines which installer backend to use. Typically this is
# "/usr/local/sbin/dfuibe_installer", the traditional C backend,
# "/usr/pkg/sbin/dfuibe_installer", the traditional C backend,
# but can be changed to start an alternate backend.
pfi_backend="/usr/local/sbin/dfuibe_installer"
pfi_backend="/usr/pkg/sbin/dfuibe_installer"
# When using the curses frontend:
# Set the amount of time, in milliseconds, which must pass after
......
# EXAMPLE 3:
# Use a custom backend.
#
# pfi_backend="/usr/local/sbin/my_custom_backend"
# pfi_backend="/usr/pkg/sbin/my_custom_backend"
installer/usr/local/bin/installer 8 Dec 2005 14:27:12 -0000
background_backend $RENDEZVOUS $pfi_dfui_transport &
sleep 1
ESCDELAY=$pfi_curses_escdelay \
/usr/local/sbin/dfuife_curses \
/usr/pkg/sbin/dfuife_curses \
-r $RENDEZVOUS \
-t $pfi_dfui_transport \
-b /usr/local/share/dfuife_curses/fred.txt \
-b /usr/pkg/share/dfuife_curses/fred.txt \
2>/dev/null
pfi_frontend=none
fi
......
# Frontend is already running.
else
ESCDELAY=$pfi_curses_escdelay \
/usr/local/sbin/dfuife_curses \
/usr/pkg/sbin/dfuife_curses \
-r $RENDEZVOUS \
-t $pfi_dfui_transport \
-b /usr/local/share/dfuife_curses/fred.txt \
-b /usr/pkg/share/dfuife_curses/fred.txt \
2>/dev/ttyv0 </dev/ttyv1 >/dev/ttyv1 &
fi
rm -f /tmp/ps.txt
(2-2/2)