fix gitignore

This commit is contained in:
Samuel Aubertin 2024-02-28 14:58:41 +01:00
parent 9e6c267fb1
commit 1bc49a6adc
4 changed files with 239 additions and 1 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
release
./release-*
.vagrant
Vagrantfile
ssh-config

13
LICENSE Normal file
View File

@ -0,0 +1,13 @@
Copyright (c) 2023 Samuel 'sk4nz' AUBERTIN sk4nz@sk4.nz
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

62
src/release/Makefile Normal file
View File

@ -0,0 +1,62 @@
TAG?= master
BUILD_TARGET?= GENERIC
RELEASE_FILES= *.EFI BUILDINFO INSTALL.* *.tgz bsd* *.iso cdboot *.img pxeboot
include build.mk
.SILENT:
.PHONY: RELEASE KERNEL BASE
all:
echo +++ Starting BUILD_CONF=$(BUILD_CONF) TAG=$(TAG)
exec $(MAKE) RELEASE
KERNEL: dl-sources
echo - Updating git index
git config --global --add safe.directory /usr/src
git config --global --add safe.directory /usr/xenocara
cd /usr/src; git update-index --really-refresh
cd /usr/xenocara; git update-index --really-refresh
echo - Checkout branch $(TAG)
cd /usr/src; git checkout -q --no-progress $(TAG) || git checkout -q --no-progress master
cd /usr/xenocara; git checkout -q --no-progress $(TAG) || git checkout -q --no-progress master
exec $(MAKE) do-kernel
RELEASE: BASE KERNEL $(RELEASE_PATH)/install$(OPENBSD_SYS_VERSION).iso $(RELEASE_PATH)/site$(OPENBSD_SYS_VERSION).tgz
echo - Signing Release
cd $(RELEASE_PATH); \
cksum -a sha256 $(RELEASE_FILES) | sort > $(RELEASE_PATH)/SHA256
[ -e "$(SIGNIFY_PRIVKEY)" ] \
&& signify -S -s $(SIGNIFY_PRIVKEY) -e -m $(RELEASE_PATH)/SHA256 -x $(RELEASE_PATH)/SHA256.sig \
|| echo $(SIGNIFY_PRIVKEY) missing in the $(TAG) branch, skipping.
-cd $(RELEASE_PATH) && ls -nT > index.txt && cat BUILDINFO index.txt
BASE: KERNEL dl-sources
umask 007; exec $(MAKE) do-base
$(RELEASE_PATH)/base$(OPENBSD_SYS_VERSION).tgz:
exec $(MAKE) do-release
$(XRELEASE_PATH)/xbase$(OPENBSD_SYS_VERSION).tgz:
exec $(MAKE) do-x
$(RELEASE_PATH)/install$(OPENBSD_SYS_VERSION).iso: $(RELEASE_PATH)/base$(OPENBSD_SYS_VERSION).tgz $(XRELEASE_PATH)/xbase$(OPENBSD_SYS_VERSION).tgz
exec $(MAKE) do-iso
$(RELEASE_PATH)/site$(OPENBSD_SYS_VERSION).tgz:
echo - Creating site$(OPENBSD_SYS_VERSION).tgz
mkdir -p $(SITE_PATH)
printf 'echo install.site\
\nsysctl kern.version > /root/kernel\
printf '\#!/bin/ksh\
sed -iorig -e "s/ffs rw,/ffs rw,softdep,/" /etc/fstab\
\n'swap /tmp mfs rw,nodev,nosuid,-s=64m 0 0' >> /etc/fstab\
\n'rcctl set ntpd flags -s\
\necho "kern.timecounter.hardware=tsc" >> /etc/sysctl.conf\
\nrcctl disable sndiod\
\necho 'kern.allowdt=1' >> /etc/sysctl.conf\
\nsysctl kern.allowdt=1\
\necho "http://cdn.openbsd.org/pub/OpenBSD" > /etc/installurl\n'\
> $(SITE_PATH)/install.site
cd $(SITE_PATH) && tar -zcf $(RELEASE_PATH)/site$(OPENBSD_SYS_VERSION).tgz install.site
cd $(RELEASE_PATH) && grep site$(OPENBSD_SYS_VERSION) SHA256 || sha256 site$(OPENBSD_SYS_VERSION).tgz >> SHA256

163
src/release/build.mk Normal file
View File

