fix: populate ldns submodule and add autotools to LDNS build stage

- Re-cloned zonemaster-ldns with --recurse-submodules so the bundled
  ldns C library source (including Changelog and configure.ac) is present
- Added autoconf, automake, libtool to Dockerfile.backend ldns-build stage
  so libtoolize + autoreconf can generate ldns/configure during make

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-21 08:33:38 +02:00
parent 8d4eaa1489
commit eaaa8f6a11
541 changed files with 138189 additions and 0 deletions

View File

@@ -0,0 +1,258 @@
#!/usr/bin/env bash
# common.sh - an include file for commonly used functions for test code.
# BSD licensed (see LICENSE file).
#
# Version 3
# 2011-02-23: get_pcat for PCAT, PCAT_DIFF and PCAT_PRINT defines.
# 2011-02-18: ports check on BSD,Solaris. wait_nsd_up.
# 2011-02-11: first version.
#
# include this file from a tpkg script with
# . ../common.sh
#
# overview of functions available:
# error x : print error and exit
# info x : print info
# test_tool_avail x : see if program in path and complain, exit if not.
# get_ldns_testns : set LDNS_TESTNS to executable ldns-testns
# get_make : set MAKE to gmake or make tool.
# get_gcc : set cc or gcc in CC
# get_pcat : set PCAT, PCAT_DIFF and PCAT_PRINT executables.
# set_doxygen_path : set doxygen path
# skip_if_in_list : set SKIP=1 if name in list and tool not available.
# get_random_port x : get RND_PORT a sequence of free random port numbers.
# wait_server_up : wait on logfile to see when server comes up.
# wait_ldns_testns_up : wait for ldns-testns to come up.
# wait_unbound_up : wait for unbound to come up.
# wait_petal_up : wait for petal to come up.
# wait_nsd_up : wait for nsd to come up.
# wait_server_up_or_fail: wait for server to come up or print a failure string
# kill_pid : kill a server, make sure and wait for it to go down.
# print error and exit
# $0: name of program
# $1: error to printout.
error () {
echo "$0: error: $1" >&2
exit 1
}
# print info
# $0: name of program
# $1: to printout.
info () {
echo "$0: info: $1"
}
# test if 'tool' is available in path and complain otherwise.
# $1: tool
test_tool_avail () {
if test ! -x "$(command -v "$1" 2>&1)"; then
echo No "$1" in path
exit 1
fi
}
# get ldns-testns tool in LDNS_TESTNS variable.
get_ldns_testns () {
if test -x "$(command -v ldns-testns 2>&1)"; then
LDNS_TESTNS=ldns-testns
else
LDNS_TESTNS=/home/wouter/bin/ldns-testns
fi
}
# get make tool in MAKE variable, gmake is used if present.
get_make () {
if test -x "$(command -v gmake 2>&1)"; then
MAKE=gmake
else
MAKE=make
fi
}
# get cc tool in CC variable, gcc is used if present.
get_gcc () {
if test -x "$(command -v gcc 2>&1)"; then
CC=gcc
else
CC=cc
fi
}
# get pcat, pcat-print and pcat-diff
get_pcat () {
PCAT=$(command -v pcat)
PCAT_PRINT=$(command -v pcat-print)
PCAT_DIFF=$(command -v pcat-diff)
}
# set SKIP=1 if the name is in list and tool is not available.
# $1: name of package to check.
# $2: list of packages that need the tool.
# #3: name of the tool required.
skip_if_in_list () {
if echo "$2" | grep "$1" >/dev/null; then
if test ! -x "$(command -v "$3" 2>&1)"; then
SKIP=1;
fi
fi
}
# function to get a number of random port numbers.
# $1: number of random ports.
# RND_PORT is returned as the starting port number
get_random_port () {
local plist
local cont
local collisions
local i
local MAXCOLLISION=1000
cont=1
collisions=0
while test "$cont" = 1; do
#netstat -n -A ip -A ip6 -a | sed -e "s/^.*:\([0-9]*\) .*$/\1/"
RND_PORT=$(( RANDOM + 5354 ))
# depending on uname try to check for collisions in port numbers
case "$(uname)" in
linux|Linux)
plist=$(netstat -n -A ip -A ip6 -a | sed -e 's/^.*:\([0-9]*\) .*$/\1/')
;;
FreeBSD|freebsd|NetBSD|netbsd|OpenBSD|openbsd)
plist=$(netstat -n -a | grep "^[ut][dc]p[46] " | sed -e 's/^.*\.\([0-9]*\) .*$/\1/')
;;
Solaris|SunOS)
plist=$(netstat -n -a | sed -e 's/^.*\.\([0-9]*\) .*$/\1/' | grep '^[0-9]*$')
;;
*)
plist=""
;;
esac
cont=0
for (( i=0 ; i < $1 ; i++ )); do
if echo "$plist" | grep '^'"$(expr $i + $RND_PORT)"'$' >/dev/null 2>&1; then
cont=1;
collisions=$((collisions + 1))
fi
done
if test $collisions = $MAXCOLLISION; then
error "too many collisions getting random port number"
fi
done
}
# wait for server to go up, pass <logfilename> <string to watch>
# $1 : logfilename
# $2 : string to watch for.
# exits with failure if it does not come up
wait_server_up () {
local MAX_UP_TRY=120
local WAIT_THRES=30
local try
for (( try=0 ; try <= MAX_UP_TRY ; try++ )) ; do
if test -f "$1" && grep -F "$2" "$1" >/dev/null; then
#echo "done on try $try"
break;
fi
if test $try -eq $MAX_UP_TRY; then
echo "Server in $1 did not go up!"
cat "$1"
exit 1;
fi
if test $try -ge $WAIT_THRES; then
sleep 1
fi
done
}
# wait for ldns-testns to come up
# $1 : logfilename that is watched.
wait_ldns_testns_up () {
wait_server_up "$1" "Listening on port"
}
# wait for unbound to come up
# string 'Start of service' in log.
# $1 : logfilename that is watched.
wait_unbound_up () {
wait_server_up "$1" "start of service"
}
# wait for petal to come up
# string 'petal start' in log.
# $1 : logfilename that is watched.
wait_petal_up () {
wait_server_up "$1" "petal start"
}
# wait for nsd to come up
# string nsd start in log.
# $1 : logfilename that is watched.
wait_nsd_up () {
wait_server_up "$1" " started (NSD "
}
# wait for server to go up, pass <logfilename> <string to watch> <badstr>
# $1 : logfile
# $2 : success string
# $3 : failure string
wait_server_up_or_fail () {
local MAX_UP_TRY=120
local WAIT_THRES=30
local try
for (( try=0 ; try <= MAX_UP_TRY ; try++ )) ; do
if test -f "$1" && grep -F "$2" "$1" >/dev/null; then
echo "done on try $try"
break;
fi
if test -f "$1" && grep -F "$3" "$1" >/dev/null; then
echo "failed on try $try"
break;
fi
if test $try -eq $MAX_UP_TRY; then
echo "Server in $1 did not go up!"
cat "$1"
exit 1;
fi
if test $try -ge $WAIT_THRES; then
sleep 1
fi
done
}
# kill a pid, make sure and wait for it to go down.
# $1 : pid to kill
kill_pid () {
local MAX_DOWN_TRY=120
local WAIT_THRES=30
local try
kill "$1"
for (( try=0 ; try <= MAX_DOWN_TRY ; try++ )) ; do
if kill -0 "$1" >/dev/null 2>&1; then
:
else
#echo "done on try $try"
break;
fi
if test $try -eq $MAX_DOWN_TRY; then
echo "Server in $1 did not go down! Send SIGKILL"
kill -9 "$1" >/dev/null 2>&1
fi
if test $try -ge $WAIT_THRES; then
sleep 1
fi
# re-send the signal
kill "$1" >/dev/null 2>&1
done
return 0
}
# set doxygen path, so that make doc can find doxygen
set_doxygen_path () {
if test -x '/home/wouter/bin/doxygen'; then
export PATH="/home/wouter/bin:$PATH"
fi
}