mirror of
https://github.com/openbsd/src.git
synced 2025-01-10 06:47:55 -08:00
05942a6805
ok ajacoutot robert
89 lines
3.2 KiB
Plaintext
89 lines
3.2 KiB
Plaintext
$OpenBSD: README,v 1.4 2019/08/14 20:30:19 tb Exp $
|
|
|
|
Notes about the syspatch(8) build process
|
|
=========================================
|
|
|
|
The syspatch(8) build system will eventually be properly documented in its own
|
|
man(1) page but until things settle and the framework is robust, this file will
|
|
be used as a quick reminder.
|
|
|
|
Requirements for the build machine
|
|
----------------------------------
|
|
|
|
- ${FAKEROOT} must be a local mount point with the no perm mount option set and
|
|
be owned by ${BUILDUSER} with a mode of 0700. It should be big enough to
|
|
contain one full release per syspatch (~30G).
|
|
|
|
- ${SRCDIR} and ${XSRCDIR} must be checked out using the OPENBSD_X_X_BASE
|
|
release tag.
|
|
|
|
- Timezone must be set to "Canada/Mountain".
|
|
|
|
Requirements for the fakeroot
|
|
-----------------------------
|
|
|
|
Before building the first syspatch, the same release used on the build machine
|
|
must be extracted under a subdirectory of ${FAKEROOT} to allow clean comparison
|
|
and find differing files between patched releases.
|
|
|
|
e.g.
|
|
FAKEROOT=/fakeroot
|
|
FAKE=${FAKEROOT}/syspatch/64-000_release
|
|
RELEASEDIR=/path/to/sets
|
|
mkdir -p ${FAKE}
|
|
install -m 0700 ${RELEASEDIR}/bsd{,.mp} ${FAKE}
|
|
for set in base comp game man xbase xshare xfont xserv; do
|
|
tar xzphf ${RELEASEDIR}/${set}$(uname -r | tr -d '.').tgz -C ${FAKE}
|
|
done
|
|
mkdir -m 700 -p ${FAKE}/usr/share/relink/kernel/GENERIC{,.MP}
|
|
tar -C ${FAKE}/usr/share/relink/kernel -xzf ${FAKE}/usr/share/relink/kernel.tgz
|
|
rm ${FAKE}/usr/share/relink/kernel.tgz
|
|
|
|
Continuing syspatch builds
|
|
--------------------------
|
|
|
|
If syspatches were already built for this release on a different machine, the
|
|
following additional steps are required. Prepare a ${SYSPATCHES} directory
|
|
containing all the syspatches of the release. Make a copy of the ${FAKE}
|
|
directory and extract all the syspatches in it.
|
|
|
|
e.g.
|
|
SYSPATCHES=/path/to/syspatches
|
|
PATCHED=${FAKEROOT}/syspatch/64-018_mds
|
|
cp -Rp ${FAKE} ${PATCHED}
|
|
for _s in ${SYSPATCHES}/*.tgz; do tar -C ${PATCHED} -xzphf ${_s}; done
|
|
|
|
Then apply all the errata patches to the source trees.
|
|
|
|
Building a syspatch
|
|
-------------------
|
|
|
|
When building a xenocara syspatch, make sure to set XSRCDIR to the directory
|
|
where the xenocara checkout was made.
|
|
# export XSRCDIR=/usr/xenocara
|
|
|
|
Everything is done as root under ${BSDSRCDIR}/distrib/syspatch/.
|
|
|
|
Before building the first syspatch, the obj directory must be created.
|
|
# FAKEROOT=/fakeroot make -f Makefile.000 obj
|
|
|
|
Each syspatch requires its own Makefile numbered after the patch level.
|
|
# cp Makefile.000 Makefile.001
|
|
# ${EDITOR} Makefile.001
|
|
-> set the ERRATA name and BUILD type
|
|
|
|
The patched release can now be built.
|
|
# FAKEROOT=/fakeroot make -f Makefile.001 001_dummy/.plist
|
|
# ${EDITOR} obj/001_dummy/.plist
|
|
-> edit the plist to make sure it only contains files we want to end up in
|
|
the syspatch(8) tarball
|
|
|
|
At last, a syspatch(8) can be created.
|
|
# FAKEROOT=/fakeroot make -f Makefile.001 syspatch
|
|
|
|
Patches are incremental and must be built in order. In case an errata does not
|
|
apply to the current architecture and to prevent a gap in the numbering, the
|
|
"previous" fakeroot must be created manually by copying the previous one.
|
|
e.g.
|
|
# cp -Rp /fakeroot/syspatch/61-010_perl /fakeroot/syspatch/61-011_sti
|