@ -0,0 +1,163 @@
#TODO : refactor so there is no phony targets anymore
TAG?= master
BUILD_TARGET?= GENERIC
BUILD_PATH= /home/build
BUILD_CONF?= $(BUILD_TARGET).MP
BUILD_LOG?= /var/log/$(TAG)_build.log
DEST_PATH_BASE= /dest
DEST_PATH?= $(DEST_PATH_BASE)/$(TAG)
XDEST_PATH?= $(DEST_PATH_BASE)/X$(TAG)
#WWW_PATH= /var/www/htdocs
#WWW_RELEASE_PATH?= $(WWW_PATH)/$(TAG)
RELEASE_PATH?= $(BUILD_PATH)/$(TAG)
XRELEASE_PATH?= $(BUILD_PATH)/$(TAG)
MKOPTIONS= -j$$((sysctl -n hw.ncpuonline 2> /dev/null && sysctl -n hw.ncpufound 2> /dev/null && sysctl -n hw.ncpu 2> /dev/null) | head -n 1)
SITE_PATH?= $(BUILD_PATH)/site_$(BUILD_TARGET)
SIGNIFY_PRIVKEY= /usr/src/etc/signify/openbsd-$(OPENBSD_SYS_VERSION)-base.sec
MFS_SIZE=8192M
MFS_OBJ=/usr/obj
MFS_XOBJ=/usr/xobj
LOGS= >> $(BUILD_LOG) 2>> $(BUILD_LOG).error
.PHONY: do-kernel do-x do-base do-release do-iso dl-sources
do-x:
echo + Building XRELEASE - $$(date +"%Y-%m-%dT%H:%M:%S%z")
-mkdir -p $(MFS_XOBJ) && \
mount -t mfs -o rw,noatime,-s=$(MFS_SIZE) swap $(MFS_XOBJ) && \
echo MFS $(MFS_XOBJ) && \
chown build:wobj $(MFS_XOBJ) && chmod 770 $(MFS_XOBJ)
echo - Boostraping Xenocara && \
cd /usr/xenocara && make bootstrap >> $(BUILD_LOG)
echo - Preparing Xenocara objects && \
cd /usr/xenocara && make obj $(LOGS)
echo - Compiling Xenocara && \
cd /usr/xenocara && make $(MKOPTIONS) build $(LOGS)
mkdir -p $(XDEST_PATH) $(XRELEASE_PATH)
echo - Building Xenocara release && \
export DESTDIR=$(XDEST_PATH) RELEASEDIR=$(XRELEASE_PATH); \
cd /usr/xenocara && \
make release $(LOGS) && \
make checkdist >> $(BUILD_LOG); \
unset RELEASEDIR DESTDIR
echo + XRELEASE built - $$(date +"%Y-%m-%dT%H:%M:%S%z")
do-iso:
echo + Building ISO - $$(date +"%Y-%m-%dT%H:%M:%S%z")
-export RELDIR=$(RELEASE_PATH) RELXDIR=$(XRELEASE_PATH); \
cd /usr/src/distrib/$(MACHINE)/iso && \
make $(MKOPTIONS) $(LOGS) && \
make install $(LOGS); \
unset RELDIR RELXDIR
echo + ISO built - $$(date +"%Y-%m-%dT%H:%M:%S%z")
do-release:
echo + Building RELEASE - $$(date +"%Y-%m-%dT%H:%M:%S%z")
mkdir -p $(DEST_PATH) && chown -R build:wsrc $(DEST_PATH_BASE) && chmod -R 700 $(DEST_PATH_BASE)
#mkdir -p $(WWW_RELEASE_PATH) && chown build:daemon $(WWW_RELEASE_PATH)
#stat $(RELEASE_PATH) > /dev/null 2>&1 || (ln -s $(WWW_RELEASE_PATH)/ $(RELEASE_PATH) && chown build $(RELEASE_PATH))
mkdir -p $(RELEASE_PATH) && chown build $(RELEASE_PATH)
#@grep minimagma /etc/disktab 2>&1 > /dev/null | echo -e '\nminimagma:dt=rdroot:se#512:nt#1:ns#128:nc#150:pa#19136:oa#64:ba#17492:fa#1024:ta=4.2BSD:pc#19200:oc#0:' >> /etc/disktab
#@grep rdrootc /etc/disktab 2>&1 > /dev/null | echo -e '\nrdrootc|ramdiskroot|RAM-disk root FS image:dt=rdroot:se#512:nt#2:ns#330:nc#16:pa#10560:oa#0:ta=4.2BSD:ba#4096:fa#512:pb#0:ob#0:tb=swap:pc#10560:oc#0:\n' >> /etc/disktab
echo - Compiling $(BUILD_CONF) release \
&& export DESTDIR=$(DEST_PATH) RELEASEDIR=$(RELEASE_PATH) \
&& cd /usr/src/etc \
&& make $(MKOPTIONS) release $(LOGS)
echo - Creating $(BUILD_CONF) distribution sets \
&& cd /usr/src/distrib/sets \
&& make $(LOGS)
echo - Checking files \
&& export DESTDIR=$(DEST_PATH) RELEASEDIR=$(RELEASE_PATH) \
&& cd /usr/src/distrib/sets \
&& sh checkflist $(LOGS) || true
echo + RELEASE built - $$(date +"%Y-%m-%dT%H:%M:%S%z")
do-base:
echo + Building BASE - $$(date +"%Y-%m-%dT%H:%M:%S%z")
.ifdef GLOBAL_AUTOCONF_CACHE
install -c -o build -g wobj -m 664 /dev/null \
$(GLOBAL_AUTOCONF_CACHE)
.endif
if [[ `id -u` -ne 0 ]]; then \
echo $@ must be called by root >&2; \
false; \
fi
-mkdir -p $(MFS_OBJ) && \
mount -t mfs -o rw,noatime,-s=$(MFS_SIZE) swap $(MFS_OBJ) && \
chown build:wobj $(MFS_OBJ) && chmod 770 $(MFS_OBJ)
cd /usr/src; make obj $(LOGS)
cd /usr/src/share/mk && \
exec $(MAKE) $(MKOPTIONS) install $(LOGS)
#cd /usr/src && \
exec $(MAKE) $(MKOPTIONS) cleandir $(LOGS)
echo - Building /usr/src/include && \
cd /usr/src && \
exec $(MAKE) $(MKOPTIONS) includes $(LOGS)
echo - Building /usr/src/lib && \
cd /usr/src/lib && \
su build -c 'exec $(MAKE) $(MKOPTIONS)' $(LOGS) \
&& NOMAN=1 exec $(MAKE) $(MKOPTIONS) install $(LOGS)
echo - Building /usr/src/gnu/lib && \
cd /usr/src/gnu/lib && \
su build -c 'exec $(MAKE) $(MKOPTIONS)' $(LOGS) \
&& NOMAN=1 exec $(MAKE) $(MKOPTIONS) install $(LOGS)
/sbin/ldconfig -R
echo - Building /usr/src && \
cd /usr/src && \
su build -c 'exec $(MAKE) $(MKOPTIONS)' $(LOGS) && \
exec $(MAKE) $(MKOPTIONS) install $(LOGS)
echo - Building distribution sets && \
cd /usr/src && \
/bin/sh /usr/src/distrib/sets/makeetcset \
/usr/src $(MAKE) $(MKOPTIONS) $(LOGS)
echo + BASE built - $$(date +"%Y-%m-%dT%H:%M:%S%z")
/usr/xenocara:
echo - Cloning xenocara
cd /usr/; git clone https://github.com/openbsd/xenocara $@ >> $(BUILD_LOG) 2>&1
chown -R build:wsrc $@
/usr/src/Makefile:
echo - Cloning sources
git clone https://github.com/openbsd/src /usr/src >> $(BUILD_LOG) 2>&1
/usr/ports:
echo - Cloning ports
cd /usr/; git clone https://github.com/openbsd/ports $@ >> $(BUILD_LOG) 2>&1
chown -R build:wsrc $@
/etc/mk.conf:
printf 'PIPE=\t-pipe\
\nGLOBAL_AUTOCONF_CACHE=\t/dest/autoconf_cache\
\nNOPROFILE=\tyes\
\nUSE_CCACHE=\tyes\
\nCCACHE_ENV="CCACHE_PREFIX=/usr/local/bin/distccwrapper CCACHE_MAXSIZE=10G CCACHE_DIR=$(DEST_PATH_BASE)/ccache"\
\nSKIPDIR+=\tregress\
\n#SKIPDIR+=\tgames\n' > $@
dl-sources: /usr/src/Makefile /etc/mk.conf /usr/xenocara $(DEST_PATH_BASE)/ccache
echo - Source downloaded
chown -R build:wsrc /usr/src
$(DEST_PATH_BASE)/ccache:
mkdir -p $(DEST_PATH_BASE)/ccache
chown -R build:wsrc $(DEST_PATH_BASE)/ccache
do-kernel: /usr/src/sys/arch/$(MACHINE)/conf/$(BUILD_CONF)
echo + Building $(BUILD_CONF) KERNEL - $$(date +"%Y-%m-%dT%H:%M:%S%z")
#cd /usr/src/sys/arch/$(MACHINE); make clean >> $(BUILD_LOG)
cd /usr/src/sys/arch/$(MACHINE)/conf ; config $(BUILD_CONF) >> $(BUILD_LOG)
-@cd /usr/src/sys/arch/$(MACHINE)/compile/$(BUILD_CONF); make obj >> $(BUILD_LOG)
cd /usr/src/sys/arch/$(MACHINE)/compile/$(BUILD_CONF); make config >> $(BUILD_LOG)
echo - Compiling $(BUILD_CONF) kernel && \
cd /usr/src/sys/arch/$(MACHINE)/compile/$(BUILD_CONF); \
make $(MKOPTIONS) $(LOGS)
#echo - Installing $(BUILD_CONF) kernel && \
cd /usr/src/sys/arch/$(MACHINE)/compile/$(BUILD_CONF); \
make $(MKOPTIONS) install $(LOGS)
echo + $(BUILD_CONF) KERNEL built - $$(date +"%Y-%m-%dT%H:%M:%S%z")