#!/bin/sh set -e openbsd_branch=`cat OPENBSD_BRANCH` openntpd_version=`cat VERSION` # pull in latest upstream code echo "pulling upstream openbsd source" if [ ! -d openbsd ]; then if [ -z "${OPENNTPD_GIT}" ]; then git clone https://github.com/openntpd-portable/openntpd-openbsd.git openbsd else git clone "${OPENNTPD_GIT}/openbsd" fi fi (cd openbsd git fetch git checkout "${openbsd_branch}" git pull --rebase) # setup source paths dir=`pwd` patches="${dir}/patches" etc_src="${dir}/openbsd/src/etc" libc_inc="${dir}/openbsd/src/include" libc_src="${dir}/openbsd/src/lib/libc" arc4random_src="${dir}/openbsd/src/lib/libcrypto/arc4random" libutil_src="${dir}/openbsd/src/lib/libutil" ntpd_src="${dir}/openbsd/src/usr.sbin/ntpd" do_cp_libc() { sed "/DEF_WEAK/d" < "${1}" > "${2}"/`basename "${1}"` } CP_LIBC='do_cp_libc' CP='cp -p' PATCH='patch -p0 -s' ${CP} "${etc_src}/ntpd.conf" ./ sed '/DECLS/d' "${libc_inc}/md5.h" > include/md5.h sed '/DECLS/d' "${libc_inc}/sha2.h" > include/sha2_openbsd.h ${CP} "${libutil_src}/imsg.h" include/ ${CP} "${libutil_src}/imsg.c" compat/ ${CP} "${libutil_src}/imsg-buffer.c" compat/ (cd compat; ${PATCH} < "${patches}/patch-imsg.c") for i in explicit_bzero.c strlcpy.c strlcat.c; do ${CP_LIBC} "${libc_src}/string/${i}" compat done ${CP_LIBC} "${libc_src}/stdlib/reallocarray.c" compat ${CP_LIBC} "${libc_src}/stdlib/recallocarray.c" compat ${CP_LIBC} "${libc_src}/stdlib/strtonum.c" compat ${CP_LIBC} "${libc_src}/crypt/arc4random.c" compat ${CP_LIBC} "${libc_src}/crypt/arc4random_uniform.c" compat ${CP_LIBC} "${libc_src}/crypt/chacha_private.h" compat ${CP_LIBC} "${libc_src}/hash/md5.c" compat ${CP_LIBC} "${libc_src}/hash/sha2.c" compat for i in "${arc4random_src}"/getentropy_*.c; do sed -e 's/openssl\/sha.h/sha2.h/' < "${i}" > compat/`basename "${i}"` done ${CP} "${arc4random_src}"/arc4random_*.h compat for i in client.c config.c constraint.c control.c log.c log.h ntp.c ntp.h \ ntp_dns.c ntp_msg.c ntpd.c ntpd.h parse.y sensors.c server.c util.c \ ntpctl.8 ntpd.8 ntpd.conf.5 ; do file=`basename ${i}` echo Copying ${file} ${CP} "${ntpd_src}/${i}" src done (cd src for i in ../patches/*.patch; do echo Patching ${i} ${PATCH} -p4 < "${i}" done )