View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0009438 | ardour | bugs | public | 2023-08-25 04:31 | 2024-12-06 22:19 |
| Reporter | ergen | Assigned To | |||
| Priority | low | Severity | minor | Reproducibility | sometimes |
| Status | new | Resolution | open | ||
| Platform | Apple Macintosh | OS | MacOS | OS Version | 10.12 or later |
| Product Version | 7.5 | ||||
| Summary | 0009438: update ardour-build-tools/build-stack | ||||
| Description | - change zlib source to github - run curl without -k if it fails initially - build harfbuzz before freetype to prevent undefined HB_SCRIPT_ADLAM/HB_SCRIPT_OSAGE error | ||||
| Tags | No tags attached. | ||||
|
|
0001-change-zlib-source-to-github-try-curl-without-k-buil.patch (4,111 bytes)
From 147c5fccc1b0090d792150a6e00d50ab9c920de0 Mon Sep 17 00:00:00 2001
From: perry <pbtnguyen@gmail.com>
Date: Fri, 25 Aug 2023 00:28:03 -0400
Subject: [PATCH] change zlib source to github;try curl without -k;build
harfbuzz before freetype
---
build-stack | 78 ++++++++++++++++++++++++++---------------------------
1 file changed, 39 insertions(+), 39 deletions(-)
diff --git a/build-stack b/build-stack
index 2fb1354..7cd0fe1 100755
--- a/build-stack
+++ b/build-stack
@@ -69,7 +69,7 @@ function fetch_as () {
fi
echo "--- Downloading.. $2"
if uname -a | grep --silent arwin ; then
- curl -L -k -o $1 $2
+ curl -L -k -o $1 $2 || curl -L -o $1 $2
else
wget --no-check-certificate -O $1 $2
fi
@@ -346,7 +346,7 @@ defmod 'glib' '2.56.4' 'http://ftp.gnome.org/pub/gnome/sources/glib/2.56/' 'xz'
defmod 'pkgconfig' 'pkg-config' '0.29.2' 'http://pkgconfig.freedesktop.org/releases/' 'gz'
defmod 'termcap' '1.3.1' 'http://ftpmirror.gnu.org/termcap/' 'gz'
defmod 'readline' '8.2' 'http://ftpmirror.gnu.org/readline/' 'gz'
-defmod 'zlib' '1.2.13' 'https://zlib.net/' 'gz'
+defmod 'zlib' '1.2.13' 'https://github.com/madler/zlib/releases/download/v1.2.13/' 'gz'
defmod 'libiconv' '1.16' 'https://ftp.gnu.org/pub/gnu/libiconv/' 'gz'
defmod 'gettext' '0.21' 'http://ftpmirror.gnu.org/gettext/' 'gz'
defmod 'expat' '2.5.0' 'https://downloads.sourceforge.net/project/expat/expat/2.5.0/' 'gz'
@@ -905,6 +905,43 @@ else
basic_builder pixman
fi
+tar xf $MOD_harfbuzz_local_tarball && \
+(
+ set -e
+ cd $MOD_harfbuzz_unpacked
+ # work around clang Werror,Wunused-but-set-variable
+ patch -p1 << EOF
+diff --git a/src/hb-subset-cff1.cc b/src/hb-subset-cff1.cc
+index f3ed518..029ccf6 100644
+--- a/src/hb-subset-cff1.cc
++++ b/src/hb-subset-cff1.cc
+@@ -402,12 +402,11 @@ struct cff_subset_plan {
+ void plan_subset_encoding (const OT::cff1::accelerator_subset_t &acc, hb_subset_plan_t *plan)
+ {
+ const Encoding *encoding = acc.encoding;
+- unsigned int size0, size1, supp_size;
++ unsigned int size0, size1;
+ hb_codepoint_t code, last_code = CFF_UNDEF_CODE;
+ hb_vector_t<hb_codepoint_t> supp_codes;
+
+ subset_enc_code_ranges.resize (0);
+- supp_size = 0;
+ supp_codes.init ();
+
+ subset_enc_num_codes = plan->num_output_glyphs () - 1;
+@@ -443,7 +442,6 @@ struct cff_subset_plan {
+ code_pair_t pair = { supp_codes[i], sid };
+ subset_enc_supp_codes.push (pair);
+ }
+- supp_size += SuppEncoding::static_size * supp_codes.length;
+ }
+ }
+ supp_codes.fini ();
+EOF
+
+ basic_buildonly harfbuzz
+) || die "harfbuzz build failed"
+
if [ x$OSX = x ] ; then
echo "=== freetype (w/bytecode patch)"
tar xf $MOD_freetype_local_tarball && \
@@ -974,43 +1011,6 @@ else
) || die "cairo build failed"
fi
-tar xf $MOD_harfbuzz_local_tarball && \
-(
- set -e
- cd $MOD_harfbuzz_unpacked
- # work around clang Werror,Wunused-but-set-variable
- patch -p1 << EOF
-diff --git a/src/hb-subset-cff1.cc b/src/hb-subset-cff1.cc
-index f3ed518..029ccf6 100644
---- a/src/hb-subset-cff1.cc
-+++ b/src/hb-subset-cff1.cc
-@@ -402,12 +402,11 @@ struct cff_subset_plan {
- void plan_subset_encoding (const OT::cff1::accelerator_subset_t &acc, hb_subset_plan_t *plan)
- {
- const Encoding *encoding = acc.encoding;
-- unsigned int size0, size1, supp_size;
-+ unsigned int size0, size1;
- hb_codepoint_t code, last_code = CFF_UNDEF_CODE;
- hb_vector_t<hb_codepoint_t> supp_codes;
-
- subset_enc_code_ranges.resize (0);
-- supp_size = 0;
- supp_codes.init ();
-
- subset_enc_num_codes = plan->num_output_glyphs () - 1;
-@@ -443,7 +442,6 @@ struct cff_subset_plan {
- code_pair_t pair = { supp_codes[i], sid };
- subset_enc_supp_codes.push (pair);
- }
-- supp_size += SuppEncoding::static_size * supp_codes.length;
- }
- }
- supp_codes.fini ();
-EOF
-
- basic_buildonly harfbuzz
-) || die "harfbuzz build failed"
-
basic_builder fribidi
GLOBAL_CONF="$GLOBAL_CONF $PANGO_CONF --with-included-modules=yes" \
--
2.39.2 (Apple Git-143)
|
|
|
can you elaborate on why you swapped harfbuzz and freetype? Also did you mean curl -L -o $1 $2 || curl -L -k -o $1 $2 IIRC insecure was for old OSX builders, which did not have updated certs. So we can probably get rid of that, too. |
|
|
I was getting error 'undefined "HB_SCRIPT_ADLAM"/"HB_SCRIPT_OSAGE"' when building freetype. I believe the issue is that freetype is expecting those symbols, which are defined by harfbuzz, which in the original build script is built after freetype. When I built harfbuzz before freetype the error went away. after I did this i read that freetype is not actually even used on macos https://ardour.org/current_dependencies.html -- if this is true should freetype just be removed from the build stack for macos? maybe harfbuzz too? your suggestion regarding curl definitely seems better practice than mine, i was mainly just trying to introduce the least amount of change in behavior. i'll try building fresh without inseucre and update the patch accordingly. |
|
|
I have applied the curl change. I'm still curious about the freetype issue. There is circular dependency: freetype can use harfbuzz and harfbuzz can use freetype. In our case this is a non-issue since freetype is not directly used and text rendering happens via pango/cairo -> harfbuzz -> freetype/CoreFont. The build script runs regularly and on different systems for nightly and local builds on High Siearra (Intel), Mojave (Intel) , BigSur (Intel and M1) and Venuta (M2). So it's curious that you ran into those issues, while it works otherwis |
|
|
please update expat to 2.6.4 -- 2.6.3 has been marked vulnerable on sourceforge and has been removed. |
|
|
sources relying on http://ftp.acc.umu.se/pub/gnome/sources need to be updated as well (403 forbidden): gnomecommon, gnomedocutils and pangomm. I caught these during the build since they failed to be extracted--I think they ought to be checked before building at least cursorily, it saves time. I patched `fetch_as` to check if downloaded packages are HTML documents and delete&fail the build if so. 0001-update-expat-to-2.6.4-and-gnomecommon-gnomedocutils-.patch (2,703 bytes)
From f29c32f60bfd8e4c773d9265a86dcbe404cd093b Mon Sep 17 00:00:00 2001 From: perry <pbtnguyen@gmail.com> Date: Fri, 6 Dec 2024 03:26:17 -0500 Subject: [PATCH 1/2] update expat to 2.6.4 and gnomecommon, gnomedocutils and pangomm sources --- build-stack | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build-stack b/build-stack index 224ebe2..bd58672 100755 --- a/build-stack +++ b/build-stack @@ -360,15 +360,15 @@ defmod 'readline' '8.2' 'http://ftpmirror.gnu.org/readline/' 'gz' defmod 'zlib' '1.3.1' 'https://zlib.net/' 'gz' defmod 'libiconv' '1.16' 'https://ftp.gnu.org/pub/gnu/libiconv/' 'gz' defmod 'gettext' '0.22' 'http://ftpmirror.gnu.org/gettext/' 'gz' -defmod 'expat' '2.6.3' 'https://downloads.sourceforge.net/project/expat/expat/2.6.3/' 'xz' +defmod 'expat' '2.6.4' 'https://downloads.sourceforge.net/project/expat/expat/2.6.4/' 'xz' defmod 'libxml2' '2.9.12' 'http://xmlsoft.org/download/' 'gz' defmod 'libxslt' '1.1.34' 'http://xmlsoft.org/download/' 'gz' defmod 'tiff' '4.0.3' 'http://download.osgeo.org/libtiff/old/' 'gz' defmod 'libpng' '1.6.37' 'https://downloads.sourceforge.net/project/libpng/libpng16/1.6.37/' 'xz' defmod 'jpeg' 'jpegsrc.v9a' '' 'http://www.ijg.org/files/' 'gz' 'jpeg-9a' defmod 'itstool' '2.0.7' 'http://files.itstool.org/itstool/' bz2 -defmod 'gnomecommon' 'gnome-common' '2.34.0' 'http://ftp.acc.umu.se/pub/gnome/sources/gnome-common/2.34/' 'bz2' -defmod 'gnomedocutils' 'gnome-doc-utils' '0.20.10' 'http://ftp.acc.umu.se/pub/gnome/sources/gnome-doc-utils/0.20/' 'xz' +defmod 'gnomecommon' 'gnome-common' '2.34.0' 'https://download.gnome.org/sources/gnome-common/2.34/' 'bz2' +defmod 'gnomedocutils' 'gnome-doc-utils' '0.20.10' 'https://download.gnome.org/sources/gnome-doc-utils/0.20/' 'xz' defmod 'pixman' '0.42.2' 'http://www.cairographics.org/releases/' 'gz' defmod 'libffi' '3.4.2' 'https://github.com/libffi/libffi/releases/download/v3.4.2/' 'gz' defmod 'freetype' '2.9' 'https://downloads.sourceforge.net/project/freetype/freetype2/2.9/' 'bz2' @@ -384,7 +384,7 @@ defmod boost boost_1_68_0 '' http://sourceforge.net/projects/boost/files/boost/1 defmod fftw 3.3.8 http://fftw.org/ gz defmod glibmm 2.56.1 https://download.gnome.org/sources/glibmm/2.56/ xz defmod cairomm 1.12.2 http://cairographics.org/releases/ gz -defmod pangomm 2.42.0 http://ftp.acc.umu.se/pub/gnome/sources/pangomm/2.42/ xz +defmod pangomm 2.42.0 https://download.gnome.org/sources/pangomm/2.42/ xz defmod libart_lgpl 2.3.21 http://ftp.gnome.org/pub/gnome/sources/libart_lgpl/2.3/ bz2 defmod liblo 0.28 http://downloads.sourceforge.net/liblo/ gz defmod raptor2 2.0.14 http://download.librdf.org/source/ gz -- 2.24.3 (Apple Git-128) 0002-fail-build-if-downloaded-or-cached-file-is-an-HTML-d.patch (1,074 bytes)
From f577c268b00f6cc55b162b852ee687663a2f1568 Mon Sep 17 00:00:00 2001
From: perry <pbtnguyen@gmail.com>
Date: Fri, 6 Dec 2024 03:27:04 -0500
Subject: [PATCH 2/2] fail build if downloaded or cached file is an HTML
document
---
build-stack | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/build-stack b/build-stack
index bd58672..b9a92e6 100755
--- a/build-stack
+++ b/build-stack
@@ -63,14 +63,17 @@ function die () {
}
function fetch_as () {
- if [ -f $1 ] ; then
- return
+ if ! [ -f $1 ] ; then
+ echo "--- Downloading.. $2"
+ if uname -a | grep --silent arwin ; then
+ curl -L -o $1 $2 || curl -L -k -o $1 $2
+ else
+ wget --no-check-certificate -O $1 $2
+ fi
fi
- echo "--- Downloading.. $2"
- if uname -a | grep --silent arwin ; then
- curl -L -o $1 $2 || curl -L -k -o $1 $2
- else
- wget --no-check-certificate -O $1 $2
+ if file $1 | grep -q HTML ; then
+ rm $1
+ return 1
fi
}
--
2.24.3 (Apple Git-128)
|
|
|
(I meant delete the package, not the build) |
|
|
Thanks. I've applied the first patch, but we cannot rely on "file" -- that is not available on our nightly build systems, and adding it to our build-stack seems unreasonable. Maybe check "$?" (curl's error code)? |
|
|
Here it's not usually an issue since sources, once downloaded, are cached |
|
|
$? appears to return 0 even on 403, but I found you can pass -f to curl to fail on 403 and other server errors, patch attached. I don't currently have access to test wget though. With this curl flag, invalid html docs shouldn't be cached anymore; if necessary I think it is fine to just manually run " find /var/tmp/src_cache -exec sh -c 'file {} | grep -q HTML && rm {}' \; ". fail-curl-on-403.patch (401 bytes)
diff --git a/build-stack b/build-stack
index bd58672..f53ed81 100755
--- a/build-stack
+++ b/build-stack
@@ -68,7 +68,7 @@ function fetch_as () {
fi
echo "--- Downloading.. $2"
if uname -a | grep --silent arwin ; then
- curl -L -o $1 $2 || curl -L -k -o $1 $2
+ curl -f -L -o $1 $2 || curl -f -L -k -o $1 $2
else
wget --no-check-certificate -O $1 $2
fi
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2023-08-25 04:31 | ergen | New Issue | |
| 2023-08-25 04:31 | ergen | File Added: 0001-change-zlib-source-to-github-try-curl-without-k-buil.patch | |
| 2023-08-25 04:53 | x42 | Note Added: 0027995 | |
| 2023-09-22 20:01 | ergen | Note Added: 0028099 | |
| 2023-09-23 12:21 | x42 | Note Added: 0028101 | |
| 2024-12-06 05:40 | ergen | Note Added: 0029141 | |
| 2024-12-06 08:37 | ergen | Note Added: 0029142 | |
| 2024-12-06 08:37 | ergen | File Added: 0001-update-expat-to-2.6.4-and-gnomecommon-gnomedocutils-.patch | |
| 2024-12-06 08:37 | ergen | File Added: 0002-fail-build-if-downloaded-or-cached-file-is-an-HTML-d.patch | |
| 2024-12-06 15:56 | ergen | Note Added: 0029145 | |
| 2024-12-06 18:13 | x42 | Note Added: 0029146 | |
| 2024-12-06 18:14 | x42 | Note Added: 0029147 | |
| 2024-12-06 22:19 | ergen | Note Added: 0029149 | |
| 2024-12-06 22:19 | ergen | File Added: fail-curl-on-403.patch |