mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-08-03 09:48:00 -04:00
minix category
This contains MINIX specific packages, configuration and (PKGSRC) build scripts.
This commit is contained in:
parent
27cb366444
commit
df40ce6741
14
minix/Makefile
Normal file
14
minix/Makefile
Normal file
@ -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"
|
8
minix/limited_list.minimal
Normal file
8
minix/limited_list.minimal
Normal file
@ -0,0 +1,8 @@
|
||||
pkgtools/pkgin
|
||||
devel/git-base
|
||||
devel/binutils
|
||||
lang/clang
|
||||
lang/gcc45
|
||||
devel/bmake
|
||||
editors/vim
|
||||
security/openssh
|
43
minix/limited_list.patched
Normal file
43
minix/limited_list.patched
Normal file
@ -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
|
14
minix/minibootstrap.sh
Normal file
14
minix/minibootstrap.sh
Normal file
@ -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
|
||||
|
125
minix/mk.conf.minix
Normal file
125
minix/mk.conf.minix
Normal file
@ -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
|
472
minix/pbulk-ng.sh
Executable file
472
minix/pbulk-ng.sh
Executable file
@ -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}"
|
135
minix/pbulk.conf
Normal file
135
minix/pbulk.conf
Normal file
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user