builder: catgets fix for msys2 + minor changes

Change `ln -s` to `cp` in the catgets makefile in the applied patch,
this is used for making symlinks to some header files, this will
hopefully fix building catgets for @ZachBacon on msys2. There seems to
be a problem with the mingw gcc reading headers that are symlinks, even
if they are real windows symlinks.

Also slightly refactor checking for target built files. Add the `-f`
flag for `install_artifact([-f] $dist)` for the full path to the target
file, and add the helper functions `check_install_artifact($dist)` and
`check_install_artifact_relative($dist $root_path)`.

These helper functions also display error messages if the target file
does not exist, as opposed to the previous behavior where it would just
silently exit nonzero.
This commit is contained in:
Rafael Kitover 2018-11-23 09:48:48 -08:00
parent a6034ddfa2
commit afbe647aed
2 changed files with 48 additions and 14 deletions

View File

@ -876,7 +876,7 @@ build_prerequisites() {
dists_are_installed() { dists_are_installed() {
for current_dist; do for current_dist; do
if ! path_exists "$(install_artifact $current_dist)"; then if ! path_exists "$(install_artifact -f $current_dist)"; then
return 1 return 1
fi fi
done done
@ -1299,7 +1299,7 @@ build_dist_if_needed() {
[ -n "$current_dist" ] || die 'build_dist_if_needed: dist name required' [ -n "$current_dist" ] || die 'build_dist_if_needed: dist name required'
shift shift
if ! path_exists "$(install_artifact $current_dist)"; then if ! path_exists "$(install_artifact -f $current_dist)"; then
build_dist $current_dist "$@" build_dist $current_dist "$@"
BUILT_DISTS="$BUILT_DISTS $current_dist" BUILT_DISTS="$BUILT_DISTS $current_dist"
fi fi
@ -1356,7 +1356,7 @@ build_dist() {
eval "set -- $extra_dist_args" eval "set -- $extra_dist_args"
echo_eval_run "$build_override $@" echo_eval_run "$build_override $@"
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
else else
if [ "$config_type" = meson ] || [ -z "$config_type" -a -f meson.build ]; then if [ "$config_type" = meson ] || [ -z "$config_type" -a -f meson.build ]; then
mkdir -p build mkdir -p build
@ -1384,7 +1384,7 @@ build_dist() {
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")" echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
fi fi
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
elif [ "$config_type" = autoconf -o "$config_type" = autoreconf ] || [ -z "$config_type" -a \( -f configure -o -f Configure -o -f configure.ac -o -f configure.in -o -f Makefile.am \) ]; then elif [ "$config_type" = autoconf -o "$config_type" = autoreconf ] || [ -z "$config_type" -a \( -f configure -o -f Configure -o -f configure.ac -o -f configure.in -o -f Makefile.am \) ]; then
# workaround a sometimes autoconf bug # workaround a sometimes autoconf bug
touch config.rpath touch config.rpath
@ -1463,7 +1463,7 @@ build_dist() {
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")" echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
fi fi
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
elif [ "$config_type" = cmakeninja ]; then elif [ "$config_type" = cmakeninja ]; then
if ! command -v ninja >/dev/null; then if ! command -v ninja >/dev/null; then
error "configure type 'cmakeninja' requested but ninja is not available yet"; error "configure type 'cmakeninja' requested but ninja is not available yet";
@ -1496,7 +1496,7 @@ build_dist() {
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")" echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
fi fi
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
elif [ "$config_type" = cmake ] || [ -z "$config_type" -a -f CMakeLists.txt ]; then elif [ "$config_type" = cmake ] || [ -z "$config_type" -a -f CMakeLists.txt ]; then
mkdir -p build mkdir -p build
cd build cd build
@ -1525,7 +1525,7 @@ build_dist() {
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")" echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
fi fi
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
elif [ "$config_type" = python ] || [ -z "$config_type" -a -f setup.py ]; then elif [ "$config_type" = python ] || [ -z "$config_type" -a -f setup.py ]; then
if [ -z "$install_override" ]; then if [ -z "$install_override" ]; then
pip= pip=
@ -1552,7 +1552,7 @@ build_dist() {
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")" echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
fi fi
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
elif [ "$config_type" = perl ] || [ -z "$config_type" -a -f Makefile.PL ]; then elif [ "$config_type" = perl ] || [ -z "$config_type" -a -f Makefile.PL ]; then
echo_run cpanm --notest --installdeps . echo_run cpanm --notest --installdeps .
@ -1575,7 +1575,7 @@ build_dist() {
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")" echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
fi fi
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
elif [ "$config_type" = make ] || [ -z "$config_type" -a \( -f Makefile -o -f makefile \) ]; then elif [ "$config_type" = make ] || [ -z "$config_type" -a \( -f Makefile -o -f makefile \) ]; then
makefile=makefile makefile=makefile
if [ -f Makefile ]; then if [ -f Makefile ]; then
@ -1599,7 +1599,7 @@ build_dist() {
echo_eval_run "$install_override $(dist_make_install_args "$current_dist")" echo_eval_run "$install_override $(dist_make_install_args "$current_dist")"
fi fi
path_exists "$(install_artifact $current_dist)" check_install_artifact "$current_dist"
else else
die "don't know how to build $current_dist, please define a BUILD_OVERRIDE" die "don't know how to build $current_dist, please define a BUILD_OVERRIDE"
fi fi
@ -1695,7 +1695,7 @@ install_dist() {
IFS=$OIFS IFS=$OIFS
# check that key file was built # check that key file was built
path_exists "destdir${prefix}/$(install_artifact_relative "$current_dist")" check_install_artifact_relative "$current_dist" "destdir${prefix}"
# when cross compiling, resolve build root to host or target # when cross compiling, resolve build root to host or target
inst_root=$(resolve_link "$BUILD_ROOT/root") inst_root=$(resolve_link "$BUILD_ROOT/root")
@ -2683,6 +2683,12 @@ list_remove_duplicates() {
} }
install_artifact() { install_artifact() {
full=
if [ "$1" = "-f" ]; then
full=1
shift
fi
current_dist=$1 current_dist=$1
[ -n "$current_dist" ] || die 'install_artifact: dist name required' [ -n "$current_dist" ] || die 'install_artifact: dist name required'
@ -2697,12 +2703,40 @@ install_artifact() {
# trees # trees
case "$path" in case "$path" in
/*) /*)
puts "$path" if [ -n "$full" ]; then
puts "$path"
else
puts "$(install_artifact_relative "$current_dist")"
fi
return 0 return 0
;; ;;
esac esac
puts "$BUILD_ROOT/root${prefix}/${path}" if [ -n "$full" ]; then
puts "$BUILD_ROOT/root${prefix}/${path}"
else
puts "$path"
fi
}
check_install_artifact() {
current_dist=$1
[ -n "$current_dist" ] || die 'check_install_artifact: dist name required'
if ! path_exists "$(install_artifact -f $current_dist)"; then
die "$current_dist: target file not found after install"
fi
}
check_install_artifact_relative() {
current_dist=$1
[ -n "$current_dist" ] || die 'check_install_artifact_relative: dist name required'
root=$2
[ -n "$root" ] || die 'check_install_artifact_relative: directory root relative to required'
if ! path_exists "${root}/$(install_artifact_relative $current_dist)"; then
die "$current_dist: target file not found in unpack directory"
fi
} }
install_artifact_relative() { install_artifact_relative() {

View File

@ -265,7 +265,7 @@ table_insert_after DISTS libiconv-target '
' '
table_line_append DIST_PATCHES catgets "\ table_line_append DIST_PATCHES catgets "\
https://gist.githubusercontent.com/rkitover/4fe26d4af9e20234ba7821100356b0a6/raw/715b89f23b0e13a5d1859bfeee600f43edd35c07/mingw-catgets-mc_realloc-and-langinfo.patch \ https://gist.githubusercontent.com/rkitover/4fe26d4af9e20234ba7821100356b0a6/raw/1f11522e9feea3c2a431beca57fc3db07ca44a1c/mingw-catgets-mc_realloc-and-langinfo.patch \
" "
table_line_append DIST_POST_BUILD catgets ":; \ table_line_append DIST_POST_BUILD catgets ":; \