diff options
author | Robert Nagy <robert@cvs.openbsd.org> | 2017-01-17 20:58:57 +0000 |
---|---|---|
committer | Robert Nagy <robert@cvs.openbsd.org> | 2017-01-17 20:58:57 +0000 |
commit | 4abb31ffa118056430a51410ac244cef74338c53 (patch) | |
tree | f4ea158328a4bc2d67105a92e1006b35665c757f /distrib/syspatch | |
parent | 9728112f3dccece22708c1570d2c1eefac7bd89e (diff) |
rework some of the variables for better directory name handling and
add support for linking against libraries inside the fake root so
that syspatches can include static binaries linked with the fixed libraries
Diffstat (limited to 'distrib/syspatch')
-rw-r--r-- | distrib/syspatch/bsd.syspatch.mk | 93 |
1 files changed, 40 insertions, 53 deletions
diff --git a/distrib/syspatch/bsd.syspatch.mk b/distrib/syspatch/bsd.syspatch.mk index 2cd2bfc851e..6c491033630 100644 --- a/distrib/syspatch/bsd.syspatch.mk +++ b/distrib/syspatch/bsd.syspatch.mk @@ -1,4 +1,4 @@ -# $OpenBSD: bsd.syspatch.mk,v 1.6 2016/11/09 15:45:28 ajacoutot Exp $ +# $OpenBSD: bsd.syspatch.mk,v 1.7 2017/01/17 20:58:56 robert Exp $ # # Copyright (c) 2016 Robert Nagy <robert@openbsd.org> # @@ -24,8 +24,14 @@ FETCH= /usr/bin/ftp -Vm # make sure to only use the original OpenBSD mirror MIRROR= https://ftp.openbsd.org/pub/OpenBSD/patches/${OSREV}/common +# build type defaults to src +BUILD?= src + +SYSPATCH_BASE= syspatch${OSrev}-${ERRATA} +SYSPATCH_SHRT= ${OSrev}-${ERRATA} + # the final name of the syspatch tarball -SYSPATCH= syspatch${OSrev}-${ERRATA}.tgz +SYSPATCH= ${SYSPATCH_BASE}.tgz # arguments used by different tools MTREE_FILES= /etc/mtree/4.4BSD.dist @@ -34,19 +40,15 @@ SIGNIFY_KEY= /etc/signify/openbsd-${OSrev}-base.pub PATCH_STRIP?= -p0 PATCH_ARGS= -d ${SRCDIR} -z .orig --forward --quiet -E ${PATCH_STRIP} -# build type defaults to src -BUILD?= src - # miscellaneous variables -SYSPATCH_DIR= ${FAKE}/var/syspatch/${OSREV} -FAKE= ${DESTDIR}/syspatch/${ERRATA} +SYSPATCH_DIR= ${FAKE}/var/syspatch/${SYSPATCH_SHRT} +FAKE= ${FAKEROOT}/syspatch/${SYSPATCH_SHRT} SRCDIR= ${BSDSRCDIR} SUBDIR?= _PATCH_COOKIE= ${ERRATA}/.patch_done _BUILD_COOKIE= ${ERRATA}/.build_done _FAKE_COOKIE= ${ERRATA}/.fake_done -_INSTALL_COOKIE=${ERRATA}/.install_done .if ${BUILD:L:Msrc} SRCDIR= ${BSDSRCDIR} @@ -65,27 +67,24 @@ clean: cleandir: clean -testroot: +${_FAKE_COOKIE}: +.ifndef FAKEROOT + @{ echo "***> setenv FAKEROOT before doing that!"; \ + exit 1; }; +.else @if [[ `id -u` -ne 0 ]]; then \ { echo "***> $@ must be called by root"; \ exit 1; }; \ fi - -${_FAKE_COOKIE}: testroot ${_BUILD_COOKIE} -.ifndef DESTDIR - @{ echo "***> setenv DESTDIR before doing that!"; \ - exit 1; }; -.else - @destmp=`df -P ${DESTDIR} | awk 'END { print $$6 }'`; \ + @destmp=`df -P ${FAKEROOT} | awk 'END { print $$6 }'`; \ if ! mount | grep -q " $${destmp} .*noperm"; then \ - echo ${DESTDIR} must be on a noperm filesystem >&2; \ + echo ${FAKEROOT} must be on a noperm filesystem >&2; \ false; \ fi; \ if [[ `stat -f '%Su %Lp' $${destmp}` != '${BUILDUSER} 700' ]]; then \ echo $${destmp} must have owner BUILDUSER and mode 700 >&2; \ false; \ fi - ${INSTALL} -d -m 755 ${SYSPATCH_DIR} ${INSTALL} ${INSTALL_COPY} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \ ${ERRATA}/${ERRATA}.patch.sig ${SYSPATCH_DIR} @@ -111,19 +110,37 @@ ${_PATCH_COOKIE}: ${ERRATA}/${ERRATA}.patch exit 1; }; @su ${BUILDUSER} -c 'touch $@' -${_INSTALL_COOKIE}: ${_FAKE_COOKIE} +.ifdef DESTDIR +${_BUILD_COOKIE}: ${_PATCH_COOKIE} ${_FAKE_COOKIE} + @{ echo "***> cannot set DESTDIR here!"; \ + exit 1; }; +.elif !defined(FAKEROOT) +${_BUILD_COOKIE}: ${_PATCH_COOKIE} ${_FAKE_COOKIE} + @{ echo "***> setenv FAKEROOT before doing that!"; \ + exit 1; }; +.else +${_BUILD_COOKIE}: ${_PATCH_COOKIE} ${_FAKE_COOKIE} .if ${BUILD:L:Msrc} || ${BUILD:L:Mxenocara} . if defined(SUBDIR) && !empty(SUBDIR) . for _s in ${SUBDIR} @if [ -f ${_s}/Makefile.bsd-wrapper ]; then \ _mk_spec_="-f Makefile.bsd-wrapper"; \ fi; \ - cd ${_s} && su ${BUILDUSER} -c "/usr/bin/make $${_mk_spec_} \ - DESTDIR=${FAKE} install" + for _t in obj depend all; do \ + su ${BUILDUSER} -c "cd ${_s} && /usr/bin/make $${_mk_spec_} DESTDIR_LIBLINK=${FAKE} $${_t}"; \ + done; \ + su ${BUILDUSER} -c "cd ${_s} && /usr/bin/make $${_mk_spec_} DESTDIR=${FAKE} install"; . endfor . endif .elif ${BUILD:L:Mkernel} . for _kern in GENERIC GENERIC.MP + @if cd ${SRCDIR}/sys/arch/${MACHINE_ARCH}/conf; then \ + if config ${_kern}; then \ + if cd ../compile/${_kern} && make; then \ + exit 0; \ + fi; exit 1; \ + fi; exit 1; \ + fi; @if [ ${_kern} = "GENERIC" ]; then \ su ${BUILDUSER} -c '${INSTALL} ${INSTALL_COPY} -o ${SHAREOWN} -g ${LOCALEGRP} \ -m 0644 ${SRCDIR}/sys/arch/${MACHINE_ARCH}/compile/${_kern}/bsd \ @@ -140,36 +157,6 @@ ${_INSTALL_COOKIE}: ${_FAKE_COOKIE} . endfor .endif @su ${BUILDUSER} -c 'touch $@' - -.ifdef DESTDIR -${_BUILD_COOKIE}: ${_PATCH_COOKIE} - @echo cannot build with DESTDIR set - @false -.else -${_BUILD_COOKIE}: ${_PATCH_COOKIE} -.if ${BUILD:L:Msrc} || ${BUILD:L:Mxenocara} -. if defined(SUBDIR) && !empty(SUBDIR) -. for _s in ${SUBDIR} - @if [ -f ${_s}/Makefile.bsd-wrapper ]; then \ - _mk_spec_="-f Makefile.bsd-wrapper"; \ - fi; \ - for _t in obj depend all; do \ - su ${BUILDUSER} -c "cd ${_s} && /usr/bin/make $${_mk_spec_} $${_t}"; \ - done; -. endfor -. endif -.elif ${BUILD:L:Mkernel} -. for _kern in GENERIC GENERIC.MP - @if cd ${SRCDIR}/sys/arch/${MACHINE_ARCH}/conf; then \ - if config ${_kern}; then \ - if cd ../compile/${_kern} && make; then \ - exit 0; \ - fi; exit 1; \ - fi; exit 1; \ - fi; exit 1 -. endfor -.endif - @su ${BUILDUSER} -c 'touch $@' .endif syspatch: ${SYSPATCH} @@ -181,9 +168,9 @@ ${SYSPATCH}: ${ERRATA}/.plist @su ${BUILDUSER} -c 'tar -Pczf ${.TARGET} -C ${FAKE} -I ${ERRATA}/.plist' || \ { echo "***> unable to create ${.TARGET}"; \ exit 1; }; - @echo ">> Created ${SYSPATCH}"; \ + @echo ">> Created ${SYSPATCH}"; -${ERRATA}/.fplist: ${_INSTALL_COOKIE} +${ERRATA}/.fplist: ${_BUILD_COOKIE} @su ${BUILDUSER} -c 'find ${FAKE} \! -type d > ${.OBJDIR}/${ERRATA}/.fplist' || \ { echo "***> unable to create list of files"; \ exit 1; }; |