mirror of
https://github.com/Stichting-MINIX-Research-Foundation/pkgsrc-ng.git
synced 2025-09-08 03:44:13 -04:00
Step 0: minix category
This contains MINIX specific packages, configuration and (PKGSRC) build scripts.
This commit is contained in:
parent
bc17d767a5
commit
632da51b7a
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
|
49
minix/limited_list.patched
Normal file
49
minix/limited_list.patched
Normal file
@ -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
|
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
|
||||||
|
|
133
minix/mk.conf.minix
Normal file
133
minix/mk.conf.minix
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
#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
|
478
minix/pbulk-ng.sh
Executable file
478
minix/pbulk-ng.sh
Executable file
@ -0,0 +1,478 @@
|
|||||||
|
#!/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/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}
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
export MAKEOBJDIR='${.CURDIR:C,^/mnt/src,/mnt/obj.pbulk.386,}'
|
||||||
|
export MKOBJDIRS=yes
|
||||||
|
export MKBINUTILS=yes
|
||||||
|
|
||||||
|
make build etcforce \
|
||||||
|
USETOOLS=${USETOOLS} \
|
||||||
|
TOOLDIR=${TOOLDIR} \
|
||||||
|
DESTDIR=${ROOT_MINIX} \
|
||||||
|
SLOPPY_FLIST=yes \
|
||||||
|
MKX11=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)/$(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}"
|
145
minix/pbulk.conf
Normal file
145
minix/pbulk.conf
Normal file
@ -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.53
|
||||||
|
|
||||||
|
# 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=/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=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
|
Loading…
x
Reference in New Issue
Block a user