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..3dde138d9 --- /dev/null +++ b/minix/limited_list.patched @@ -0,0 +1,49 @@ +x11/pixman +textproc/libxml2 +textproc/icu +print/web2c +print/poppler +print/ghostscript-gpl +x11/tk +lang/tcl +lang/hugs +lang/gcc45 +graphics/netpbm +graphics/gdk-pixbuf2 +graphics/gdk-pixbuf +graphics/cairo +fonts/harfbuzz +emulators/suse131_linux +emulators/suse121_linux +emulators/suse100_linux +devel/ncurses +devel/mk-configure +devel/glib2 +devel/boehm-gc +database/sqlite3 +databases/gdbm +minix/git-review +lang/clang +lang/python27 +devel/cmake +devel/binutils +security/openssh +devel/git-base +www/curl +security/heimdal +devel/bison +devel/m4 +security/p5-IO-Socket-SSL +devel/libidn +devel/pkg-config +converters/libiconv +pkgtools/pkgin +security/openssl +devel/gettext +lang/perl5 +devel/pth +devel/libtool +pkgtools/digest +pkgtools/pkg_install +devel/bmake +pkgtools/bootstrap-mk-files 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..7c876cbf2 --- /dev/null +++ b/minix/mk.conf.minix @@ -0,0 +1,136 @@ +# 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 -d +ULIMIT_CMD_stacksize?= ulimit -s +ULIMIT_CMD_memorysize?= ulimit -m +ULIMIT_CMD_cputime?= ulimit -t + +PS?= /usr/bin/ps +# Our nroff can't handle -mandoc correctly +NROFF?= mandoc + +PREFER_NATIVE_PTHREADS= no +X11_TYPE= native + +# 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_LOCAL?= \ + http://www.minix3.org/pkgsrc/distfiles/minix/${OS_VERSION}/ + +MASTER_SITE_MINIX?= \ + http://www.minix3.org/pkgsrc/distfiles/local/${OS_VERSION}/ + +MASTER_SITE_BACKUP?= \ + ftp://ftp.netbsd.org/pub/pkgsrc/distfiles/ \ + ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/ \ + http://ftp.jp.netbsd.org/pub/pkgsrc/distfiles/ + +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" +# Check if the clang package is available +.if exists(/usr/pkg/bin/clang) +CLANGBASE?= /usr/pkg +.else +CLANGBASE?= /usr +.endif +HAVE_LLVM?= 36 + +CC?= clang +CXX?= clang++ +CPP?= clang -E +.else +AS?= gas +CC?= gcc +CXX?= g++ +.endif + +.if exists(/usr/pkg/bin/strip) +TOOLS_PLATFORM.strip?= /usr/pkg/bin/strip +.endif + +####################################################################### +# Compilation Flags for all packages +CFLAGS+= -march=i586 + +# Headers are available, but not yet fully supported. +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 -kqueue + +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 + +PYTHON_VERSION_DEFAULT?= 27 +PYPACKAGE?= python27 + +RUBY_USE_PTHREAD?= no +RUBY_ARCH?= i386-minix + +#LSC: Otherwise fails on missing files when generating the tarball +ZSH_STATIC?= yes + +####################################################################### +# Package-specific default options +PKG_OPTIONS.gcc45?= -gcc-java -gcc-fortran + +.endif # BSD_PKG_MK diff --git a/minix/pbulk-ng.sh b/minix/pbulk-ng.sh new file mode 100755 index 000000000..a25ec2ed9 --- /dev/null +++ b/minix/pbulk-ng.sh @@ -0,0 +1,433 @@ +#!/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)} +: ${OBJDIR=/usr/bbuild/obj.$(uname -p)} +: ${MINIXSRCDIR=/usr/src} +: ${PKGSRCDIR=/usr/pkgsrc} +: ${DISTFILESDIR=/usr/pkgsrc/distfiles} +: ${USETOOLS=yes} + +: ${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/X11R7 /usr '' +do + CHROOT_PATH=${CHROOT_PATH}:${d}/bin:${d}/sbin +done +CHROOT_PATH=${CHROOT_PATH}:/usr/games +LD_CHROOT_PATH=/usr/pkg/lib:/usr/X11R7/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} + + HOST_CC=clang HOST_CXX=clang++ ./build.sh \ + -m i386 \ + -O ${OBJDIR} \ + -T ${TOOLDIR} \ + -D ${ROOT_MINIX} \ + -V SLOPPY_FLIST=yes \ + -V MKX11=yes \ + -V MKUPDATE=yes \ + -V MKLLVM=yes \ + -V MKLIBCXX=yes \ + -V MKGCCCMDS=no \ + -V MKLIBSTDCXX=no \ + -V MKKYUA=no \ + -V MKATF=no \ + distribution + + 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)/$(uname -p)/All + + 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)/ + ${MKDIR} -p ./packages/$(uname -r)/$(uname -p)/All + + # 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 ${TOPDIR}/1-build_minix.log ${ROOT_LOGS}/ + ${CP} -pfr ${TOPDIR}/2-build_bootstrap.log ${ROOT_LOGS}/ + ${CP} -pfr ${TOPDIR}/3-pbulk.log ${ROOT_LOGS}/ + ${SYNCTREE} -uf ${ROOT_PBULK}/usr/pbulk-logs ${ROOT_LOGS}/pbulk-logs +fi + +if [ ${SAVE_DISTFILES} = ${YES} ] +then + ${SYNCTREE} -uf ${ROOT_PBULK}${PKGSRC_PREFIX}/distfiles ${ROOT_DISTFILES} +fi + +if [ ${SAVE_PACKAGES} = ${YES} ] +then + ${SYNCTREE} -uf ${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..2a813772b --- /dev/null +++ b/minix/pbulk.conf @@ -0,0 +1,145 @@ +# $NetBSD: pbulk.conf,v 1.21 2015/09/13 11:45:37 joerg Exp $ + +# Version of the configuration file. This is bumped whenever the default +# config changes to notify the administrator about updates. +# +config_version=0.54 + +# 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.75.10 +scan_clients="192.168.75.21 192.168.75.22 192.168.75.23 192.168.75.24" +build_clients="192.168.75.21 192.168.75.22 192.168.75.23 192.168.75.24" + +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_target="pkgsrc@192.168.75.1:/public/packages/current/DragonFly-1.8" +report_rsync_args="-avz --delete-excluded -e ssh" +report_rsync_target="pkgsrc@192.168.75.1:/public/reports/current/DragonFly-1.8" +report_subject_prefix="pkgsrc" +report_recipients="pkgsrc-bulk@netbsd.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 + +# If yes, run the checksum phase as unprivileged user. +# Note: requires DISTDIR to be writeable for the unprivileged user. +use_unprivileged_checksum=no + +# 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=/usr/bin/sed +tar=/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=no +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 + +# Arguments are buildlog and pkgname +sync_buildlog=: +# Arguments are path to the temporary package file, the package name +# and categories. The default handler just copies the file to ${packages} +# and creates the symlinks. +sync_package=default_sync_package +# PKG_SUFX as set in mk.conf +pkg_sufx=.tgz