diff --git a/minix/Makefile b/minix/Makefile new file mode 100644 index 000000000..217ffa20b --- /dev/null +++ b/minix/Makefile @@ -0,0 +1,14 @@ +# $NetBSD: $ +# + +COMMENT= Minix specific packages + +# The following needs to be re-imported and fixed. +# For current state, please see branch 3.3.0-dev +#SUBDIR+= dde-linux26 +#SUBDIR+= dde-linux26-usb-drivers +#SUBDIR+= git-review +#SUBDIR+= netdrv_tg3 +#SUBDIR+= stp + +.include "../mk/misc/category.mk" diff --git a/minix/limited_list.minimal b/minix/limited_list.minimal new file mode 100644 index 000000000..d904e2228 --- /dev/null +++ b/minix/limited_list.minimal @@ -0,0 +1,8 @@ +pkgtools/pkgin +devel/git-base +devel/binutils +lang/clang +lang/gcc45 +devel/bmake +editors/vim +security/openssh diff --git a/minix/limited_list.patched b/minix/limited_list.patched new file mode 100644 index 000000000..815ba1af1 --- /dev/null +++ b/minix/limited_list.patched @@ -0,0 +1,43 @@ +x11/pixman +www/curl +textproc/libxml2 +textproc/icu +shells/bash +security/openssh +security/openssl +security/p5-IO-Socket-SSL +security/heimdal +print/ghostscript +pkgtools/pkgin +pkgtools/pkg_install +pkgtools/digest +pkgtools/bootstrap-mk-files +minix/stp +minix/netdrv_tg3 +minix/git-review +minix/dde-linux26-usb-drivers +minix/dde-linux26 +lang/tcl +lang/python27 +lang/python26 +lang/perl5 +lang/gcc45 +lang/clang +fonts/harfbuzz +fonts/fontconfig +devel/pth +devel/pkg-config +devel/ncurses +devel/mk-configure +devel/m4 +devel/libidn +devel/libtool +devel/glib2 +devel/git-base +devel/gettext +devel/cmake +devel/bison +devel/binutils +devel/bmake +databases/gdbm +converters/libiconv diff --git a/minix/minibootstrap.sh b/minix/minibootstrap.sh new file mode 100644 index 000000000..d99075e51 --- /dev/null +++ b/minix/minibootstrap.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +# This .sh script can be executed by the base system to let +# the pkgsrc system put things right. Currently only needed +# for mk.conf. + +MKCONF=mk.conf.minix +if [ ! -f $MKCONF ] +then echo "No $MKCONF. Please run me from pkgsrc/minix/." + exit 1 +fi + +cp $MKCONF /usr/pkg/etc/mk.conf + diff --git a/minix/mk.conf.minix b/minix/mk.conf.minix new file mode 100644 index 000000000..9a845dc4a --- /dev/null +++ b/minix/mk.conf.minix @@ -0,0 +1,125 @@ +# We ensure this Makefile is only seen during pkgsrc builds +.ifdef BSD_PKG_MK + +# Allow local overrides: +.-include "${.PARSEDIR}/local.mk.conf" + +####################################################################### +# Settings which differs from platform/NetBSD.mk +unix= We run Minix. +OS= Minix +OS_VARIANT= Minix + +NOLINT= 1 +MKCATPAGES?= yes + +ROOT_GROUP?= operator +BINGRP?= operator +MANGRP?= operator +INFOGRP?= operator +DOCGRP?= operator +NLSGRP?= operator + +NOLOGIN?= /bin/false + +ULIMIT_CMD_datasize?= : +ULIMIT_CMD_stacksize?= : +ULIMIT_CMD_memorysize?= : + +PS?= /usr/bin/ps +# Our nroff can't handle -mandoc correctly +NROFF?= mandoc + +PREFER_NATIVE_PTHREADS= no + +# In some cases, MACHINE_GNU_PLATFORM get set back to i386--netbsdelf, +# make sure the correct triple is set. +# LSC: Still required? +MACHINE_GNU_PLATFORM= ${MACHINE_ARCH}-elf32-minix + +####################################################################### +# Download URLs for sources and packages + +MASTER_SITE_MINIX?= \ + http://www.minix3.org/pkgsrc/distfiles/minix/${OS_VERSION}/ + +MASTER_SITE_BACKUP?= \ + http://www.minix3.org/pkgsrc/distfiles/local/${OS_VERSION}/ \ + ftp://ftp.netbsd.org/pub/pkgsrc/distfiles/${DIST_SUBDIR} \ + ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR} \ + http://ftp.jp.netbsd.org/pub/pkgsrc/distfiles/${DIST_SUBDIR} + +MASTER_SITE_OVERRIDE?= \ + ${MASTER_SITE_MINIX} + +####################################################################### +# PKGSRC Paths + +# defaults to /var, which is too small on MINIX +VARBASE?= /usr/pkg/var +PKG_DBDIR?= /usr/pkg/var/db/pkg +PKG_TOOLS_BIN?= /usr/pkg/sbin + +# By default builds within pkgsrc, we don't want that +WRKOBJDIR?= ${PKGSRCDIR}/work + +# Defaults to ${PKGSRCDIR}/packages, seems we don't want either. +PACKAGES?= ${PKGSRCDIR}/packages/${OS_VERSION}/${MACHINE_ARCH} + +####################################################################### +# PKGSRC tools +PKGSRC_COMPILER?= clang + +.if ${PKGSRC_COMPILER} == "clang" +CLANGBASE?= /usr +HAVE_LLVM?= 34 + +CC?= clang +CXX?= clang++ +CPP?= clang -E +.else +AS?= gas +CC?= gcc +CXX?= g++ +.endif + +####################################################################### +# Compilation Flags for all packages +CFLAGS+= -march=i586 + +# Headers are available, but not yet fully supported. +CONFIGURE_ENV+= ac_cv_header_spawn_h=no + +CONFIGURE_ENV+= ac_cv_func_msync=no +CONFIGURE_ENV+= gl_have_pthread=no + +IMAKEOPTS+= -DBuildHtmlManPages=NO + +####################################################################### +# PKGSRC Build Options +SKIP_LICENSE_CHECK?= yes +ALLOW_VULNERABLE_PACKAGES?= yes + +PKG_DEFAULT_OPTIONS?= -inet6 -threads + +PKG_RCD_SCRIPTS?= yes +RCD_SCRIPTS_DIR?= ${LOCALBASE}/etc/rc.d + +#LSC: the following packages are not yet part of the base system, as expected +# on NetBSD +PREFER_PKGSRC+= groff +#PREFER_PKGSRC?= MesaLib Xft2 Xrandr Xrender glu fontconfig freetype2 + +PYTHON_VERSION_DEFAULT?= 27 +PYPACKAGE?= python27 + +#LSC: Otherwise fails on missing files when generating the tarball +ZSH_STATIC?= yes + +####################################################################### +# Package-specific default options +PKG_OPTIONS.gcc45?= -gcc-java -gcc-fortran +PKG_OPTIONS.groff?= -x11 +PKG_OPTIONS.ghostscript?= -x11 + +.endif # BSD_PKG_MK diff --git a/minix/pbulk-ng.sh b/minix/pbulk-ng.sh new file mode 100755 index 000000000..96fec1245 --- /dev/null +++ b/minix/pbulk-ng.sh @@ -0,0 +1,472 @@ +#!/bin/sh + +# This script tries to optimise time building for jailed pbulk builds +# at the expense of disk space. +# +# A full (all packages) build requires currently about: +# - 1.0GB pkgsrc itself +# - 0.3GB chroot-minix +# - 1.3GB chroot-bootstrap +# - 1.3GB chroot-pbulk (w/o distfiles) +# - 24.0GB distfiles (sources of the packages) +# - 20.0GB during build, to store temporary files and produced packages +# ========== +# ~48.0GB total +# +# I (LSC) recommend a partition of at least 100GB for a full build. +# +# this will create the following hierarchy (assuming defaults) : +# /usr/bbuild +# /usr/bbuild/chroot-minix Pristine minix rootfs +# /usr/bbuild/chroot-bootstrap Pristine minix + bootstrapped pbulk tools +# /usr/bbuild/chroot-pbulk Root system with build pkgsrc. +# +# Upon successful completion the following will be copied into: +# /usr/bbuild/save/YYYYMMDD-HHmmss.logs pbulk-log files +# /usr/bbuild/save/YYYYMMDD-HHmmss.packages generated packages +# /usr/bbuild/save/YYYYMMDD-HHmmss.disfiles fetched distfiles +# + +# Exit at the first error +set -e + +# Some useful constant +YES="yes" +NO="no" + +# Defaults +: ${TOPDIR=/usr/bbuild} +: ${SAVEDIR=/usr/bbuild/save} +: ${TOOLDIR=/usr/bbuild/tooldir.$(uname -p)} +: ${MINIXSRCDIR=/usr/src} +: ${PKGSRCDIR=/usr/pkgsrc} +: ${DISTFILESDIR=/usr/pkgsrc/distfiles} +: ${USETOOLS=no} + +: ${ROOT_MINIX=${TOPDIR}/chroot-minix} +: ${ROOT_BOOTSTRAP=${TOPDIR}/chroot-bootstrap} +: ${ROOT_PBULK=${TOPDIR}/chroot-pbulk} + +# By default copy the local pkgsrc repository +: ${PKGSRC_COPY=${YES}} +: ${PKGSRC_REMOTE=pkgsrc} +: ${PKGSRC_URL=git://git.minix3.org/pkgsrc.git} +: ${PKGSRC_BRANCH=minix-master} +# Destination pkgsrc git, absolute path, has to contain ROOT_BOOTSTRAP! +: ${PKGSRC_GIT=${ROOT_BOOTSTRAP}/usr/pkgsrc/.git} + +# By default re-use root FS if available +: ${BUILD_ROOT_BOOTSTRAP=${NO}} +: ${BUILD_ROOT_MINIX=${NO}} +: ${BUILD_ROOT_PBULK=${NO}} + +# By default copy to a safe place the generated packages, distfiles and logs +: ${SAVE_PACKAGES=${YES}} +: ${SAVE_DISTFILES=${YES}} +: ${SAVE_LOGS=${YES}} + +# Use tools through variables, ease the debug process +: ${DRY_RUN=${NO}} + +# Some private variables which may used from within the chroots +: ${CMD_BOOTSTRAP=./bootstrap/bootstrap} +: ${CMD_BOOTSTRAP_CLEANUP=./bootstrap/cleanup} +# This cannot be changed without updating pbulk.conf +: ${BOOTSTRAP_PREFIX=/usr/pbulk} +: ${PKGSRC_PREFIX=/usr/pkgsrc} + +# Generate a clean PATH for the jails. +CHROOT_PATH="" +for d in ${BOOTSTRAP_PREFIX} /usr/pkg /usr '' +do + CHROOT_PATH=${CHROOT_PATH}:${d}/bin:${d}/sbin +done +LD_CHROOT_PATH=/usr/pkg/lib:/usr/lib:/lib + +if [ ! -d $MINIXSRCDIR ] +then + echo Please install the minix sources in $MINIXSRCDIR. + exit 1 +fi + +#============================================================================ +if [ ${DRY_RUN} = ${YES} ] +then + RM='echo ##: rm ' + MV='echo ##: mv ' + CP='echo ##: cp ' + CD='echo ##: cd ' + LN='echo ##: ln ' + SED='echo ##: sed ' + CHROOT='echo ##: chroot ' + MKDIR='echo ##: mkdir ' + TAR='echo ##: tar ' + EXPORT='echo ##: export ' + PKG_ADD='echo ##: pkg_add ' + SYNCTREE='echo ##: synctree ' + GIT='echo ##: git ' + BMAKE='echo ##: bmake ' + CMD_RELEASE="echo ##: ${CMD_RELEASE} " + CMD_BOOTSTRAP="echo ##: ${CMD_BOOTSTRAP} " + CMD_BOOTSTRAP_CLEANUP="echo ##: ${CMD_BOOTSTRAP_CLEANUP} " + CMD_RESET_ERRORS="echo ##: test ! -f /usr/pbulk-logs/meta/error || rm /usr/pbulk-logs/meta/error " + CMD_BULKBUILD="echo ##: bulkbuild " + CMD_BULKBUILD_RESTART="echo ##: bulkbuild-restart " + + DIRNAME='echo _dirname_ ' + # Kind of an exception, but as it used to collect + # all the output of a phase, we want it to be echoed, + # instead of saved in a log file + TEE="cat - " +else + RM='rm ' + MV='mv ' + CP='cp ' + CD='cd ' + LN='ln ' + SED='sed ' + DIRNAME='dirname ' + CHROOT='chroot ' + MKDIR='mkdir ' + TAR='tar ' + EXPORT='export ' + PKG_ADD='pkg_add ' + SYNCTREE='synctree ' + GIT='git ' + BMAKE='bmake ' + TEE='tee ' + CMD_RESET_ERRORS="test ! -f /usr/pbulk-logs/meta/error || rm /usr/pbulk-logs/meta/error " + CMD_BULKBUILD="bulkbuild " + CMD_BULKBUILD_RESTART="bulkbuild-restart " +fi + +# Check at which step which should start : +[ ! -d "${ROOT_MINIX}" ] && BUILD_ROOT_MINIX=${YES} +[ ! -d "${ROOT_BOOTSTRAP}" ] && BUILD_ROOT_BOOTSTRAP=${YES} +[ ! -d "${ROOT_PBULK}" ] && BUILD_ROOT_PBULK=${YES} + +# Ensure that all the steps following the first to be generated +# are also re-generated. +[ ${BUILD_ROOT_MINIX} = ${YES} ] && BUILD_ROOT_BOOTSTRAP=${YES} +[ ${BUILD_ROOT_BOOTSTRAP} = ${YES} ] && BUILD_ROOT_PBULK=${YES} + +#============================================================================ +build_minix() { + echo ":-> Building minix chroot in ${ROOT_MINIX}" + ( + exec 2>&1 + set -e + + echo ":--> Building minix sources [${BUILD_START}]" + + ${CD} ${MINIXSRCDIR} + + # Make fetch scripts executable + find . -name fetch.sh -exec chmod 755 {} \; + + # Detect the default toolchain, and install the same in the + # jail. Having cc point to gcc while clang is installed, is + # unsupported. Either this is a gcc-only system, or cc points + # to clang, as it is the default compiler. + which clang > /dev/null; _clang=$? + which gcc > /dev/null; _gcc=$? + which cc > /dev/null; _cc=$? + + if [ ! ${_gcc} = 0 -a ! ${_clang} = 0 ]; then + echo "No toolchain detected, please install clang or gcc." + exit 1 + fi + + if [ ${_cc} = 0 -a ${_clang} = 0 -a + ! $(cc --version | grep -q clang) ] + then + echo "It is unsupported to have cc set to someting else than clang," + echo "while clang is also installed on the system." + echo + echo "Please fix your cc symlink, or uninstall clang." + + exit 1 + fi + + if [ ${_clang} = 0 ]; + then + toolchain=" MKLLVM=yes MKLIBCXX=yes MKGCCCMDS=no MKLIBSTDCXX=no" + fi + + # If both gcc and clang are installed, we still prefer clang. + if [ ${_gcc} = 0 -a ! ${_clang} = 0 ]; + then + toolchain=" MKLLVM=no MKLIBCXX=no MKGCCCMDS=yes MKLIBSTDCXX=yes" + + # Download Binutils, gmake & texinfo + ./external/lgpl3/mpfr/fetch.sh + ./external/lgpl3/gmp/fetch.sh + ./external/lgpl3/mpc/fetch.sh + ./external/gpl3/gcc/fetch.sh + fi + + # Download Binutils, gmake & texinfo + ./gnu/dist/fetch.sh + ./external/gpl3/binutils/fetch.sh + + make build etcforce \ + USETOOLS=${USETOOLS} \ + TOOLDIR=${TOOLDIR} \ + DESTDIR=${ROOT_MINIX} \ + SLOPPY_FLIST=yes \ + MKUPDATE=yes \ + ${toolchain} \ + MKKYUA=no \ + MKATF=no + + echo ":--> Copying config files" + for f in hosts resolv.conf + do + [ -f /etc/${f} ] && ${CP} /etc/${f} ${ROOT_MINIX}/etc/${f} + done + ) | ${TEE} ${TOPDIR}/1-build_minix.log + echo ":-> Building minix chroot done" + + return 0 +} + +build_bootstrap() { + echo ":-> Building bootstrapped chroot" + ( + exec 2>&1 + set -e + echo ":--> Initializing chroot in ${ROOT_BOOTSTRAP} [${BUILD_START}]" + + if [ ${PKGSRC_COPY} = ${YES} ] + then + echo ":--> Copying from ${PKGSRCDIR}" + # Copy and use our local pkgsrc repository as it is + ${MKDIR} -p ${ROOT_BOOTSTRAP}${PKGSRC_PREFIX} + ${SYNCTREE} -f ${PKGSRCDIR} ${ROOT_BOOTSTRAP}${PKGSRC_PREFIX} >/dev/null + else + echo ":--> Cloning from ${PKGSRC_URL}/${PKGSRC_BRANCH}" + # Copy our own pkgsrc repository there so the new + # repository does not have to retrieve objects we + # already have locally. + ${MKDIR} -p ${PKGSRC_GIT} + ${SYNCTREE} -f ${PKGSRCDIR}/.git ${PKGSRC_GIT} >/dev/null + ${GIT} --git-dir ${PKGSRC_GIT} remote rm ${PKGSRC_REMOTE} + ${GIT} --git-dir ${PKGSRC_GIT} remote add ${PKGSRC_REMOTE} ${PKGSRC_URL} + ${GIT} --git-dir ${PKGSRC_GIT} fetch ${PKGSRC_REMOTE} + ${GIT} --git-dir ${PKGSRC_GIT} checkout -f ${PKGSRC_REMOTE}/${PKGSRC_BRANCH} + fi + + # Bonus distfiles + echo ":--> Copying prefetched distfiles from ${DISTFILESDIR}" + ${MKDIR} -p ${ROOT_BOOTSTRAP}${PKGSRC_PREFIX}/distfiles + ${SYNCTREE} -f ${DISTFILESDIR} ${ROOT_BOOTSTRAP}${PKGSRC_PREFIX}/distfiles >/dev/null + + # Ensure that the package directoy is clean and exists + ${RM} -rf ${ROOT_BOOTSTRAP}${PKGSRC_PREFIX}/packages/$(uname -r)/ + ${MKDIR} -p ${ROOT_BOOTSTRAP}${PKGSRC_PREFIX}/packages/$(uname -r)/ + + echo ":--> Bootstrapping pbulk" + ${CHROOT} ${ROOT_BOOTSTRAP} sh -c \ + "( + set -e + ${EXPORT} PATH=${CHROOT_PATH} + ${EXPORT} LD_LIBRARY_PATH=${LD_CHROOT_PATH} + + ${CD} ${PKGSRC_PREFIX} + + # First stage, PBULK bootstrap & installation + + # Trim the .ifdef BSD_PKG_MK and .endif lines to make a 'fragment' + # and adapt a few path to the ones expected for pbulk + ${SED} \ + -e '/.*BSD_PKG_MK/d' \ + -e 's@VARBASE?=.*@VARBASE= '${BOOTSTRAP_PREFIX}'/var@' \ + -e 's@PKG_DBDIR?=.*@PKG_DBDIR= '${BOOTSTRAP_PREFIX}'/pkgdb@' \ + -e 's@WRKOBJDIR?=.*@WRKOBJDIR= '${BOOTSTRAP_PREFIX}'/work@' \ + ./minix/mk.conf.minix \ + > ./minix/mk.conf.minix.pbulk.frag + + echo ':--> Building pbulk kit' + ${CMD_BOOTSTRAP} \ + --prefix=${BOOTSTRAP_PREFIX} \ + --varbase=${BOOTSTRAP_PREFIX}/var \ + --pkgdbdir=${BOOTSTRAP_PREFIX}/pkgdb \ + --workdir=${BOOTSTRAP_PREFIX}/work \ + --mk-fragment=./minix/mk.conf.minix.pbulk.frag + + # Install pbulk into /usr/pbulk + echo ':--> Building and installing pbulk' + ${BMAKE} -C ./devel/pth package-install + ${BMAKE} -C ./pkgtools/pbulk package-install + ${SED} -e 's/OP_SYS_VER/'$(uname -r)'/g' ./minix/pbulk.conf > ${BOOTSTRAP_PREFIX}/etc/pbulk.conf + + # First stage: done + + echo ':--> Bootstrap cleanup' + ${CMD_BOOTSTRAP_CLEANUP} + + # Second stage, pkgsrc bootstrap & installation + + # Trim the .ifdef BSD_PKG_MK and .endif lines to make a 'fragment' + ${SED} -e '/.*BSD_PKG_MK/d' \ + ./minix/mk.conf.minix \ + > ./minix/mk.conf.minix.frag + + echo ':--> Building binary pkgsrc kit' + ${CMD_BOOTSTRAP} \ + --varbase=/usr/pkg/var \ + --pkgdbdir=/usr/pkg/var/db/pkg \ + --mk-fragment=./minix/mk.conf.minix.frag \ + --workdir=${PKGSRC_PREFIX}/work \ + --gzip-binary-kit=${BOOTSTRAP_PREFIX}/bootstrap.tar.gz + + ${RM} -rf ./packages/$(uname -r)/ + + # Use the same mk.conf that our users instead of the hybrid + # auto-generated mk.conf from bootstrap. + ${TAR} -C /tmp -xzf ${BOOTSTRAP_PREFIX}/bootstrap.tar.gz + ${CP} ./minix/mk.conf.minix /tmp/usr/pkg/etc/mk.conf + ${TAR} -C /tmp -hzcf ${BOOTSTRAP_PREFIX}/bootstrap.tar.gz usr + ${RM} -rf /tmp/usr + + # Second stage: done + )" + + echo ":--> Bootstrapping pbulk done" + + ) | ${TEE} ${TOPDIR}/2-build_bootstrap.log + echo ":-> Building bootstrapped chroot done" + + return 0 +} + +pbulk_start() { + echo ":-> Building packages from scratch" + ( + exec 2>&1 + set -e + + ${CHROOT} ${ROOT_PBULK} sh -c \ + "( + set -e + ${EXPORT} PATH=${CHROOT_PATH} + ${EXPORT} LD_LIBRARY_PATH=${LD_CHROOT_PATH} + + ${CD} ${PKGSRC_PREFIX} + + echo ':--> Starting build ['${BUILD_START}']' + ${CMD_BULKBUILD} + )" + ) | ${TEE} ${TOPDIR}/3-pbulk.log + echo ":-> Building packages from scratch done" + + return 0 +} + +pbulk_restart() { + echo ":-> Building packages from previous build" + ( + exec 2>&1 + set -e + + ${CHROOT} ${ROOT_PBULK} sh -c \ + "( + set -e + ${EXPORT} PATH=${CHROOT_PATH} + ${EXPORT} LD_LIBRARY_PATH=${LD_CHROOT_PATH} + + ${CD} ${PKGSRC_PREFIX} + + echo ':--> Resetting error file' + ${CMD_RESET_ERRORS} + + echo ':--> Restarting build ['${BUILD_START}']' + ${CMD_BULKBUILD_RESTART} + )" + ) | ${TEE} ${TOPDIR}/3-pbulk.log + + echo ":-> Building packages from previous build done" +} + +#============================================================================ +# Initializations are done, start applying the requested actions on the system + +BUILD_START=$(date) +echo -e "\n:: pbulk started on ${BUILD_START}" + +if [ ${BUILD_ROOT_MINIX} = ${YES} ] +then + echo -e "\n:> Generating minix root fs." + ${RM} -rf ${ROOT_MINIX} + + # Ensure presence of destination directory + ${MKDIR} -p ${ROOT_MINIX} + + build_minix +fi + +if [ ${BUILD_ROOT_BOOTSTRAP} = ${YES} ] +then + echo -e "\n:> Bootstrapping pkgsrc." + # Ensure the new chroot is clean. + ${MKDIR} -p ${ROOT_BOOTSTRAP} + ${SYNCTREE} -f ${ROOT_MINIX} ${ROOT_BOOTSTRAP} >/dev/null + + build_bootstrap +fi + +if [ ${BUILD_ROOT_PBULK} = ${YES} ] +then + echo -e "\n:> Initializing pbulk root." + # Ensure the new chroot is clean. + ${MKDIR} -p ${ROOT_PBULK} + ${SYNCTREE} -f ${ROOT_BOOTSTRAP} ${ROOT_PBULK} >/dev/null + + echo -e "\n:> Building packages from scratch." + pbulk_start +else + # We want to re-use a previous pbulk. + # Just make sure that any modification within the pkgsrc tree is visible + # find param to make synctree keep files in packages and distfiles + # Also requires regenerating the bootstrap tarball, as well as updating + # ROOT_PBULK/usr/pbulk/etc/pbulk.conf + #${SYNCTREE} -f ${PKGSRCDIR} ${ROOT_PBULK}${PKGSRC_PREFIX} >/dev/null + + echo -e "\n:> Restarting build of packages." + pbulk_restart +fi + +_build_end=$(date '+%Y%m%d%H%M.%S') +BUILD_END=$(date -j ${_build_end}) + +# We have to do this here, otherwise the date field would be empty +: ${TIMESTAMP=$(date -j '+%Y%m%d-%H%M%S' ${_build_end})} +: ${ROOT_LOGS=${SAVEDIR}/${TIMESTAMP}.logs} +: ${ROOT_DISTFILES=${SAVEDIR}/${TIMESTAMP}.distfiles} +: ${ROOT_PACKAGES=${SAVEDIR}/${TIMESTAMP}.packages} + +if [ ${SAVE_LOGS} = ${YES} ] +then + ${MKDIR} -p ${ROOT_LOGS} + ${CP} -pfr ${ROOT_PBULK}/usr/pbulk-logs ${ROOT_LOGS}/ + ${CP} -pfr ${TOPDIR}/1-build_minix.log ${ROOT_LOGS}/ + ${CP} -pfr ${TOPDIR}/2-build_bootstrap.log ${ROOT_LOGS}/ + ${CP} -pfr ${TOPDIR}/3-pbulk.log ${ROOT_LOGS}/ +fi + +if [ ${SAVE_DISTFILES} = ${YES} ] +then + ${CP} -pr ${ROOT_PBULK}${PKGSRC_PREFIX}/distfiles ${ROOT_DISTFILES} +fi + +if [ ${SAVE_PACKAGES} = ${YES} ] +then + ${CP} -pr ${ROOT_PBULK}${PKGSRC_PREFIX}/packages ${ROOT_PACKAGES} +fi + +echo -e "\n:: pbulk finished:" +echo ":> started on : ${BUILD_START}" +echo ":> finished on : ${BUILD_END}" +echo ":> Build logs : ${ROOT_LOGS}" +echo ":> Distfiles : ${ROOT_DISTFILES}" +echo ":> Packages : ${ROOT_PACKAGES}" diff --git a/minix/pbulk.conf b/minix/pbulk.conf new file mode 100644 index 000000000..561669dc0 --- /dev/null +++ b/minix/pbulk.conf @@ -0,0 +1,135 @@ +# $NetBSD: pbulk.conf,v 1.16 2009/06/08 16:02:52 joerg Exp $ + +# Version of the configuration file. This is bumped whenver the default +# config changes to notify the administrator about updates. +# +config_version=0.51 + +# The URL where the build report will be made available. This is only +# used in the .txt version of the report. +# +base_url=http://www.minix3.org/ + +# If yes, keep the last scan results in ${bulklog}.old and try to reuse them. +reuse_scan_results=no + +# The pbulk framework can use multiple machines to build the packages. +# On a single-processor, non-distributed build, you may want to say "no" +# here. +# +master_mode=no + +has_nfs=no + +master_ip=192.168.122.114 +scan_clients="192.168.122.114" +build_clients="192.168.122.58 192.168.122.129" + +master_port_scan=${master_ip}:2001 +master_port_build=${master_ip}:2002 + +# Some flags for the programs that publish the binary packages and the +# build report. If you want to disable the publishing at all, see below. +# +pkg_rsync_args="-av --delete-excluded -e ssh" +pkg_rsync_args_no_del="-av -e ssh" +pkg_rsync_target="root@cynis.ca:/srv/minix/packages" +report_rsync_args="-avz --delete-excluded -e ssh" +report_rsync_target="root@cynis.ca:/srv/minix/reports" +report_subject_prefix="pkgsrc" +report_recipients="tcort@minix3.org" + +# An archive containing the pkgsrc binary tree after bootstrapping. +# +bootstrapkit=/usr/pbulk/bootstrap.tar.gz + +# Optionally build a subset of the available packages and their dependencies. +# The file is a newline separated list of package locations (e.g. lang/perl5). +limited_list=/usr/pkgsrc/minix/limited_list.minimal +limited_list=/usr/pkgsrc/minix/limited_list.patched +limited_list= + +# Optionally ignore unresolvable dependencies for a full build (e.g. +# a build without limited_list set). Default behavior is to bail out. +# +ignore_missing_dependencies=no + +# If yes, consider a package up-to-date, if the dependency list matches +# the existing binary package and the recorded RCS IDs match the pkgsrc +# tree. Otherwise, additionally require that the package is not older +# than any of the dependencies. +# +skip_age_check=yes + +report_graph_script_limit=512 + +# Account used for user-destdir builds. This account should have +# no special permissions. +# +unprivileged_user=root + +# Variables used for the optional cross-compiling of packages. +# +cross_compile=no +target_arch=i386 +target_destdir=/usr/src/destdir.${target_arch} + +# The directories where the various files are created. +# +bulklog=/usr/pbulk-logs +packages=/usr/pkgsrc/packages/OP_SYS_VER/i386/ +prefix=/usr/pkg +pkgsrc=/usr/pkgsrc +pkgdb=/usr/pkg/var/db/pkg +varbase=/usr/pkg/var + +# The following programs must NOT be inside ${prefix} +pkg_info=/usr/pbulk/sbin/pkg_info +pkg_add=/usr/pbulk/sbin/pkg_add +pkg_delete=/usr/pbulk/sbin/pkg_delete + +# The tools that are used for building the packages. If you do not want +# to publish anything at all, set rsync=: and mail=:. +# +bzip2=/usr/bin/bzip2 +digest=/usr/pbulk/bin/digest +gzip="/usr/bin/gzip -nf -9" +# On non-NetBSD, this should usually point at the bmake in ${prefix}, not the +# make used to build pbulk itself. +make=${prefix}/bin/bmake +mail=: #/usr/bin/mail +neato=/usr/pbulk/bin/neato +rsync=: #/usr/pbulk/bin/rsync +sed=/bin/sed +tar=/usr/bin/tar + +loc=${bulklog}/meta + +pbuild=/usr/pbulk/bin/pbulk-build +presolve=/usr/pbulk/bin/pbulk-resolve +pscan=/usr/pbulk/bin/pbulk-scan + +# When a package build fails, it is often necessary to have a look at +# the working directory or the installed files. When these options are +# set to "yes", they will be archived in the log directory. +# +#keep_wrkdir=yes +keep_prefix=no + +pkg_up_to_date_script=/usr/pbulk/libexec/pbulk/pkg-up-to-date +pbuild_script=/usr/pbulk/libexec/pbulk/pkg-build +pbuild_start_script=/usr/pbulk/libexec/pbulk/build-client-start +pscan_prepare=/usr/pbulk/libexec/pbulk/client-clean +pscan_start_script=/usr/pbulk/libexec/pbulk/scan-client-start +report_script=/usr/pbulk/libexec/pbulk/create-report +report_html_script=/usr/pbulk/libexec/pbulk/create-report-html +report_txt_script=/usr/pbulk/libexec/pbulk/create-report-txt +report_graph_script=/usr/pbulk/libexec/pbulk/create-broken-graph +packages_script=/usr/pbulk/libexec/pbulk/compute-packages + +script_phase_pre_build=/usr/pbulk/libexec/pbulk/pre-build +script_phase_build=/usr/pbulk/libexec/pbulk/build +script_phase_report=/usr/pbulk/libexec/pbulk/report +script_phase_scan=/usr/pbulk/libexec/pbulk/scan +script_phase_upload=/usr/pbulk/libexec/pbulk/upload +