CI: Use the git commit hash to determine the revision of APR/APR-util

from the github repos, and build exactly that, rather than relying on SVN:
 - works if apr/apr-util moves to a r/w git in the future
 - removes a race for branches where the git revision tested
 could be different to the SVN revision retrieved before

Github: closes #528


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1924958 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Joe Orton
2025-04-09 10:17:24 +00:00
parent e6cfbfa30d
commit 65d5f9ee6c

View File

@ -24,7 +24,6 @@ fi
function install_apx() { function install_apx() {
local name=$1 local name=$1
local version=$2 local version=$2
local root=https://svn.apache.org/repos/asf/apr/${name}
local prefix=${HOME}/root/${name}-${version} local prefix=${HOME}/root/${name}-${version}
local build=${HOME}/build/${name}-${version} local build=${HOME}/build/${name}-${version}
local giturl=https://github.com/apache/${name}.git local giturl=https://github.com/apache/${name}.git
@ -32,30 +31,38 @@ function install_apx() {
local buildconf=$4 local buildconf=$4
case $version in case $version in
trunk) url=${root}/trunk ;; trunk|*.x) ref=refs/heads/${version} ;;
*.x) url=${root}/branches/${version} ;; *) ref=refs/tags/${version} ;;
*) url=${root}/tags/${version} ;;
esac esac
local revision=`svn info --show-item last-changed-revision ${url}` # Fetch the object ID (hash) of latest commit
local commit=`git ls-remote ${giturl} ${ref} | cut -f1`
if test -z "$commit"; then
: Could not determine latest commit hash for ${ref} in ${giturl} - check branch is valid?
exit 1
fi
# Blow away the cached install root if the cached install is stale # Blow away the cached install root if the cached install is stale
# or doesn't match the expected configuration. # or doesn't match the expected configuration.
grep -q "${version} ${revision} ${config} CC=$CC" ${HOME}/root/.key-${name} || rm -rf ${prefix} grep -q "${version} ${commit} ${config} CC=$CC" ${HOME}/root/.key-${name} || rm -rf ${prefix}
if test -d ${prefix}; then if test -d ${prefix}; then
return 0 return 0
fi fi
git clone -q --depth=1 --branch=$version ${giturl} ${build} git init -q ${build}
pushd $build pushd $build
# Clone and checkout the commit identified above.
git remote add origin ${giturl}
git fetch -q --depth=1 origin ${commit}
git checkout ${commit}
./buildconf ${buildconf} ./buildconf ${buildconf}
./configure --prefix=${prefix} ${config} ./configure --prefix=${prefix} ${config}
make -j2 make -j2
make install make install
popd popd
echo ${version} ${revision} "${config}" "CC=${CC}" > ${HOME}/root/.key-${name} echo ${version} ${commit} "${config}" "CC=${CC}" > ${HOME}/root/.key-${name}
} }
# Allow to load $HOME/build/apache/httpd/.gdbinit # Allow to load $HOME/build/apache/httpd/.gdbinit