From 031535823f3ff2d053bea6e0b632f17fd84c31c5 Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 29 Jun 2026 23:02:57 -0400 Subject: [PATCH] =?UTF-8?q?Etapa=20G:=20siembra=2024=20libs=20C=20de=20too?= =?UTF-8?q?lkit=20en=20incoming-clib=20(zlib/freetype/fontconfig/harfbuzz/?= =?UTF-8?q?cairo/pango/glib/...)=20=E2=80=94=20llenador=20de=20horas=20+?= =?UTF-8?q?=20ladrillos=20GUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- recipes/incoming-clib/CVE-2021-40633.patch | 30 +++ recipes/incoming-clib/CVE-2025-31344.patch | 15 ++ .../incoming-clib/CVE-2026-6732-test.patch | 84 +++++++++ recipes/incoming-clib/CVE-2026-6732.patch | 32 ++++ recipes/incoming-clib/brotli.toml | 66 +++++++ .../incoming-clib/bzip2-1.0.2-progress.patch | 175 ++++++++++++++++++ .../incoming-clib/bzip2-1.0.3-no-test.patch | 9 + .../bzip2-1.0.4-makefile-CFLAGS.patch | 25 +++ .../incoming-clib/bzip2-1.0.4-man-links.patch | 12 ++ recipes/incoming-clib/bzip2.toml | 42 +++++ recipes/incoming-clib/cairo.toml | 51 +++++ .../correct-document-page-install.patch | 58 ++++++ recipes/incoming-clib/cwd.patch | 14 ++ .../incoming-clib/disable-broken-test.patch | 18 ++ .../dont-build-html-pages-images.patch | 18 ++ recipes/incoming-clib/expat.toml | 39 ++++ recipes/incoming-clib/fix-lp64.patch | 43 +++++ recipes/incoming-clib/fix-tests-fortify.patch | 13 ++ recipes/incoming-clib/flaky-tests.patch | 83 +++++++++ recipes/incoming-clib/fontconfig.toml | 49 +++++ recipes/incoming-clib/freetype.toml | 43 +++++ recipes/incoming-clib/fribidi.toml | 40 ++++ recipes/incoming-clib/gdk-pixbuf.toml | 50 +++++ recipes/incoming-clib/gettext.toml | 52 ++++++ recipes/incoming-clib/giflib.toml | 37 ++++ recipes/incoming-clib/glib.toml | 83 +++++++++ recipes/incoming-clib/harfbuzz.toml | 51 +++++ recipes/incoming-clib/libffi.toml | 41 ++++ recipes/incoming-clib/libjpeg-turbo.toml | 72 +++++++ .../incoming-clib/libpng-fix-arm-neon.patch | 39 ++++ recipes/incoming-clib/libpng.toml | 42 +++++ recipes/incoming-clib/libwebp.toml | 47 +++++ recipes/incoming-clib/libxml2.toml | 48 +++++ recipes/incoming-clib/lz4.toml | 42 +++++ recipes/incoming-clib/musl-stacksize.patch | 23 +++ recipes/incoming-clib/optimize-mips.patch | 50 +++++ recipes/incoming-clib/pango.toml | 46 +++++ recipes/incoming-clib/pcf-family-names.patch | 13 ++ recipes/incoming-clib/pcre2.toml | 50 +++++ recipes/incoming-clib/pixman.toml | 56 ++++++ recipes/incoming-clib/projectsdir.patch | 102 ++++++++++ recipes/incoming-clib/saneso.patch | 23 +++ ...skip-meaningless-pthread-rwlock-test.patch | 13 ++ recipes/incoming-clib/skip-tests-musl.patch | 70 +++++++ .../incoming-clib/skip-unicode-16-tests.patch | 89 +++++++++ recipes/incoming-clib/subpixel.patch | 12 ++ .../table-validation-modules.patch | 21 +++ recipes/incoming-clib/tests-machine-id.patch | 41 ++++ recipes/incoming-clib/xz.toml | 54 ++++++ recipes/incoming-clib/zlib.toml | 39 ++++ recipes/incoming-clib/zstd.toml | 70 +++++++ 51 files changed, 2335 insertions(+) create mode 100644 recipes/incoming-clib/CVE-2021-40633.patch create mode 100644 recipes/incoming-clib/CVE-2025-31344.patch create mode 100644 recipes/incoming-clib/CVE-2026-6732-test.patch create mode 100644 recipes/incoming-clib/CVE-2026-6732.patch create mode 100644 recipes/incoming-clib/brotli.toml create mode 100644 recipes/incoming-clib/bzip2-1.0.2-progress.patch create mode 100644 recipes/incoming-clib/bzip2-1.0.3-no-test.patch create mode 100644 recipes/incoming-clib/bzip2-1.0.4-makefile-CFLAGS.patch create mode 100644 recipes/incoming-clib/bzip2-1.0.4-man-links.patch create mode 100644 recipes/incoming-clib/bzip2.toml create mode 100644 recipes/incoming-clib/cairo.toml create mode 100644 recipes/incoming-clib/correct-document-page-install.patch create mode 100644 recipes/incoming-clib/cwd.patch create mode 100644 recipes/incoming-clib/disable-broken-test.patch create mode 100644 recipes/incoming-clib/dont-build-html-pages-images.patch create mode 100644 recipes/incoming-clib/expat.toml create mode 100644 recipes/incoming-clib/fix-lp64.patch create mode 100644 recipes/incoming-clib/fix-tests-fortify.patch create mode 100644 recipes/incoming-clib/flaky-tests.patch create mode 100644 recipes/incoming-clib/fontconfig.toml create mode 100644 recipes/incoming-clib/freetype.toml create mode 100644 recipes/incoming-clib/fribidi.toml create mode 100644 recipes/incoming-clib/gdk-pixbuf.toml create mode 100644 recipes/incoming-clib/gettext.toml create mode 100644 recipes/incoming-clib/giflib.toml create mode 100644 recipes/incoming-clib/glib.toml create mode 100644 recipes/incoming-clib/harfbuzz.toml create mode 100644 recipes/incoming-clib/libffi.toml create mode 100644 recipes/incoming-clib/libjpeg-turbo.toml create mode 100644 recipes/incoming-clib/libpng-fix-arm-neon.patch create mode 100644 recipes/incoming-clib/libpng.toml create mode 100644 recipes/incoming-clib/libwebp.toml create mode 100644 recipes/incoming-clib/libxml2.toml create mode 100644 recipes/incoming-clib/lz4.toml create mode 100644 recipes/incoming-clib/musl-stacksize.patch create mode 100644 recipes/incoming-clib/optimize-mips.patch create mode 100644 recipes/incoming-clib/pango.toml create mode 100644 recipes/incoming-clib/pcf-family-names.patch create mode 100644 recipes/incoming-clib/pcre2.toml create mode 100644 recipes/incoming-clib/pixman.toml create mode 100644 recipes/incoming-clib/projectsdir.patch create mode 100644 recipes/incoming-clib/saneso.patch create mode 100644 recipes/incoming-clib/skip-meaningless-pthread-rwlock-test.patch create mode 100644 recipes/incoming-clib/skip-tests-musl.patch create mode 100644 recipes/incoming-clib/skip-unicode-16-tests.patch create mode 100644 recipes/incoming-clib/subpixel.patch create mode 100644 recipes/incoming-clib/table-validation-modules.patch create mode 100644 recipes/incoming-clib/tests-machine-id.patch create mode 100644 recipes/incoming-clib/xz.toml create mode 100644 recipes/incoming-clib/zlib.toml create mode 100644 recipes/incoming-clib/zstd.toml diff --git a/recipes/incoming-clib/CVE-2021-40633.patch b/recipes/incoming-clib/CVE-2021-40633.patch new file mode 100644 index 00000000..9002088b --- /dev/null +++ b/recipes/incoming-clib/CVE-2021-40633.patch @@ -0,0 +1,30 @@ +From ccbc956432650734c91acb3fc88837f7b81267ff Mon Sep 17 00:00:00 2001 +From: "Eric S. Raymond" +Date: Wed, 21 Feb 2024 18:55:00 -0500 +Subject: [PATCH] Clean up memory better at end of run (CVE-2021-40633) + +--- + gif2rgb.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/gif2rgb.c b/gif2rgb.c +index d51226d..fc2e683 100644 +--- a/gif2rgb.c ++++ b/gif2rgb.c +@@ -515,10 +515,13 @@ static void GIF2RGB(int NumFiles, char *FileName, bool OneFileFlag, + } + + DumpScreen2RGB(OutFileName, OneFileFlag, ColorMap, ScreenBuffer, + GifFile->SWidth, GifFile->SHeight); + ++ for (i = 0; i < GifFile->SHeight; i++) { ++ (void)free(ScreenBuffer[i]); ++ } + (void)free(ScreenBuffer); + + { + int Error; + if (DGifCloseFile(GifFile, &Error) == GIF_ERROR) { +-- +2.43.0 + diff --git a/recipes/incoming-clib/CVE-2025-31344.patch b/recipes/incoming-clib/CVE-2025-31344.patch new file mode 100644 index 00000000..04ef6c3b --- /dev/null +++ b/recipes/incoming-clib/CVE-2025-31344.patch @@ -0,0 +1,15 @@ +diff -up giflib-5.2.2/gif2rgb.c.omv~ giflib-5.2.2/gif2rgb.c +--- giflib-5.2.2/gif2rgb.c.omv~ 2025-04-07 21:44:54.956355983 +0200 ++++ giflib-5.2.2/gif2rgb.c 2025-04-07 21:45:29.630769589 +0200 +@@ -329,6 +329,11 @@ static void DumpScreen2RGB(char *FileNam + GifRow = ScreenBuffer[i]; + GifQprintf("\b\b\b\b%-4d", ScreenHeight - i); + for (j = 0; j < ScreenWidth; j++) { ++ /* Check if color is within color palete */ ++ if (GifRow[j] >= ColorMap->ColorCount) { ++ GIF_EXIT(GifErrorString( ++ D_GIF_ERR_IMAGE_DEFECT)); ++ } + ColorMapEntry = &ColorMap->Colors[GifRow[j]]; + Buffers[0][j] = ColorMapEntry->Red; + Buffers[1][j] = ColorMapEntry->Green; diff --git a/recipes/incoming-clib/CVE-2026-6732-test.patch b/recipes/incoming-clib/CVE-2026-6732-test.patch new file mode 100644 index 00000000..e88d2b8a --- /dev/null +++ b/recipes/incoming-clib/CVE-2026-6732-test.patch @@ -0,0 +1,84 @@ +--- a/testparser.c ++++ b/testparser.c +@@ -11,6 +11,7 @@ + #include + #include + #include ++#include + + #include + +@@ -777,6 +778,63 @@ + } + #endif /* WIN32 */ + ++#if defined(LIBXML_READER_ENABLED) && defined(LIBXML_SCHEMAS_ENABLED) ++/* ++ * Regression test for CVE-2026-6732: a type confusion in xmlParseReference ++ * crashed a schema-validating xmlTextReader whenever the document expanded ++ * an internal entity. Without the fix this triggers SIGSEGV on the first ++ * read; with the fix the entity expansion is read and the schema correctly ++ * reports the substituted content as invalid against xs:integer. ++ * ++ * Backport of upstream commit 7cea3fd1 adapted for the libxml2 2.13 ++ * testparser.c layout (which predates the testReaderSchemaResourceLoader ++ * helper that upstream uses as an anchor on master). ++ */ ++static int ++testReaderSchemaEntityExpansion(void) { ++ static const char xsd[] = ++ "\n" ++ "\n" ++ " \n" ++ "\n"; ++ static const char xml[] = ++ "]>\n" ++ "&n;"; ++ xmlSchemaParserCtxtPtr spc; ++ xmlSchemaPtr schema; ++ xmlTextReaderPtr reader; ++ int err = 0; ++ int ret; ++ ++ spc = xmlSchemaNewMemParserCtxt(xsd, (int) sizeof(xsd) - 1); ++ schema = xmlSchemaParse(spc); ++ xmlSchemaFreeParserCtxt(spc); ++ if (schema == NULL) { ++ fprintf(stderr, "xmlSchemaParse failed\n"); ++ return 1; ++ } ++ ++ reader = xmlReaderForMemory(xml, (int) sizeof(xml) - 1, "doc.xml", NULL, ++ XML_PARSE_NOENT | XML_PARSE_DTDLOAD); ++ xmlTextReaderSetSchema(reader, schema); ++ ++ while ((ret = xmlTextReaderRead(reader)) == 1) ++ ; ++ if (ret != 0) { ++ fprintf(stderr, "reader failed on entity-expanded document\n"); ++ err = 1; ++ } ++ if (xmlTextReaderIsValid(reader) != 0) { ++ fprintf(stderr, "schema missed invalid entity-expanded text\n"); ++ err = 1; ++ } ++ ++ xmlFreeTextReader(reader); ++ xmlSchemaFree(schema); ++ return err; ++} ++#endif ++ + int + main(void) { + int err = 0; +@@ -807,6 +865,9 @@ + #ifdef LIBXML_XINCLUDE_ENABLED + err |= testReaderXIncludeError(); + #endif ++#ifdef LIBXML_SCHEMAS_ENABLED ++ err |= testReaderSchemaEntityExpansion(); ++#endif + #endif + #ifdef LIBXML_WRITER_ENABLED + err |= testWriterClose(); diff --git a/recipes/incoming-clib/CVE-2026-6732.patch b/recipes/incoming-clib/CVE-2026-6732.patch new file mode 100644 index 00000000..66ce0a32 --- /dev/null +++ b/recipes/incoming-clib/CVE-2026-6732.patch @@ -0,0 +1,32 @@ +diff --git a/parser.c b/parser.c +index 6e7621a86b5b9256b7a068f09a7e1650e7264aa5..85bc39b1c2739574ab90fde34a24459e5ef9928f 100644 +--- a/parser.c ++++ b/parser.c +@@ -7261,10 +7261,10 @@ xmlParseReference(xmlParserCtxt *ctxt) { + if ((cur->type == XML_TEXT_NODE) || + (ctxt->options & XML_PARSE_NOCDATA)) { + if (ctxt->sax->characters != NULL) +- ctxt->sax->characters(ctxt, cur->content, len); ++ ctxt->sax->characters(ctxt->userData, cur->content, len); + } else { + if (ctxt->sax->cdataBlock != NULL) +- ctxt->sax->cdataBlock(ctxt, cur->content, len); ++ ctxt->sax->cdataBlock(ctxt->userData, cur->content, len); + } + + cur = cur->next; +@@ -7284,10 +7284,12 @@ xmlParseReference(xmlParserCtxt *ctxt) { + if ((cur->type == XML_TEXT_NODE) || + (ctxt->options & XML_PARSE_NOCDATA)) { + if (ctxt->sax->characters != NULL) +- ctxt->sax->characters(ctxt, cur->content, len); ++ ctxt->sax->characters(ctxt->userData, cur->content, ++ len); + } else { + if (ctxt->sax->cdataBlock != NULL) +- ctxt->sax->cdataBlock(ctxt, cur->content, len); ++ ctxt->sax->cdataBlock(ctxt->userData, cur->content, ++ len); + } + + break; diff --git a/recipes/incoming-clib/brotli.toml b/recipes/incoming-clib/brotli.toml new file mode 100644 index 00000000..1fe1b5d3 --- /dev/null +++ b/recipes/incoming-clib/brotli.toml @@ -0,0 +1,66 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "brotli" +version = "1.2.0" + +[source] +tarball = "https://github.com/google/brotli/archive/refs/tags/v1.2.0.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "f94542afd2ecd96cc41fd21a805a3da314281ae558c10650f3e6d9ca732b8425bba8fde312823f0a564c7de3993bdaab5b43378edab65ebb798cefb6fd702256" +sha256 = "816c96e8e8f193b40151dad7e8ff37b1221d019dbcb9c35cd3fadbfe6477dfec" +patches = ["optimize-mips.patch", "fix-lp64.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +export CFLAGS="$CFLAGS -flto=auto -O2" + + # static libs, see https://github.com/google/brotli/issues/795 + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=OFF + cmake --build build + + cmake -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_SHARED_LIBS=ON + cmake --build build + + if [ -z "$BOOTSTRAP" ]; then + gpep517 build-wheel \ + --wheel-dir .dist \ + --output-fd 3 3>&1 >&2 + fi +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" cmake --install build + + local file; for file in common dec enc; do + install -D -m 755 "$builddir"/build/libbrotli$file.a \ + "/out"/usr/lib/ + done + + local man; for man in docs/*.?; do + install -D -m644 $man "/out"/usr/share/man/man${man##*.}/${man##*/} + done + + if [ -z "$BOOTSTRAP" ]; then + python3 -m installer -d "/out" .dist/*.whl + fi +} +_abuild_phase +''' diff --git a/recipes/incoming-clib/bzip2-1.0.2-progress.patch b/recipes/incoming-clib/bzip2-1.0.2-progress.patch new file mode 100644 index 00000000..2f389cfa --- /dev/null +++ b/recipes/incoming-clib/bzip2-1.0.2-progress.patch @@ -0,0 +1,175 @@ +Ripped from Mandrake. + +http://bugs.gentoo.org/show_bug.cgi?id=82192 + +--- bzip2-1.0.2.org/bzip2.1 ++++ bzip2-1.0.2/bzip2.1 +@@ -235,6 +235,10 @@ + Suppress non-essential warning messages. Messages pertaining to + I/O errors and other critical events will not be suppressed. + .TP ++.B \-p --show-progress ++Show percentage of input-file done and while compressing show the percentage ++of the original file the new file is. ++.TP + .B \-v --verbose + Verbose mode -- show the compression ratio for each file processed. + Further \-v's increase the verbosity level, spewing out lots of +--- bzip2-1.0.2.org/bzip2.c ++++ bzip2-1.0.2/bzip2.c +@@ -145,6 +145,7 @@ + #include + #include + #include ++#include + #include + #include "bzlib.h" + +@@ -301,6 +302,7 @@ + Char progNameReally[FILE_NAME_LEN]; + FILE *outputHandleJustInCase; + Int32 workFactor; ++Char showProgress; + + static void panic ( Char* ) NORETURN; + static void ioError ( void ) NORETURN; +@@ -425,6 +427,12 @@ + UInt32 nbytes_in_lo32, nbytes_in_hi32; + UInt32 nbytes_out_lo32, nbytes_out_hi32; + Int32 bzerr, bzerr_dummy, ret; ++ double fileSize = 0; /* initialized to make the compiler stop crying */ ++ /* double because big files might otherwhise give ++ * overflows. not long long since not all compilers ++ * support that one ++ */ ++ time_t startTime, currentTime; + + SET_BINARY_MODE(stream); + SET_BINARY_MODE(zStream); +@@ -432,12 +440,21 @@ + if (ferror(stream)) goto errhandler_io; + if (ferror(zStream)) goto errhandler_io; + ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) { ++ (void)fseek(stream, 0, SEEK_END); ++ fileSize = (double)ftell(stream); ++ rewind(stream); ++ if (verbosity >= 1) ++ fprintf(stderr, "Input-file size: %ld\n", (long)fileSize); ++ } ++ + bzf = BZ2_bzWriteOpen ( &bzerr, zStream, + blockSize100k, verbosity, workFactor ); + if (bzerr != BZ_OK) goto errhandler; + + if (verbosity >= 2) fprintf ( stderr, "\n" ); + ++ time(&startTime); + while (True) { + + if (myfeof(stream)) break; +@@ -446,13 +463,32 @@ + if (nIbuf > 0) BZ2_bzWrite ( &bzerr, bzf, (void*)ibuf, nIbuf ); + if (bzerr != BZ_OK) goto errhandler; + ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) ++ { ++ time(¤tTime); ++ ++ if ((currentTime - startTime) > 1) { /* show progress every 2 seconds */ ++ double curInPos = (double)ftell(stream); ++ double curOutPos = (double)ftell(zStream); ++ ++ startTime = currentTime; ++ ++ fprintf(stderr, "%.2f%% done", (curInPos * 100.0) / fileSize); ++ if (srcMode == SM_F2F) ++ { ++ fprintf(stderr, ", new size: %.2f%%", (curOutPos * 100.0) / curInPos); ++ } ++ ++ fprintf(stderr, " \r"); ++ } ++ } + } + + BZ2_bzWriteClose64 ( &bzerr, bzf, 0, + &nbytes_in_lo32, &nbytes_in_hi32, + &nbytes_out_lo32, &nbytes_out_hi32 ); + if (bzerr != BZ_OK) goto errhandler; +- ++ + if (ferror(zStream)) goto errhandler_io; + ret = fflush ( zStream ); + if (ret == EOF) goto errhandler_io; +@@ -526,6 +562,8 @@ + UChar unused[BZ_MAX_UNUSED]; + Int32 nUnused; + UChar* unusedTmp; ++ double fileSize = 0; /* initialized to make the compiler stop crying */ ++ time_t startTime, currentTime; + + nUnused = 0; + streamNo = 0; +@@ -533,9 +571,19 @@ + SET_BINARY_MODE(stream); + SET_BINARY_MODE(zStream); + ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) { ++ long dummy = ftell(zStream); ++ (void)fseek(zStream, 0, SEEK_END); ++ fileSize = (double)ftell(zStream); ++ (void)fseek(zStream, dummy, SEEK_SET); ++ if (verbosity >= 1) ++ fprintf(stderr, "Input-file size: %ld\n", (long)fileSize); ++ } ++ + if (ferror(stream)) goto errhandler_io; + if (ferror(zStream)) goto errhandler_io; + ++ time(&startTime); + while (True) { + + bzf = BZ2_bzReadOpen ( +@@ -551,6 +599,17 @@ + if ((bzerr == BZ_OK || bzerr == BZ_STREAM_END) && nread > 0) + fwrite ( obuf, sizeof(UChar), nread, stream ); + if (ferror(stream)) goto errhandler_io; ++ ++ if ((srcMode == SM_F2F || srcMode == SM_F2O) && showProgress == True) { ++ time(¤tTime); ++ if ((currentTime - startTime) >= 2) ++ { ++ double curInPos = (double)ftell(zStream); ++ startTime = currentTime; ++ ++ fprintf(stderr, "%.2f%% done\r", (curInPos * 100.0) / fileSize); ++ } ++ } + } + if (bzerr != BZ_STREAM_END) goto errhandler; + +@@ -1872,6 +1931,7 @@ + deleteOutputOnInterrupt = False; + exitValue = 0; + i = j = 0; /* avoid bogus warning from egcs-1.1.X */ ++ showProgress = False; + + /*-- Set up signal handlers for mem access errors --*/ + signal (SIGSEGV, mySIGSEGVorSIGBUScatcher); +@@ -1949,6 +2009,7 @@ + case 'k': keepInputFiles = True; break; + case 's': smallMode = True; break; + case 'q': noisy = False; break; ++ case 'p': showProgress = True; break; + case '1': blockSize100k = 1; break; + case '2': blockSize100k = 2; break; + case '3': blockSize100k = 3; break; +@@ -1985,6 +2046,7 @@ + if (ISFLAG("--keep")) keepInputFiles = True; else + if (ISFLAG("--small")) smallMode = True; else + if (ISFLAG("--quiet")) noisy = False; else ++ if (ISFLAG("--show-progress")) showProgress = True; else + if (ISFLAG("--version")) license(); else + if (ISFLAG("--license")) license(); else + if (ISFLAG("--exponential")) workFactor = 1; else diff --git a/recipes/incoming-clib/bzip2-1.0.3-no-test.patch b/recipes/incoming-clib/bzip2-1.0.3-no-test.patch new file mode 100644 index 00000000..fc876d50 --- /dev/null +++ b/recipes/incoming-clib/bzip2-1.0.3-no-test.patch @@ -0,0 +1,9 @@ +--- ./Makefile ++++ ./Makefile +@@ -23,5 +23,5 @@ + bzlib.o + +-all: libbz2.a bzip2 bzip2recover test ++all: libbz2.a bzip2 bzip2recover + + bzip2: libbz2.a bzip2.o diff --git a/recipes/incoming-clib/bzip2-1.0.4-makefile-CFLAGS.patch b/recipes/incoming-clib/bzip2-1.0.4-makefile-CFLAGS.patch new file mode 100644 index 00000000..6acdc28a --- /dev/null +++ b/recipes/incoming-clib/bzip2-1.0.4-makefile-CFLAGS.patch @@ -0,0 +1,25 @@ +--- ./Makefile ++++ ./Makefile +@@ -18,10 +18,9 @@ + CC=gcc + AR=ar + RANLIB=ranlib +-LDFLAGS= + + BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-Wall -Winline -O2 -g $(BIGFILES) ++CFLAGS+=-Wall -Winline $(BIGFILES) $(CPPFLAGS) -O2 + + # Where you want it installed when you do 'make install' + PREFIX=/usr/local +--- ./Makefile-libbz2_so ++++ ./Makefile-libbz2_so +@@ -24,7 +24,7 @@ + SHELL=/bin/sh + CC=gcc + BIGFILES=-D_FILE_OFFSET_BITS=64 +-CFLAGS=-fpic -fPIC -Wall -Winline -O2 -g $(BIGFILES) ++CFLAGS+=-fpic -fPIC -Wall -Winline $(BIGFILES) $(CPPFLAGS) -O2 + + OBJS= blocksort.o \ + huffman.o \ diff --git a/recipes/incoming-clib/bzip2-1.0.4-man-links.patch b/recipes/incoming-clib/bzip2-1.0.4-man-links.patch new file mode 100644 index 00000000..2427d6a7 --- /dev/null +++ b/recipes/incoming-clib/bzip2-1.0.4-man-links.patch @@ -0,0 +1,12 @@ +http://bugs.gentoo.org/172986 + +--- bzip2-1.0.4/Makefile ++++ bzip2-1.0.4/Makefile +@@ -85,4 +85,7 @@ + cp -f bzip2.1 $(PREFIX)/share/man/man1 + chmod a+r $(PREFIX)/share/man/man1/bzip2.1 ++ ln -s bzip2.1 $(PREFIX)/share/man/man1/bunzip2.1 ++ ln -s bzip2.1 $(PREFIX)/share/man/man1/bzcat.1 ++ ln -s bzip2.1 $(PREFIX)/share/man/man1/bzip2recover.1 + cp -f bzlib.h $(PREFIX)/include + chmod a+r $(PREFIX)/include/bzlib.h diff --git a/recipes/incoming-clib/bzip2.toml b/recipes/incoming-clib/bzip2.toml new file mode 100644 index 00000000..36738fd2 --- /dev/null +++ b/recipes/incoming-clib/bzip2.toml @@ -0,0 +1,42 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "bzip2" +version = "1.0.8" + +[source] +tarball = "https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "083f5e675d73f3233c7930ebe20425a533feedeaaa9d8cc86831312a6581cefbe6ed0d08d2fa89be81082f2a5abdabca8b3c080bf97218a1bd59dc118a30b9f3" +sha256 = "ab5a03176ee106d3f0fa90e381da478ddae405918153cca248e682cd0c4a2269" +patches = ["bzip2-1.0.4-makefile-CFLAGS.patch", "bzip2-1.0.4-man-links.patch", "bzip2-1.0.2-progress.patch", "bzip2-1.0.3-no-test.patch", "saneso.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +make -f Makefile-libbz2_so all + make all +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make PREFIX="/out"/usr install + install -D libbz2.so.1.0.8 "/out"/usr/lib/libbz2.so.1.0.8 + ln -s libbz2.so.1.0.8 "/out"/usr/lib/libbz2.so + ln -s libbz2.so.1.0.8 "/out"/usr/lib/libbz2.so.${pkgver%%.*} + + mkdir -p "/out"/usr/lib/pkgconfig/ + sed "s|@VERSION@|1.0.8|" "$srcdir"/bzip2.pc.in \ + > "/out"/usr/lib/pkgconfig/bzip2.pc +} +_abuild_phase +''' diff --git a/recipes/incoming-clib/cairo.toml b/recipes/incoming-clib/cairo.toml new file mode 100644 index 00000000..615f50b9 --- /dev/null +++ b/recipes/incoming-clib/cairo.toml @@ -0,0 +1,51 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "cairo" +version = "1.18.4" + +[source] +tarball = "https://gitlab.freedesktop.org/cairo/cairo/-/archive/1.18.4/cairo-1.18.4.tar.bz2" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "27b98a17510b4d6f0187fcb280fea1b47ae31243f6999081a7ac94f8cf3c789c05fa6eb0fe65844808ef9ac11bcd29a4c3688c871a6950d888667840385acf9b" +sha256 = "6d9281e786fd289d382324d4588d59973a36911e1865b40e64f9ec39936ceba8" +patches = ["musl-stacksize.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +abuild-meson \ + -Db_lto=true \ + -Ddefault_library=both \ + -Dgtk_doc=true \ + -Dtests="$(want_check && echo enabled || echo disabled)" \ + -Dfontconfig=enabled \ + -Dfreetype=enabled \ + -Dglib=enabled \ + -Dpng=enabled \ + -Dtee=enabled \ + -Dxcb=enabled \ + -Dxlib=enabled \ + -Dzlib=enabled \ + . output + meson compile -C output +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C output +} +_abuild_phase +''' + +[deps] +build = ["expat", "fontconfig", "freetype", "glib", "gtk-doc", "libpng", "libxext", "libxrender", "pixman", "xcb-util", "zlib"] diff --git a/recipes/incoming-clib/correct-document-page-install.patch b/recipes/incoming-clib/correct-document-page-install.patch new file mode 100644 index 00000000..4e10d866 --- /dev/null +++ b/recipes/incoming-clib/correct-document-page-install.patch @@ -0,0 +1,58 @@ +From 61f375082c80ee479eb8ff03189aea691a6a06aa Mon Sep 17 00:00:00 2001 +From: "Eric S. Raymond" +Date: Wed, 21 Feb 2024 08:33:51 -0500 +Subject: [PATCH] Correct document page install. + +--- + Makefile | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/Makefile b/Makefile +index 87966a9..f4ecb24 100644 +--- a/Makefile ++++ b/Makefile +@@ -61,19 +61,23 @@ UTILS = $(INSTALLABLE) \ + gifsponge \ + gifwedge + + LDLIBS=libgif.a -lm + +-MANUAL_PAGES = \ ++MANUAL_PAGES_1 = \ + doc/gif2rgb.xml \ + doc/gifbuild.xml \ + doc/gifclrmp.xml \ + doc/giffix.xml \ +- doc/giflib.xml \ + doc/giftext.xml \ + doc/giftool.xml + ++MANUAL_PAGES_7 = \ ++ doc/giflib.xml ++ ++MANUAL_PAGES = $(MANUAL_PAGES_1) $(MANUAL_PAGES_7) ++ + SOEXTENSION = so + LIBGIFSO = libgif.$(SOEXTENSION) + LIBGIFSOMAJOR = libgif.$(SOEXTENSION).$(LIBMAJOR) + LIBGIFSOVER = libgif.$(SOEXTENSION).$(LIBVER) + LIBUTILSO = libutil.$(SOEXTENSION) +@@ -146,12 +150,13 @@ install-lib: + $(INSTALL) -m 644 libgif.a "$(DESTDIR)$(LIBDIR)/libgif.a" + $(INSTALL) -m 755 $(LIBGIFSO) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSOVER)" + ln -sf $(LIBGIFSOVER) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSOMAJOR)" + ln -sf $(LIBGIFSOMAJOR) "$(DESTDIR)$(LIBDIR)/$(LIBGIFSO)" + install-man: +- $(INSTALL) -d "$(DESTDIR)$(MANDIR)/man1" +- $(INSTALL) -m 644 $(MANUAL_PAGES) "$(DESTDIR)$(MANDIR)/man1" ++ $(INSTALL) -d "$(DESTDIR)$(MANDIR)/man1" "$(DESTDIR)$(MANDIR)/man7" ++ $(INSTALL) -m 644 $(MANUAL_PAGES_1:xml=1) "$(DESTDIR)$(MANDIR)/man1" ++ $(INSTALL) -m 644 $(MANUAL_PAGES_7:xml=7) "$(DESTDIR)$(MANDIR)/man7" + uninstall: uninstall-man uninstall-include uninstall-lib uninstall-bin + uninstall-bin: + cd "$(DESTDIR)$(BINDIR)" && rm -f $(INSTALLABLE) + uninstall-include: + rm -f "$(DESTDIR)$(INCDIR)/gif_lib.h" +-- +2.43.0 + diff --git a/recipes/incoming-clib/cwd.patch b/recipes/incoming-clib/cwd.patch new file mode 100644 index 00000000..cebc626b --- /dev/null +++ b/recipes/incoming-clib/cwd.patch @@ -0,0 +1,14 @@ +seems to fail on ppc64le +-- +diff --git a/gettext-tools/gnulib-tests/test-getcwd.sh b/gettext-tools/gnulib-tests/test-getcwd.sh +index 64a3c7c..ccabb8f 100755 +--- a/gettext-tools/gnulib-tests/test-getcwd.sh ++++ b/gettext-tools/gnulib-tests/test-getcwd.sh +@@ -1,5 +1,7 @@ + #!/bin/sh + ++exit 77 ++ + . "${srcdir=.}/init.sh"; path_prepend_ . + + ${CHECKER} test-getcwd diff --git a/recipes/incoming-clib/disable-broken-test.patch b/recipes/incoming-clib/disable-broken-test.patch new file mode 100644 index 00000000..a89e65d6 --- /dev/null +++ b/recipes/incoming-clib/disable-broken-test.patch @@ -0,0 +1,18 @@ +--- a/tests/meson.build ++++ b/tests/meson.build +@@ -47,7 +47,6 @@ endif + if cairo_dep.found() + test_cflags += '-DHAVE_CAIRO' + tests += [ +- [ 'test-font-data', [ 'test-font-data.c', 'test-common.c' ], [ libpangocairo_dep ] + common_deps ], + [ 'test-bidi', [ 'test-bidi.c' ], [ libpangocairo_dep ] ], + [ 'testcontext', [ 'testcontext.c' ], [ libpangocairo_dep ] ], + [ 'testiter', [ 'testiter.c' ], [ libpangocairo_dep ] ], +@@ -70,7 +69,6 @@ if cairo_dep.found() + + if host_system != 'darwin' + tests += [ +- [ 'test-layout', [ 'test-layout.c', 'test-common.c' ], [ libpangocairo_dep, libpangoft2_dep ] + common_deps ], + [ 'test-layout2', [ 'test-layout2.c'], [ libpangocairo_dep, libpangoft2_dep ] + common_deps ], + [ 'test-fonts', [ 'test-fonts.c', 'test-common.c' ], [ libpangocairo_dep, libpangoft2_dep ] + common_deps ], + [ 'test-no-fonts', [ 'test-no-fonts.c' ], [ libpangocairo_dep, libpangoft2_dep ] ], diff --git a/recipes/incoming-clib/dont-build-html-pages-images.patch b/recipes/incoming-clib/dont-build-html-pages-images.patch new file mode 100644 index 00000000..7d4fe356 --- /dev/null +++ b/recipes/incoming-clib/dont-build-html-pages-images.patch @@ -0,0 +1,18 @@ +Description: Don't build the site HTML pages images. + It saves us to have ImageMagick as a b-depend. +Author: David Suárez +Origin: vendor +Last-Update: 2024-03-24 +Forwarded: not-needed + +--- a/doc/Makefile ++++ b/doc/Makefile +@@ -46,7 +46,7 @@ + convert $^ -resize 50x50 $@ + + # Philosophical choice: the website gets the internal manual pages +-allhtml: $(XMLALL:.xml=.html) giflib-logo.gif ++allhtml: $(XMLALL:.xml=.html) + + manpages: $(XMLMAN1:.xml=.1) $(XMLMAN7:.xml=.7) $(XMLINTERNAL:.xml=.1) + diff --git a/recipes/incoming-clib/expat.toml b/recipes/incoming-clib/expat.toml new file mode 100644 index 00000000..3304a8d4 --- /dev/null +++ b/recipes/incoming-clib/expat.toml @@ -0,0 +1,39 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "expat" +version = "2.8.2" + +[source] +tarball = "https://github.com/libexpat/libexpat/releases/download/R_${pkgver//./_}/expat-2.8.2.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "68ee856b3eeefeb6bb800004951bbbe89a9a144354ae12bc9d670888fd89e8513243e0053c61674430c78e2beeeb85a3c86ac7644576a5bb9867fbce3643ff8d" +sha256 = "FIXME-sha256" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --mandir=/usr/share/man \ + --enable-static + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out/" install +} +_abuild_phase +''' diff --git a/recipes/incoming-clib/fix-lp64.patch b/recipes/incoming-clib/fix-lp64.patch new file mode 100644 index 00000000..55daa542 --- /dev/null +++ b/recipes/incoming-clib/fix-lp64.patch @@ -0,0 +1,43 @@ +Patch-Source: https://github.com/google/brotli/commit/e230f474b87134e8c6c85b630084c612057f253e +From e230f474b87134e8c6c85b630084c612057f253e Mon Sep 17 00:00:00 2001 +From: Evgenii Kliuchnikov +Date: Mon, 3 Nov 2025 07:20:19 -0800 +Subject: [PATCH] disable BROTLI_MODEL macro for some targets + +PiperOrigin-RevId: 827486322 +--- + c/common/platform.h | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/c/common/platform.h b/c/common/platform.h +index b59f9b809..e1254d5ca 100644 +--- a/c/common/platform.h ++++ b/c/common/platform.h +@@ -213,6 +213,10 @@ To apply compiler hint, enclose the branching condition into macros, like this: + #define BROTLI_TARGET_MIPS64 + #endif + ++#if defined(__ia64__) || defined(_M_IA64) ++#define BROTLI_TARGET_IA64 ++#endif ++ + #if defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8_64) || \ + defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64) || \ + defined(BROTLI_TARGET_LOONGARCH64) || defined(BROTLI_TARGET_MIPS64) +@@ -665,13 +669,14 @@ BROTLI_UNUSED_FUNCTION void BrotliSuppressUnusedFunctions(void) { + #undef BROTLI_TEST + #endif + +-#if BROTLI_GNUC_HAS_ATTRIBUTE(model, 3, 0, 3) ++#if !defined(BROTLI_MODEL) && BROTLI_GNUC_HAS_ATTRIBUTE(model, 3, 0, 3) && \ ++ !defined(BROTLI_TARGET_IA64) && !defined(BROTLI_TARGET_LOONGARCH64) + #define BROTLI_MODEL(M) __attribute__((model(M))) + #else + #define BROTLI_MODEL(M) /* M */ + #endif + +-#if BROTLI_GNUC_HAS_ATTRIBUTE(cold, 4, 3, 0) ++#if !defined(BROTLI_COLD) && BROTLI_GNUC_HAS_ATTRIBUTE(cold, 4, 3, 0) + #define BROTLI_COLD __attribute__((cold)) + #else + #define BROTLI_COLD /* cold */ diff --git a/recipes/incoming-clib/fix-tests-fortify.patch b/recipes/incoming-clib/fix-tests-fortify.patch new file mode 100644 index 00000000..793a0a36 --- /dev/null +++ b/recipes/incoming-clib/fix-tests-fortify.patch @@ -0,0 +1,13 @@ +diff --git a/testsuite/libffi.bhaible/bhaible.exp b/testsuite/libffi.bhaible/bhaible.exp +index 44aebc5..245f18c 100644 +--- a/testsuite/libffi.bhaible/bhaible.exp ++++ b/testsuite/libffi.bhaible/bhaible.exp +@@ -24,7 +24,7 @@ global compiler_vendor + # was done in a pretty lazy fashion, and requires the use of compiler + # flags to disable warnings for now. + if { [string match $compiler_vendor "gnu"] } { +- set warning_options "-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized"; ++ set warning_options "-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized -Wno-stringop-overflow"; + } + if { [string match $compiler_vendor "microsoft"] } { + # -wd4996 suggest use of vsprintf_s instead of vsprintf diff --git a/recipes/incoming-clib/flaky-tests.patch b/recipes/incoming-clib/flaky-tests.patch new file mode 100644 index 00000000..bc6f0aad --- /dev/null +++ b/recipes/incoming-clib/flaky-tests.patch @@ -0,0 +1,83 @@ +https://gitlab.gnome.org/GNOME/glib/-/issues/3318 +https://gitlab.gnome.org/GNOME/glib/-/issues/3320 + +diff --git a/glib/tests/meson.build b/glib/tests/meson.build +index 85f40d2e1..059a786d3 100644 +--- a/glib/tests/meson.build ++++ b/glib/tests/meson.build +@@ -54,6 +54,7 @@ glib_tests = { + 'gwakeup' : { + 'source' : ['gwakeuptest.c', '../gwakeup.c'], + 'install' : false, ++ 'can_fail': host_machine.cpu_family() == 's390x', + }, + 'hash' : {}, + 'hmac' : {}, +@@ -226,6 +227,7 @@ if glib_conf.has('HAVE_EVENTFD') + 'source' : ['gwakeuptest.c', '../gwakeup.c'], + 'c_args' : ['-DTEST_EVENTFD_FALLBACK'], + 'install' : false, ++ 'can_fail': host_machine.cpu_family() == 's390x', + }, + } + endif +diff --git a/gobject/tests/meson.build b/gobject/tests/meson.build +index a163e5f91..12c449519 100644 +--- a/gobject/tests/meson.build ++++ b/gobject/tests/meson.build +@@ -78,7 +78,7 @@ gobject_tests = { + 'references' : {}, + 'basic-signals' : {}, + 'singleton' : {}, +- 'threadtests' : {}, ++ 'threadtests' : { 'can_fail': 'aarch64' in host_machine.cpu_family() or 'riscv' in host_machine.cpu_family() }, + 'dynamictests' : {}, + 'binding' : {}, + 'bindinggroup' : {}, +From ad2925ef361a7c889ff696a1ba9e677accaecd08 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Thu, 4 Apr 2024 10:15:07 +0200 +Subject: [PATCH] tests: increase timeout on slow architectures + +Prevent tests to timeout on architectures that are slow. + +Fixes https://gitlab.gnome.org/GNOME/glib/-/issues/3319 + +Signed-off-by: Natanael Copa +--- + meson.build | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/meson.build b/meson.build +index f0c5e070b..4c6c87766 100644 +--- a/meson.build ++++ b/meson.build +@@ -182,6 +182,12 @@ test_protocol = 'tap' + test_timeout = 30 + test_timeout_slow = 90 + ++# give more time on slow architectures ++if 'riscv' in host_machine.cpu_family() ++ test_timeout = test_timeout * 4 ++ test_timeout_slow = test_timeout_slow * 4 ++endif ++ + add_test_setup('default', + is_default: true, + exclude_suites: ['flaky', 'failing'], +-- +2.44.0 + +diff --git a/glib/tests/meson.build b/glib/tests/meson.build +index 85f40d2e1..f2ee59678 100644 +--- a/glib/tests/meson.build ++++ b/glib/tests/meson.build +@@ -113,6 +113,8 @@ glib_tests = { + 'regex' : { + 'dependencies' : [pcre2], + 'c_args' : use_pcre2_static_flag ? ['-DPCRE2_STATIC'] : [], ++ # https://gitlab.gnome.org/GNOME/glib/-/issues/3321 ++ 'can_fail': host_machine.cpu_family() == 'riscv64', + }, + 'relation' : {}, + 'rwlock' : {}, diff --git a/recipes/incoming-clib/fontconfig.toml b/recipes/incoming-clib/fontconfig.toml new file mode 100644 index 00000000..f87c84da --- /dev/null +++ b/recipes/incoming-clib/fontconfig.toml @@ -0,0 +1,49 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "fontconfig" +version = "2.18.1" + +[source] +tarball = "https://gitlab.freedesktop.org/api/v4/projects/890/packages/generic/fontconfig/2.18.1/fontconfig-2.18.1.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "5d637a030625fa5b55399a2711b4dd48949429caae4b80503655bc7bd12b9a58cc278b520660845c9e93dcac4631ad5c36bf97793ac1af1b8f3131e7bd22077c" +sha256 = "2300f3dbfa7253b3a44f4feecdbc8dfa45dde5dc2cfb71fceaf31f394cb41031" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --enable-static \ + --enable-docs \ + --disable-nls + make + + # test tries to download google fonts from internet + # https://gitlab.freedesktop.org/fontconfig/fontconfig/-/blob/2.15.0/test/run-test.sh#L435 + chmod -x test/test-crbug1004254 +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out" install +} +_abuild_phase +''' + +[deps] +build = ["freetype", "expat", "python3", "gperf", "util-linux", "docbook2x"] diff --git a/recipes/incoming-clib/freetype.toml b/recipes/incoming-clib/freetype.toml new file mode 100644 index 00000000..d19d0226 --- /dev/null +++ b/recipes/incoming-clib/freetype.toml @@ -0,0 +1,43 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "freetype" +version = "2.14.3" + +[source] +tarball = "https://download.savannah.gnu.org/releases/freetype/freetype-2.14.3.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "43de86ea70b4b47f6efaae67f3440f65a24ffac29dc6d11203a9764e4f1a749ce1ba7645acd23525220b3ba12ddad8687b962b9f1254e2c0a86070854e85d5a0" +sha256 = "36bc4f1cc413335368ee656c42afca65c5a3987e8768cc28cf11ba775e785a5f" +patches = ["pcf-family-names.patch", "subpixel.patch", "table-validation-modules.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +abuild-meson \ + -Dfreetype2:default_library=both \ + -Dlibrsvg=disabled \ + "$srcdir"/ft2demos-2.14.3 output + meson compile -C output +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C output + install -Dm644 builds/unix/freetype2.m4 \ + -t "/out"/usr/share/aclocal +} +_abuild_phase +''' + +[deps] +build = ["brotli", "bzip2", "libpng", "libx11", "zlib"] diff --git a/recipes/incoming-clib/fribidi.toml b/recipes/incoming-clib/fribidi.toml new file mode 100644 index 00000000..fc932e18 --- /dev/null +++ b/recipes/incoming-clib/fribidi.toml @@ -0,0 +1,40 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "fribidi" +version = "1.0.16" + +[source] +tarball = "https://github.com/fribidi/fribidi/releases/download/v1.0.16/fribidi-1.0.16.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "e3a56f36155f6813e3609473639fc533de742309f561c463012dc90b412a1ac7694b765d92669b2cbfaee973ca0e92fa5e926e68a1a078921f26ef17d82ab651" +sha256 = "1b1cde5b235d40479e91be2f0e88a309e3214c8ab470ec8a2744d82a5a9ea05c" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +abuild-muon \ + -Ddefault_library=both \ + -Dtests="$(want_check && echo true || echo false)" \ + output . + ninja -C output +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" muon -C output install +} +_abuild_phase +''' + +[deps] +build = ["muon", "python3"] diff --git a/recipes/incoming-clib/gdk-pixbuf.toml b/recipes/incoming-clib/gdk-pixbuf.toml new file mode 100644 index 00000000..fffeb446 --- /dev/null +++ b/recipes/incoming-clib/gdk-pixbuf.toml @@ -0,0 +1,50 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "gdk-pixbuf" +version = "2.44.6" + +[source] +tarball = "https://download.gnome.org/sources/gdk-pixbuf/${pkgver%.*}/gdk-pixbuf-2.44.6.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "45ad815dda5d7b86fafe4a14300a676130f1c404299989616e41fa84e872516304bc6c3ebee9e1153bce01245333b1f8dfedee4bcde27a323e27d7e70fcb597f" +sha256 = "FIXME-sha256" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +abuild-meson \ + -Db_lto=true \ + -Dinstalled_tests=false \ + -Dintrospection=enabled \ + -Dglycin=enabled \ + -Dgif=disabled \ + -Djpeg=disabled \ + -Dothers=disabled \ + -Dpng=disabled \ + -Dtiff=disabled \ + -Dtests="$(want_check && echo true || echo false)" \ + output . + meson compile -C output +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C output +} +_abuild_phase +''' + +# depends de runtime de Alpine (NO build-deps): shared-mime-info + +[deps] +build = ["glib", "gobject-introspection", "libglycin", "py3-docutils"] diff --git a/recipes/incoming-clib/gettext.toml b/recipes/incoming-clib/gettext.toml new file mode 100644 index 00000000..5cde30b0 --- /dev/null +++ b/recipes/incoming-clib/gettext.toml @@ -0,0 +1,52 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "gettext" +version = "1.0" + +[source] +tarball = "https://ftp.gnu.org/gnu/gettext/gettext-1.0.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "fa657faf5685dae7121a9b0293d3308a3910a72b90943a7a493b88cf88e95f29c5758e1573320169fe9beac6f101ef76f4165a279a7f3294155d7a773e2fa09f" +sha256 = "71132a3fb71e68245b8f2ac4e9e97137d3e5c02f415636eb508ae607bc01add7" +patches = ["cwd.patch", "skip-tests-musl.patch", "skip-meaningless-pthread-rwlock-test.patch", "skip-unicode-16-tests.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +# force using system posix complaint printf + # the test is broken and fails with ash + gt_cv_func_printf_posix=yes \ + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --enable-threads=posix \ + --disable-java \ + --enable-static + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +depends="gettext-envsubst=1.0-r$pkgrel" + make -j1 DESTDIR="/out" install + + # nothing in here is particularly useful, mostly just hello world examples in + # every single programming language for using gettext + rm -r "/out"/usr/share/doc +} +_abuild_phase +''' + +[deps] +build = ["perl", "ncurses", "libxml2-dev~2.13", "libunistring", "linux-headers"] diff --git a/recipes/incoming-clib/giflib.toml b/recipes/incoming-clib/giflib.toml new file mode 100644 index 00000000..94796942 --- /dev/null +++ b/recipes/incoming-clib/giflib.toml @@ -0,0 +1,37 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "giflib" +version = "5.2.2" + +[source] +tarball = "https://downloads.sourceforge.net/sourceforge/giflib/giflib-5.2.2.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "0865ab2b1904fa14640c655fdb14bb54244ad18a66e358565c00287875d00912343f9be8bfac7658cc0146200d626f7ec9160d7a339f20ba3be6b9941d73975f" +sha256 = "be7ffbd057cadebe2aa144542fd90c6838c6a083b5e8a9048b8ee3b66b29d5fb" +patches = ["CVE-2021-40633.patch", "CVE-2025-31344.patch", "correct-document-page-install.patch", "dont-build-html-pages-images.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +make CFLAGS="$CFLAGS -fPIC" +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out" PREFIX=/usr install +} +_abuild_phase +''' + +[deps] +build = ["xmlto"] diff --git a/recipes/incoming-clib/glib.toml b/recipes/incoming-clib/glib.toml new file mode 100644 index 00000000..5194d52a --- /dev/null +++ b/recipes/incoming-clib/glib.toml @@ -0,0 +1,83 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "glib" +version = "2.88.1" + +[source] +tarball = "https://download.gnome.org/sources/glib/${pkgver%.*}/glib-2.88.1.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "74e6d6086081e5dfb5b7fd3b74f59171033be0c340ff2dd798fea9cb42e5f680e13b2ac3dde8dd423bceb9c6556103005f9542aeda166e9a3b89da8bacecca23" +sha256 = "FIXME-sha256" +patches = ["tests-machine-id.patch", "flaky-tests.patch", "projectsdir.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +export CFLAGS="$CFLAGS -ffat-lto-objects -O2" + export CXXFLAGS="$CXXFLAGS -O2" + export CPPFLAGS="$CPPFLAGS -O2" + local _prefix="$PWD/boostrap-glib" + + msg "build bootstrap glib" + meson setup \ + --default-library=shared \ + --prefix="$_prefix" \ + -Dman-pages=disabled \ + -Dlibmount=disabled \ + -Dtests=false \ + -Dintrospection=disabled \ + -Dnls=disabled \ + . output + meson compile -C output + meson install --no-rebuild -C output + + msg "build bootstrap gobject-introspection" + meson setup \ + --pkg-config-path="$_prefix"/lib/pkgconfig \ + --prefix="$_prefix" \ + -Dbuild_introspection_data=false \ + -Dcairo=disabled \ + -Ddoctool=disabled \ + "$srcdir"/gobject-introspection-$_gi_version \ + gioutput + meson compile -C gioutput + meson install --no-rebuild -C gioutput + + msg "re-build glib with introspection" + PATH="$_prefix/bin:$PATH" LD_LIBRARY_PATH="$_prefix/lib" \ + abuild-meson \ + --reconfigure \ + --pkg-config-path="$_prefix"/lib/pkgconfig \ + --default-library=both \ + -Dman-pages=enabled \ + -Dlibmount=enabled \ + -Dtests="$(want_check && echo true || echo false)" \ + -Dintrospection=enabled \ + -Dnls=enabled \ + -Dglib_debug=disabled \ + . output + PATH="$_prefix/bin:$PATH" LD_LIBRARY_PATH="$_prefix/lib" \ + meson compile -C output +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C output +} +_abuild_phase +''' + +# depends de runtime de Alpine (NO build-deps): gettext-static + +[deps] +build = ["gettext-static_dev", "bash", "bison", "flex", "libffi", "pcre2", "py3-setuptools", "python3", "util-linux", "zlib", "py3-docutils"] diff --git a/recipes/incoming-clib/harfbuzz.toml b/recipes/incoming-clib/harfbuzz.toml new file mode 100644 index 00000000..fb7ccde3 --- /dev/null +++ b/recipes/incoming-clib/harfbuzz.toml @@ -0,0 +1,51 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "harfbuzz" +version = "14.2.1" + +[source] +tarball = "https://github.com/harfbuzz/harfbuzz/releases/download/14.2.1/harfbuzz-14.2.1.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "481dca68900e57895d3671baf0595c2d3a26f4f08d0db5662e83089f0d0ff6dc0c28c64c2811eb0f812b0525ed428e90db44f091a88bef47ace2f97d8285b013" +sha256 = "a54a5d8e9380a41fbb762ce367bcbf7704792dfca0d93f1bbca86c5a57902e0e" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +CFLAGS="$CFLAGS -O2 -flto=auto -ffat-lto-objects" \ + CXXFLAGS="$CXXFLAGS -O2 -flto=auto -ffat-lto-objects" \ + CPPFLAGS="$CPPFLAGS -O2 -flto=auto -ffat-lto-objects" \ + abuild-meson \ + --default-library=both \ + -Dglib=enabled \ + -Dgobject=enabled \ + -Dgraphite=enabled \ + -Dicu=enabled \ + -Dfreetype=enabled \ + -Dtests="$(want_check && echo enabled || echo disabled)" \ + -Dcairo=enabled \ + -Ddocs=enabled \ + -Dintrospection=enabled \ + . output + meson compile -C output +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C output +} +_abuild_phase +''' + +[deps] +build = ["cairo", "freetype", "glib", "gobject-introspection", "graphite2", "gtk-doc", "icu"] diff --git a/recipes/incoming-clib/libffi.toml b/recipes/incoming-clib/libffi.toml new file mode 100644 index 00000000..d63b0677 --- /dev/null +++ b/recipes/incoming-clib/libffi.toml @@ -0,0 +1,41 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "libffi" +version = "3.5.2" + +[source] +tarball = "https://github.com/libffi/libffi/releases/download/v3.5.2/libffi-3.5.2.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "76974a84e3aee6bbd646a6da2e641825ae0b791ca6efdc479b2d4cbcd3ad607df59cffcf5031ad5bd30822961a8c6de164ac8ae379d1804acd388b1975cdbf4d" +sha256 = "f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc" +patches = ["fix-tests-fortify.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --enable-pax_emutramp \ + --enable-portable-binary \ + --disable-exec-static-tramp + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out" install +} +_abuild_phase +''' diff --git a/recipes/incoming-clib/libjpeg-turbo.toml b/recipes/incoming-clib/libjpeg-turbo.toml new file mode 100644 index 00000000..4bb2c499 --- /dev/null +++ b/recipes/incoming-clib/libjpeg-turbo.toml @@ -0,0 +1,72 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "libjpeg-turbo" +version = "3.1.3" + +[source] +tarball = "https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/3.1.3/libjpeg-turbo-3.1.3.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "d3410a072044b4962c1aa08eb144b4e4b959f4f65203dfac4013b14e2fd987b9a6ee9b59f5570980fa691ddf5e9f9d3aa328a63afb487a46c2e76de722f3d693" +sha256 = "075920b826834ac4ddf97661cc73491047855859affd671d52079c6867c1c6c0" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +local _floattest= + if [ "$CBUILD" != "$CHOST" ]; then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + case "$CARCH" in + ppc64le) export JSIMD_FORCENONE=1;; + s390x|riscv64) _floattest="-DFLOATTEST=fp-contract";; + esac + + CFLAGS="$CFLAGS -O2 -DNDEBUG -flto=auto" \ + CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG -flto=auto" \ + cmake -B build-shared -G Ninja \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DBUILD_SHARED_LIBS=True \ + -DENABLE_STATIC=False \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_SKIP_INSTALL_RPATH=ON \ + -DWITH_JPEG8=1 \ + $_floattest \ + $CMAKE_CROSSOPTS + cmake --build build-shared + + cmake -B build-static -G Ninja \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_LIBDIR=/usr/lib \ + -DBUILD_SHARED_LIBS=False \ + -DENABLE_STATIC=True \ + -DCMAKE_BUILD_TYPE=None \ + -DCMAKE_SKIP_INSTALL_RPATH=ON \ + -DWITH_JPEG8=1 \ + $_floattest \ + $CMAKE_CROSSOPTS + cmake --build build-static +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" cmake --install build-static + DESTDIR="/out" cmake --install build-shared + install -d "/out"/usr/share/licenses/libjpeg-turbo + ln -s ../../doc/libjpeg-turbo/LICENSE.md "/out/usr/share/licenses/libjpeg-turbo" +} +_abuild_phase +''' + +[deps] +build = ["nasm", "samurai"] diff --git a/recipes/incoming-clib/libpng-fix-arm-neon.patch b/recipes/incoming-clib/libpng-fix-arm-neon.patch new file mode 100644 index 00000000..099083fd --- /dev/null +++ b/recipes/incoming-clib/libpng-fix-arm-neon.patch @@ -0,0 +1,39 @@ +diff --git a/configure.ac b/configure.ac +index 7b6d5b9..d02e16d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -357,17 +357,21 @@ AC_ARG_ENABLE([arm-neon], + [case "$enableval" in + no|off) + # disable the default enabling on __ARM_NEON__ systems: ++ AC_DEFINE([PNG_ARM_NEON], [], [ARM NEON support]) + AC_DEFINE([PNG_ARM_NEON_OPT], [0], + [Disable ARM Neon optimizations]) + # Prevent inclusion of the assembler files below: + enable_arm_neon=no ;; + check) ++ AC_DEFINE([PNG_ARM_NEON], [], [ARM NEON support]) + AC_DEFINE([PNG_ARM_NEON_CHECK_SUPPORTED], [], + [Check for ARM Neon support at run-time]);; + api) ++ AC_DEFINE([PNG_ARM_NEON], [], [ARM NEON support]) + AC_DEFINE([PNG_ARM_NEON_API_SUPPORTED], [], + [Turn on ARM Neon optimizations at run-time]);; + yes|on) ++ AC_DEFINE([PNG_ARM_NEON], [], [ARM NEON support]) + AC_DEFINE([PNG_ARM_NEON_OPT], [2], + [Enable ARM Neon optimizations]) + AC_MSG_WARN([--enable-arm-neon: please specify 'check' or 'api', if] +diff --git a/pngpriv.h b/pngpriv.h +index 2e426cf..fb521cf 100644 +--- a/pngpriv.h ++++ b/pngpriv.h +@@ -127,7 +127,7 @@ + * associated assembler code, pass --enable-arm-neon=no to configure + * or put -DPNG_ARM_NEON_OPT=0 in CPPFLAGS. + */ +-# if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \ ++# if defined(PNG_ARM_NEON) && (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \ + defined(PNG_ALIGNED_MEMORY_SUPPORTED) + # define PNG_ARM_NEON_OPT 2 + # else diff --git a/recipes/incoming-clib/libpng.toml b/recipes/incoming-clib/libpng.toml new file mode 100644 index 00000000..4ab9afb4 --- /dev/null +++ b/recipes/incoming-clib/libpng.toml @@ -0,0 +1,42 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "libpng" +version = "1.6.58" + +[source] +tarball = "https://downloads.sourceforge.net/libpng/libpng-1.6.58.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "177d81fd1ba1a46ff64da7f24260814876bd0a27ee5bed6dc9dbdd1fe28f3a67cb6f11c74a68f8380a9a7ab0d95c0022b847b1a3e4d939f2a562274627205789" +sha256 = "8c9b05b675ca7301a458df2c2e46f26e1d41ff36b8863f8c33530bc58c2e6225" +patches = ["libpng-fix-arm-neon.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --localstatedir=/var + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out" install + rm -f "/out"/usr/lib/*.la +} +_abuild_phase +''' diff --git a/recipes/incoming-clib/libwebp.toml b/recipes/incoming-clib/libwebp.toml new file mode 100644 index 00000000..79dbaef3 --- /dev/null +++ b/recipes/incoming-clib/libwebp.toml @@ -0,0 +1,47 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "libwebp" +version = "1.6.0" + +[source] +tarball = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.6.0.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "5c159d9760efcb92749092536daada22c0a73c20926c76097a5f0448ddbf874cf761324ca97925ca5f578b30477564b2b072b47667e504673797128b31cafcbf" +sha256 = "e4ab7009bf0629fd11982d4c2aa83964cf244cffba7347ecd39019a9e38c4564" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +CFLAGS="$CFLAGS -O2 -flto=auto -ffat-lto-objects" \ + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --enable-libwebpmux \ + --enable-libwebpdemux \ + --enable-libwebpdecoder \ + --disable-tiff # dependency-loop + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out" install + mkdir -p "/out"/usr/share/doc/libwebp + install -Dm644 PATENTS README.md "/out"/usr/share/doc/libwebp +} +_abuild_phase +''' + +[deps] +build = ["giflib", "libjpeg-turbo", "libpng"] diff --git a/recipes/incoming-clib/libxml2.toml b/recipes/incoming-clib/libxml2.toml new file mode 100644 index 00000000..601bede5 --- /dev/null +++ b/recipes/incoming-clib/libxml2.toml @@ -0,0 +1,48 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "libxml2" +version = "2.13.9" + +[source] +tarball = "https://download.gnome.org/sources/libxml2/${pkgver%.*}/libxml2-2.13.9.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "62d4813860124c969f204aaf33b497105dbc32a6c5655f5a86168743660e10987d687d7e5e7ee49fdfdeb8f6ad9fa4503f81fcce2e4d459094895f02436d1b13" +sha256 = "FIXME-sha256" +patches = ["CVE-2026-6732.patch", "CVE-2026-6732-test.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --enable-static \ + --with-legacy \ + --with-lzma \ + --with-zlib \ + $_py_configure + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make -j1 DESTDIR="/out" install +} +_abuild_phase +''' + +# depends de runtime de Alpine (NO build-deps): python3 diff --git a/recipes/incoming-clib/lz4.toml b/recipes/incoming-clib/lz4.toml new file mode 100644 index 00000000..b4ea9ca1 --- /dev/null +++ b/recipes/incoming-clib/lz4.toml @@ -0,0 +1,42 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "lz4" +version = "1.10.0" + +[source] +tarball = "https://github.com/lz4/lz4/archive/v1.10.0.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "8c4ceb217e6dc8e7e0beba99adc736aca8963867bcf9f970d621978ba11ce92855912f8b66138037a1d2ae171e8e17beb7be99281fea840106aa60373c455b28" +sha256 = "537512904744b35e232912055ccf8ec66d768639ff3abe5788d90d792ec5f48b" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +export CFLAGS="$CFLAGS -O2 -flto=auto" + export CPPFLAGS="$CPPFLAGS -O2 -flto=auto" + make PREFIX="/usr" +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make PREFIX="/usr" DESTDIR="/out" install + + ( + cd tests/ + rm -f ./*.c COPYING Makefile .gitignore + ) + mkdir -p "/out"/usr/share/lz4 + cp -rf tests "/out"/usr/share/lz4/ +} +_abuild_phase +''' diff --git a/recipes/incoming-clib/musl-stacksize.patch b/recipes/incoming-clib/musl-stacksize.patch new file mode 100644 index 00000000..d10469e1 --- /dev/null +++ b/recipes/incoming-clib/musl-stacksize.patch @@ -0,0 +1,23 @@ +Reduce the footprint of stack frame usage by turning +some large(r) structures as `static __thread` instead. + +--- a/src/cairo-rectangular-scan-converter.c 2015-10-27 22:04:21.000000000 +0100 ++++ b/src/cairo-rectangular-scan-converter.c 2016-05-07 04:25:26.640851782 +0200 +@@ -489,7 +489,7 @@ + cairo_span_renderer_t *renderer, + rectangle_t **rectangles) + { +- sweep_line_t sweep_line; ++ static __thread sweep_line_t sweep_line; + rectangle_t *start, *stop; + cairo_status_t status; + +@@ -656,7 +656,7 @@ + cairo_span_renderer_t *renderer) + { + cairo_rectangular_scan_converter_t *self = converter; +- rectangle_t *rectangles_stack[CAIRO_STACK_ARRAY_LENGTH (rectangle_t *)]; ++ static __thread rectangle_t *rectangles_stack[CAIRO_STACK_ARRAY_LENGTH (rectangle_t *)]; + rectangle_t **rectangles; + struct _cairo_rectangular_scan_converter_chunk *chunk; + cairo_status_t status; diff --git a/recipes/incoming-clib/optimize-mips.patch b/recipes/incoming-clib/optimize-mips.patch new file mode 100644 index 00000000..e8a5bfb3 --- /dev/null +++ b/recipes/incoming-clib/optimize-mips.patch @@ -0,0 +1,50 @@ +--- a/c/common/platform.h ++++ b/c/common/platform.h +@@ -318,19 +326,34 @@ + #else /* not BROTLI_USE_PACKED_FOR_UNALIGNED */ + + static BROTLI_INLINE uint16_t BrotliUnalignedRead16(const void* p) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ const struct { uint16_t x; } __attribute__((__packed__)) *t = p; ++ return t->x; ++#else + uint16_t t; + memcpy(&t, p, sizeof t); + return t; ++#endif + } + static BROTLI_INLINE uint32_t BrotliUnalignedRead32(const void* p) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ const struct { uint32_t x; } __attribute__((__packed__)) *t = p; ++ return t->x; ++#else + uint32_t t; + memcpy(&t, p, sizeof t); + return t; ++#endif + } + static BROTLI_INLINE uint64_t BrotliUnalignedRead64(const void* p) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ const struct { uint64_t x; } __attribute__((__packed__)) *t = p; ++ return t->x; ++#else + uint64_t t; + memcpy(&t, p, sizeof t); + return t; ++#endif + } + static BROTLI_INLINE size_t BrotliUnalignedReadSizeT(const void* p) { + size_t t; +@@ -338,7 +361,12 @@ + return t; + } + static BROTLI_INLINE void BrotliUnalignedWrite64(void* p, uint64_t v) { ++#if defined(__mips__) && (!defined(__mips_isa_rev) || __mips_isa_rev < 6) ++ struct { uint64_t x; } __attribute__((__packed__)) *t = p; ++ t->x = v; ++#else + memcpy(p, &v, sizeof v); ++#endif + } + + #endif /* BROTLI_USE_PACKED_FOR_UNALIGNED */ diff --git a/recipes/incoming-clib/pango.toml b/recipes/incoming-clib/pango.toml new file mode 100644 index 00000000..38d2eae6 --- /dev/null +++ b/recipes/incoming-clib/pango.toml @@ -0,0 +1,46 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "pango" +version = "1.57.1" + +[source] +tarball = "https://download.gnome.org/sources/pango/${pkgver%.*}/pango-1.57.1.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "ccfcec11f0beb0487d9225be227e7f31d03229ed1e0dc3309e2647ed5fa953cf036ad352232429f5604f97d20812074ff145ea622110afa4df3a410ebba4d26a" +sha256 = "FIXME-sha256" +patches = ["disable-broken-test.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +abuild-meson \ + -Db_lto=true \ + -Dintrospection=enabled \ + -Dfontconfig=enabled \ + -Ddocumentation=false \ + -Dman-pages=true \ + -Dxft=enabled \ + -Dfreetype=enabled \ + build + meson compile -C build +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C build +} +_abuild_phase +''' + +[deps] +build = ["cairo", "expat", "fontconfig", "fribidi", "glib", "gobject-introspection", "harfbuzz", "libxft", "py3-docutils"] diff --git a/recipes/incoming-clib/pcf-family-names.patch b/recipes/incoming-clib/pcf-family-names.patch new file mode 100644 index 00000000..773f1a44 --- /dev/null +++ b/recipes/incoming-clib/pcf-family-names.patch @@ -0,0 +1,13 @@ +diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h +index 9e03e17..1411db6 100644 +--- a/include/freetype/config/ftoption.h ++++ b/include/freetype/config/ftoption.h +@@ -913,7 +913,7 @@ FT_BEGIN_HEADER + * If this option is activated, it can be controlled with the + * `no-long-family-names` property of the 'pcf' driver module. + */ +-/* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */ ++#define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES + + + /*************************************************************************/ diff --git a/recipes/incoming-clib/pcre2.toml b/recipes/incoming-clib/pcre2.toml new file mode 100644 index 00000000..3b6bef5c --- /dev/null +++ b/recipes/incoming-clib/pcre2.toml @@ -0,0 +1,50 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "pcre2" +version = "10.47" + +[source] +tarball = "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.47/pcre2-10.47.tar.bz2" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "889a6fdc80f8a7285e4a75d189c183b4588df81bdf048302cf0830e11bbf9b9eeb387ba43dfd3aff8ffb3aa693291e8c535845c06e8ce92d1028cefa6b474804" +sha256 = "47fe8c99461250d42f89e6e8fdaeba9da057855d06eb7fc08d9ca03fd08d7bc7" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +# Note: Forced -O3 is recommended (needed?) for Julia. + ./configure \ + CFLAGS="$CFLAGS -O3" \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --docdir=/usr/share/doc/pcre2-10.47 \ + --htmldir=/usr/share/doc/pcre2-10.47/html \ + --enable-pcre2-16 \ + --enable-pcre2-32 \ + --enable-pcre2grep-libz \ + --enable-pcre2test-libedit \ + --disable-symvers \ + $_enable_jit + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out" install +} +_abuild_phase +''' + +[deps] +build = ["libedit", "zlib"] diff --git a/recipes/incoming-clib/pixman.toml b/recipes/incoming-clib/pixman.toml new file mode 100644 index 00000000..ffed1b2c --- /dev/null +++ b/recipes/incoming-clib/pixman.toml @@ -0,0 +1,56 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "pixman" +version = "0.46.4" + +[source] +tarball = "https://xorg.freedesktop.org/releases/individual/lib/pixman-0.46.4.tar.xz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "83b133e7969ba34f883f4e08dcc5d388c4397f43ce836c191c05945fe77c16ff501d531600780c12678a0d08105828a6bdeff2156b63f9c1a84087bc7f40ae9f" +sha256 = "a098c33924754ad43f981b740f6d576c70f9ed1006e12221b1845431ebce1239" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +case "$CARCH" in + armhf|riscv64) + # target-specific builtin not available + local lto=false + ;; + *) + local lto=true + ;; + esac + # We need to increase the stacksize here: https://gitlab.gnome.org/GNOME/librsvg/-/issues/595 + LDFLAGS="$LDFLAGS -Wl,-z,stack-size=2097152" \ + # auto-features=auto: a lot of features are architecture dependent + abuild-meson \ + --auto-features=auto \ + -Db_lto=$lto \ + -Ddefault_library=both \ + -Dlibpng=enabled \ + -Ddemos=disabled \ + -Dtests="$(want_check && echo enabled || echo disabled)" \ + . output + meson compile -C output +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C output +} +_abuild_phase +''' + +[deps] +build = ["libpng", "linux-headers"] diff --git a/recipes/incoming-clib/projectsdir.patch b/recipes/incoming-clib/projectsdir.patch new file mode 100644 index 00000000..f746188d --- /dev/null +++ b/recipes/incoming-clib/projectsdir.patch @@ -0,0 +1,102 @@ +From 5f3b178590df746544a48338f39025bf03aca46c Mon Sep 17 00:00:00 2001 +From: Emmanuele Bassi +Date: Fri, 3 Apr 2026 12:17:31 +0100 +Subject: [PATCH] Support XDG_PROJECTS_DIR + +A new XDG user directory type, for non-document project files. + +See: https://gitlab.freedesktop.org/xdg/xdg-user-dirs/-/work_items/3 +--- + gio/glocalfileinfo.c | 4 ++++ + glib/gosxutils.m | 3 ++- + glib/gutils.c | 2 ++ + glib/gutils.h | 9 +++++++++ + glib/gutilsprivate.c | 5 +++++ + 5 files changed, 22 insertions(+), 1 deletion(-) + +diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c +index d2efb169eb..ec482988a6 100644 +--- a/gio/glocalfileinfo.c ++++ b/gio/glocalfileinfo.c +@@ -1840,6 +1840,10 @@ get_icon_name (const char *path, + { + name = use_symbolic ? "folder-pictures-symbolic" : "folder-pictures"; + } ++ else if (g_strcmp0 (path, g_get_user_special_dir (G_USER_DIRECTORY_PROJECTS)) == 0) ++ { ++ name = use_symbolic ? "folder-projects-symbolic" : "folder-projects"; ++ } + else if (g_strcmp0 (path, g_get_user_special_dir (G_USER_DIRECTORY_PUBLIC_SHARE)) == 0) + { + name = use_symbolic ? "folder-publicshare-symbolic" : "folder-publicshare"; +diff --git a/glib/gosxutils.m b/glib/gosxutils.m +index 4d2d962ef4..13860a31ce 100644 +--- a/glib/gosxutils.m ++++ b/glib/gosxutils.m +@@ -43,7 +43,7 @@ find_folder (NSSearchPathDirectory type) + } + + void +-load_user_special_dirs_macos(gchar **table) ++load_user_special_dirs_macos (gchar **table) + { + table[G_USER_DIRECTORY_DESKTOP] = find_folder (NSDesktopDirectory); + table[G_USER_DIRECTORY_DOCUMENTS] = find_folder (NSDocumentDirectory); +@@ -53,4 +53,5 @@ load_user_special_dirs_macos(gchar **table) + table[G_USER_DIRECTORY_PUBLIC_SHARE] = find_folder (NSSharedPublicDirectory); + table[G_USER_DIRECTORY_TEMPLATES] = NULL; + table[G_USER_DIRECTORY_VIDEOS] = find_folder (NSMoviesDirectory); ++ table[G_USER_DIRECTORY_PROJECTS] = find_folder (NSDocumentDirectory); + } +diff --git a/glib/gutils.c b/glib/gutils.c +index 02da41b688..90bd3bc3e7 100644 +--- a/glib/gutils.c ++++ b/glib/gutils.c +@@ -2243,6 +2243,8 @@ load_user_special_dirs_unlocked (void) + + g_user_special_dirs[G_USER_DIRECTORY_TEMPLATES] = get_special_folder (&FOLDERID_Templates); + g_user_special_dirs[G_USER_DIRECTORY_VIDEOS] = get_special_folder (&FOLDERID_Videos); ++ ++ g_user_special_dirs[G_USER_DIRECTORY_PROJECTS] = get_special_folder (&FOLDERID_Documents); + } + + #else /* default is unix */ +diff --git a/glib/gutils.h b/glib/gutils.h +index dce1541ed7..f111938cae 100644 +--- a/glib/gutils.h ++++ b/glib/gutils.h +@@ -248,6 +248,15 @@ typedef enum { + G_USER_DIRECTORY_TEMPLATES, + G_USER_DIRECTORY_VIDEOS, + ++ /** ++ * G_USER_DIRECTORY_PROJECTS: ++ * ++ * The user's Projects directory. ++ * ++ * Since: 2.90 ++ */ ++ G_USER_DIRECTORY_PROJECTS, ++ + G_USER_N_DIRECTORIES + } GUserDirectory; + +diff --git a/glib/gutilsprivate.c b/glib/gutilsprivate.c +index 3b9206c45c..f8dac99ec0 100644 +--- a/glib/gutilsprivate.c ++++ b/glib/gutilsprivate.c +@@ -89,6 +89,11 @@ load_user_special_dirs_from_string (const gchar *string, const gchar *home_dir, + directory = G_USER_DIRECTORY_VIDEOS; + p += strlen ("XDG_VIDEOS_DIR"); + } ++ else if (strncmp (p, "XDG_PROJECTS_DIR", strlen ("XDG_PROJECTS_DIR")) == 0) ++ { ++ directory = G_USER_DIRECTORY_PROJECTS; ++ p += strlen ("XDG_PROJECTS_DIR"); ++ } + else + continue; + +-- +GitLab + diff --git a/recipes/incoming-clib/saneso.patch b/recipes/incoming-clib/saneso.patch new file mode 100644 index 00000000..529a0c20 --- /dev/null +++ b/recipes/incoming-clib/saneso.patch @@ -0,0 +1,23 @@ +diff --git a/Makefile-libbz2_so b/Makefile-libbz2_so +index fb0f230..2c95a3a 100644 +--- a/Makefile-libbz2_so ++++ b/Makefile-libbz2_so +@@ -35,13 +35,13 @@ OBJS= blocksort.o \ + bzlib.o + + all: $(OBJS) +- $(CC) -shared -Wl,-soname -Wl,libbz2.so.1.0 -o libbz2.so.1.0.8 $(OBJS) ++ $(CC) -shared -Wl,-soname -Wl,libbz2.so.1 -o libbz2.so.1.0.8 $(OBJS) + $(CC) $(CFLAGS) -o bzip2-shared bzip2.c libbz2.so.1.0.8 +- rm -f libbz2.so.1.0 +- ln -s libbz2.so.1.0.8 libbz2.so.1.0 ++ rm -f libbz2.so.1 ++ ln -s libbz2.so.1.0.8 libbz2.so.1 + + clean: +- rm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1.0 bzip2-shared ++ rm -f $(OBJS) bzip2.o libbz2.so.1.0.8 libbz2.so.1 bzip2-shared + + blocksort.o: blocksort.c + $(CC) $(CFLAGS) -c blocksort.c + diff --git a/recipes/incoming-clib/skip-meaningless-pthread-rwlock-test.patch b/recipes/incoming-clib/skip-meaningless-pthread-rwlock-test.patch new file mode 100644 index 00000000..abe65cad --- /dev/null +++ b/recipes/incoming-clib/skip-meaningless-pthread-rwlock-test.patch @@ -0,0 +1,13 @@ +diff --git a/gettext-tools/gnulib-tests/test-pthread-rwlock.c b/gettext-tools/gnulib-tests/test-pthread-rwlock.c +index 90d6ac5..61009a7 100644 +--- a/gettext-tools/gnulib-tests/test-pthread-rwlock.c ++++ b/gettext-tools/gnulib-tests/test-pthread-rwlock.c +@@ -198,6 +198,8 @@ test_rwlock (void) + int + main () + { ++ fputs ("Skipping meaningless test which is expected to deadlock\n", stderr); ++ return 77; + #if HAVE_DECL_ALARM + /* Declare failure if test takes too long, by using default abort + caused by SIGALRM. */ diff --git a/recipes/incoming-clib/skip-tests-musl.patch b/recipes/incoming-clib/skip-tests-musl.patch new file mode 100644 index 00000000..8b3e9214 --- /dev/null +++ b/recipes/incoming-clib/skip-tests-musl.patch @@ -0,0 +1,70 @@ +As upstream notes: + +# Note: This test fails on Linux with musl libc versions that don't support +# the BIG5 encoding in 'iconv'. + +diff --git a/gettext-tools/tests/msgcat-22 b/gettext-tools/tests/msgcat-22 +index 6047188..abe5877 100755 +--- a/gettext-tools/tests/msgcat-22 ++++ b/gettext-tools/tests/msgcat-22 +@@ -6,6 +6,8 @@ + # Note: This test fails on Linux with musl libc versions that don't support + # the GB18030 encoding in 'iconv'. + ++exit 77 ++ + cat <<\EOF > mcat-test22.po + msgid "" + msgstr "" +diff --git a/gettext-tools/tests/msgconv-2 b/gettext-tools/tests/msgconv-2 +index d286cda..d96c487 100755 +--- a/gettext-tools/tests/msgconv-2 ++++ b/gettext-tools/tests/msgconv-2 +@@ -7,6 +7,8 @@ + # Note: This test fails on Linux with musl libc versions that don't support + # the BIG5 encoding in 'iconv'. + ++Exit 77 ++ + cat <<\EOF > mco-test2.po + # Chinese translation for GNU gettext messages. + # +diff --git a/gettext-tools/tests/msgconv-8 b/gettext-tools/tests/msgconv-8 +index 207b0f0..618de0f 100755 +--- a/gettext-tools/tests/msgconv-8 ++++ b/gettext-tools/tests/msgconv-8 +@@ -6,6 +6,8 @@ + # Note: This test fails on Linux with musl libc versions that don't support + # the GB18030 encoding in 'iconv'. + ++exit 77 ++ + cat <<\EOF > mco-test8.po + msgid "" + msgstr "" +diff --git a/gettext-tools/tests/msgmerge-compendium-6 b/gettext-tools/tests/msgmerge-compendium-6 +index 59eb00e..c4be0b2 100755 +--- a/gettext-tools/tests/msgmerge-compendium-6 ++++ b/gettext-tools/tests/msgmerge-compendium-6 +@@ -10,6 +10,8 @@ + # Note: This test fails on Linux with musl libc versions and on Solaris 11 + # (OpenIndiana, OmniOS) that don't support the EUC-KR encoding in 'iconv'. + ++Exit 77 ++ + : ${MSGCONV=msgconv} + ${MSGCONV} --to-code=UTF-8 -o mm-ko.utf-8.pot "$wabs_srcdir"/mm-ko.ascii.pot + +diff --git a/gettext-tools/tests/xgettext-python-3 b/gettext-tools/tests/xgettext-python-3 +index 1e13b57..7cd480d 100755 +--- a/gettext-tools/tests/xgettext-python-3 ++++ b/gettext-tools/tests/xgettext-python-3 +@@ -6,6 +6,8 @@ + # Note: This test fails on Linux with musl libc versions that don't support + # the EUC-JP encoding in 'iconv'. + ++Exit 77 ++ + cat <<\EOF > xg-py-3a.py + #!/usr/bin/env python + # TRANSLATORS: Franois Pinard is a hero. diff --git a/recipes/incoming-clib/skip-unicode-16-tests.patch b/recipes/incoming-clib/skip-unicode-16-tests.patch new file mode 100644 index 00000000..f1c6dc67 --- /dev/null +++ b/recipes/incoming-clib/skip-unicode-16-tests.patch @@ -0,0 +1,89 @@ +diff --git a/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h b/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h +index d64bb32..f497ad4 100644 +--- a/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h ++++ b/gettext-tools/gnulib-tests/unicase/test-mapping-part1.h +@@ -22,6 +22,25 @@ + + #include "macros.h" + ++#if HAVE_LIBUNISTRING ++/* The generated mappings in this source tree target Unicode 16.0.0. ++ Skip direct comparisons when an external libunistring provides a newer ++ Unicode database than the expected tables embedded in these tests. */ ++extern int _libunistring_unicode_version; ++ ++static int ++should_skip_for_external_libunistring_version (void) ++{ ++ return _libunistring_unicode_version > 0x1000; ++} ++#else ++static int ++should_skip_for_external_libunistring_version (void) ++{ ++ return 0; ++} ++#endif ++ + /* Pair of Unicode characters. */ + typedef struct { ucs4_t ch; ucs4_t value; } pair_t; + +diff --git a/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h b/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h +index aa14384..80fb2b6 100644 +--- a/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h ++++ b/gettext-tools/gnulib-tests/unicase/test-mapping-part2.h +@@ -19,6 +19,9 @@ + int + main () + { ++ if (should_skip_for_external_libunistring_version ()) ++ return 77; ++ + unsigned int c; + size_t i; + +diff --git a/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h b/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h +index caf2dc2..20a35df 100644 +--- a/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h ++++ b/gettext-tools/gnulib-tests/unictype/test-predicate-part1.h +@@ -22,6 +22,26 @@ + + #include "macros.h" + ++#if HAVE_LIBUNISTRING ++/* The generated tables in this source tree target Unicode 16.0.0. ++ When these tests are linked against an external libunistring with a newer ++ Unicode database, direct table equality checks become stale and should be ++ skipped rather than reported as regressions in gettext's bundled data. */ ++extern int _libunistring_unicode_version; ++ ++static int ++should_skip_for_external_libunistring_version (void) ++{ ++ return _libunistring_unicode_version > 0x1000; ++} ++#else ++static int ++should_skip_for_external_libunistring_version (void) ++{ ++ return 0; ++} ++#endif ++ + /* Interval of Unicode characters. */ + typedef struct { ucs4_t start; ucs4_t end; } interval_t; + +diff --git a/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h b/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h +index b4eef82..ac5071d 100644 +--- a/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h ++++ b/gettext-tools/gnulib-tests/unictype/test-predicate-part2.h +@@ -19,6 +19,9 @@ + int + main () + { ++ if (should_skip_for_external_libunistring_version ()) ++ return 77; ++ + unsigned int c; + size_t i; + diff --git a/recipes/incoming-clib/subpixel.patch b/recipes/incoming-clib/subpixel.patch new file mode 100644 index 00000000..e5da0d74 --- /dev/null +++ b/recipes/incoming-clib/subpixel.patch @@ -0,0 +1,12 @@ +diff -Naur a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h +--- a/include/freetype/config/ftoption.h 2019-02-23 09:09:06.000000000 +0000 ++++ b/include/freetype/config/ftoption.h 2019-03-17 11:42:04.315011932 +0000 +@@ -126,7 +126,7 @@ + * macro is not defined, FreeType offers alternative LCD rendering + * technology that produces excellent output without LCD filtering. + */ +-/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ ++#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING + + + /************************************************************************** diff --git a/recipes/incoming-clib/table-validation-modules.patch b/recipes/incoming-clib/table-validation-modules.patch new file mode 100644 index 00000000..968475e3 --- /dev/null +++ b/recipes/incoming-clib/table-validation-modules.patch @@ -0,0 +1,21 @@ +diff -Naur a/modules.cfg b/modules.cfg +--- a/modules.cfg 2019-02-23 09:06:07.000000000 +0000 ++++ b/modules.cfg 2019-03-15 17:13:56.465952994 +0000 +@@ -111,7 +111,7 @@ + + # TrueType GX/AAT table validation. Needs `ftgxval.c' below. + # +-# AUX_MODULES += gxvalid ++AUX_MODULES += gxvalid + + # Support for streams compressed with gzip (files with suffix .gz). + # +@@ -130,7 +130,7 @@ + + # OpenType table validation. Needs `ftotval.c' below. + # +-# AUX_MODULES += otvalid ++AUX_MODULES += otvalid + + # Auxiliary PostScript driver component to share common code. + # diff --git a/recipes/incoming-clib/tests-machine-id.patch b/recipes/incoming-clib/tests-machine-id.patch new file mode 100644 index 00000000..66648984 --- /dev/null +++ b/recipes/incoming-clib/tests-machine-id.patch @@ -0,0 +1,41 @@ +From 5cf08a9a1041a9dc9975371fb62f8f22c3be76c4 Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Wed, 3 Apr 2024 21:25:04 +0200 +Subject: [PATCH 2/3] tests: skip gio tests which fails with missing machine-id + +Signed-off-by: Natanael Copa +--- + gio/tests/meson.build | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/gio/tests/meson.build b/gio/tests/meson.build +index f04ff43ff..71ec09750 100644 +--- a/gio/tests/meson.build ++++ b/gio/tests/meson.build +@@ -46,6 +46,8 @@ if glib_build_shared + subdir('modules') + endif + ++have_machine_id = import('fs').is_file('/etc/machine-id') ++ + # Test programs buildable on all platforms + gio_tests = { + 'application-command-line': {}, +@@ -98,7 +100,7 @@ gio_tests = { + 'install_rpath' : installed_tests_execdir, + # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 + # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/3148 +- 'can_fail' : host_system in ['darwin', 'windows', 'gnu'], ++ 'can_fail' : host_system in ['darwin', 'windows', 'gnu'] or not have_machine_id, + }, + 'inet-address' : {}, + 'io-stream' : {}, +@@ -147,7 +149,7 @@ gio_tests = { + 'extra_programs': host_system != 'windows' ? ['dbus-launch'] : [], + # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 + # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/3148 +- 'can_fail' : host_system in ['darwin', 'gnu'], ++ 'can_fail' : host_system in ['darwin', 'gnu'] or not have_machine_id, + }, + 'win32-appinfo' : {}, + } diff --git a/recipes/incoming-clib/xz.toml b/recipes/incoming-clib/xz.toml new file mode 100644 index 00000000..5860226f --- /dev/null +++ b/recipes/incoming-clib/xz.toml @@ -0,0 +1,54 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "xz" +version = "5.8.3" + +[source] +tarball = "https://github.com/tukaani-project/xz/archive/refs/tags/v5.8.3/xz-5.8.3.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "8fb5e6a13397d259d8ff7484f9b63f8a6752ff1c63e1a4601170ad8175aadefb5126a1cae7f73370bfc6c2a0b4e1c0bad57a58fc5b781d3f7d45e5a483c091cc" +sha256 = "8ec1767fa517642ecb4cf08b891ce667ba6f143551e382b07c7ef437bda335e2" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +# compression utility + CFLAGS="$CFLAGS -O3" \ + ./configure \ + --build=$CBUILD \ + --host=$CHOST \ + --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --localstatedir=/var \ + --disable-rpath \ + --disable-werror \ + --disable-doc + + sed -i \ + -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \ + -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \ + libtool + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make DESTDIR="/out" install +} +_abuild_phase +''' + +[deps] +build = ["autoconf", "automake", "libtool", "gettext-tiny"] diff --git a/recipes/incoming-clib/zlib.toml b/recipes/incoming-clib/zlib.toml new file mode 100644 index 00000000..18b39447 --- /dev/null +++ b/recipes/incoming-clib/zlib.toml @@ -0,0 +1,39 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "zlib" +version = "1.3.2" + +[source] +tarball = "https://zlib.net/fossils/zlib-1.3.2.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "70963771ea5d763614278a69b474f09b7d237ef8f53b675a10fe31d9923aeef601504b35d7ebd1b1e7f347e9ebb048e6b3b47fffdf137e7bdc7e8d5eb4ec4692" +sha256 = "bb329a0a2cd0274d05519d61c667c062e06990d72e125ee2dfa8de64f0119d16" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +# we trade size for a little more speed. + export CFLAGS="$CFLAGS -O2" + CHOST="$CHOST" ./configure \ + --prefix=/usr \ + --shared \ + --disable-crcvx + make +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +make install DESTDIR="/out" +} +_abuild_phase +''' diff --git a/recipes/incoming-clib/zstd.toml b/recipes/incoming-clib/zstd.toml new file mode 100644 index 00000000..29d357dc --- /dev/null +++ b/recipes/incoming-clib/zstd.toml @@ -0,0 +1,70 @@ +# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero +# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el +# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild. +name = "zstd" +version = "1.5.7" + +[source] +tarball = "https://github.com/facebook/zstd/archive/v1.5.7.tar.gz" +# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: +# sha512 = "26e441267305f6e58080460f96ab98645219a90d290a533410b1b0b1d2f870721c95f8384e342ee647c5e968385a5b7e30c2d04340c37f59b3e6d86762c3260c" +sha256 = "37d7284556b20954e56e1ca85b80226768902e2edabd3b649e9e72c0c9012ee3" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = [] + +[build.phases] +# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático): +compile = ''' +_abuild_phase() { +export CFLAGS="${CFLAGS/-Os/-O3} -flto=auto -ffat-lto-objects" + export CXXFLAGS="${CXXFLAGS/-Os/-O3} -flto=auto -ffat-lto-objects" + export CPPFLAGS="${CPPFLAGS/-Os/-O3} -flto=auto -ffat-lto-objects" + local pgo=false + if [ -z "$BOOTSTRAP" ]; then + pgo=true + fi + # 2-stage pgo+lto build (non-bootstrap), standard meson usage. + # note that with clang, + # llvm-profdata merge --output=output/somefilename(?) output/*.profraw + # is needed. + # believe it or not, this is +30% faster on x86_64 than the default makefile build (same params).. + # maybe needs more testing + # shellcheck disable=2046 + abuild-meson \ + --default-library=both \ + -Db_ndebug=true \ + $($pgo && echo -Db_pgo=generate) \ + -Dbin_contrib=true \ + -Dbin_programs=true \ + -Dbin_tests="$(want_check && echo true || echo false)" \ + -Dbacktrace=disabled \ + -Dmulti_thread=enabled \ + -Dlz4=disabled \ + -Dlzma=disabled \ + -Dzlib=disabled \ + build/meson output + + meson compile -C output + + if $pgo; then + meson test -t 4 --print-errorlogs -C output + meson configure -Dbin_tests=false -Db_pgo=use output + meson compile -C output + fi +} +_abuild_phase +''' +# de package() de Alpine (traducido $pkgdir→/out): +install = ''' +_abuild_phase() { +DESTDIR="/out" meson install --no-rebuild -C output +} +_abuild_phase +''' + +[deps] +build = ["grep"]