From 27429629888fe192959a616b6855fcdcdbb05b4c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 18 Aug 2020 16:39:58 -0600 Subject: [PATCH] update "racket/src/native-libs" scripts Repairs for tool drift and over-specific patch rules. --- racket/src/native-libs/README.txt | 2 +- racket/src/native-libs/build.rkt | 61 ++++++++++++------- .../native-libs/patches/cairo-nofortify.patch | 13 ++++ .../native-libs/patches/glib-debugprint.patch | 27 ++++++++ .../native-libs/patches/libtool-link.patch | 18 ++---- .../native-libs/patches/libtool64-link.patch | 34 ----------- .../native-libs/patches/pixman-notest.patch | 11 ++-- 7 files changed, 90 insertions(+), 76 deletions(-) create mode 100644 racket/src/native-libs/patches/cairo-nofortify.patch create mode 100644 racket/src/native-libs/patches/glib-debugprint.patch delete mode 100644 racket/src/native-libs/patches/libtool64-link.patch diff --git a/racket/src/native-libs/README.txt b/racket/src/native-libs/README.txt index cad0672a69..55f5ca1cd4 100644 --- a/racket/src/native-libs/README.txt +++ b/racket/src/native-libs/README.txt @@ -18,7 +18,7 @@ Currently, we use the following external packages and versions: pkg-config-0.28 sed-4.2 (Windows only, to avoid non-GNU `sed`) sqlite[-autoconf]-3220000 (Windows, Linux, and PPC Mac OS only) - openssl-1.1.0h + openssl-1.1.1g libiconv-1.15 (Windows only) zlib-1.2.11 (Windows and Linux only) libffi-3.2.1 diff --git a/racket/src/native-libs/build.rkt b/racket/src/native-libs/build.rkt index 7101d32b83..09cc5c32b9 100644 --- a/racket/src/native-libs/build.rkt +++ b/racket/src/native-libs/build.rkt @@ -64,8 +64,8 @@ candidates)) (car candidates)])) -(define-runtime-path longdouble-c "../racket/src/longdouble/longdouble.c") -(define-runtime-path longdouble-h "../racket/src/longdouble/longdouble.h") +(define-runtime-path longdouble-c "../bc/src/longdouble/longdouble.c") +(define-runtime-path longdouble-h "../bc/src/longdouble/longdouble.h") (unless skip-unpack? (case package-name @@ -128,6 +128,10 @@ ;; Avoid crash when CTFontCollectionCreateMatchingFontDescriptors fails: (define-runtime-path coretext-nullarray "patches/coretext-nullarray.patch") +;; MinGW doesn't like `-Wp,-D_FORTIFY_SOURCE=2`, at least not without +;; linking extra libraries: +(define-runtime-path cairo-nofortfy-patch "patches/cairo-nofortify.patch") + ;; Define some functions that aren't in Mac OS 10.5 (for the 32-bit build) (define-runtime-path pango-surrogate-patch "patches/pango-surrogate.patch") @@ -156,6 +160,9 @@ ;; strerror_s is not available in XP (define-runtime-path glib-strerror-patch "patches/glib-strerror.patch") +;; avoid a print before NULL check +(define-runtime-path glib-debugprint-patch "patches/glib-debugprint.patch") + ;; For now, disable glib functionality that depends on Mac OS 10.8: (define-runtime-path gcocoanotify-patch "patches/gcocoanotify.patch") @@ -174,7 +181,6 @@ ;; Disable libtool's management of standard libs so that ;; MinGW's -static-libstdc++ works: (define-runtime-path libtool-link-patch "patches/libtool-link.patch") -(define-runtime-path libtool64-link-patch "patches/libtool64-link.patch") ;; Add FcSetFallbackDirs to set fallback directories dynamically: (define-runtime-path fcdirs-patch "patches/fcdirs.patch") @@ -209,6 +215,8 @@ (define (sdk n) (~a " -isysroot /Developer/SDKs/MacOSX10."n".sdk -mmacosx-version-min=10."n)) +(define mac32-sdk 6) +(define mac64-sdk 9) (define all-env (cond @@ -229,12 +237,14 @@ [mac? (cond [m32? - (define sdk-flags (sdk 5)) + (define sdk-flags (sdk mac32-sdk)) (list (list "CPPFLAGS" (~a "-m32" sdk-flags)) - (list "LDFLAGS" (~a "-m32" sdk-flags)))] + (list "LDFLAGS" (~a "-m32" sdk-flags + ;; suppress deprecation warning: + " -Wl,-w")))] [else - (define sdk-flags (sdk 9)) + (define sdk-flags (sdk mac64-sdk)) (list (list "CPPFLAGS" (~a "-m64" sdk-flags)) (list "LDFLAGS" (~a "-m64" sdk-flags)))])] @@ -470,11 +480,13 @@ ;; Disable Valgrind support, which particularly ;; goes wrong for 64-bit Windows builds. (list (list "CPPFLAGS" "-DNVALGRIND=1"))) - #:patches (cond - [win? (list glib-win32-weekday-patch - glib-strerror-patch)] - [mac? (list gcocoanotify-patch)] - [else null]))] + #:patches (append + (cond + [win? (list glib-win32-weekday-patch + glib-strerror-patch)] + [mac? (list gcocoanotify-patch)] + [else null]) + (list glib-debugprint-patch)))] [("libpng") (config #:depends (if (or win? linux?) '("zlib") '()) #:env (if (or linux? win?) (append @@ -493,11 +505,12 @@ "--without-libintl-prefix") '())) #:patches (list fcdirs-patch))] - [("pixman") (config #:patches (cond - [(and win? (not m32?)) (list noforceinline-patch)] - [ppc? (list pixman-altivec-patch)] - [else null]) - #:post-patches (list pixman-notest-patch))] + [("pixman") (config #:patches (append + (cond + [(and win? (not m32?)) (list noforceinline-patch)] + [ppc? (list pixman-altivec-patch)] + [else null]) + (list pixman-notest-patch)))] [("cairo") (when mac? (define zlib.pc (build-path dest "lib" "pkgconfig" "zlib.pc")) @@ -518,9 +531,13 @@ (if mac? '("CFLAGS=-include Kernel/uuid/uuid.h") '())) - #:patches (list cairo-emptyglyph.patch - cairo-coretext-patch - courier-new-patch))] + #:patches (append + (list cairo-emptyglyph.patch + cairo-coretext-patch + courier-new-patch) + (if win? + (list cairo-nofortfy-patch) + null)))] [("harfbuzz") (config #:depends '("fontconfig" "freetype" "cairo") #:configure '("--without-icu") #:env cxx-env @@ -549,7 +566,7 @@ (if mac? (list pango-preferoblique-patch) null) - (if (and mac? m32?) + (if (and mac? m32? (mac32-sdk . < . 6)) (list pango-surrogate-patch) null) (if (or mac? win?) @@ -576,9 +593,7 @@ cxx-env) #:patches (list nonochecknew-patch) #:post-patches (if win? - (list (if m32? - libtool-link-patch - libtool64-link-patch)) + (list libtool-link-patch) null) #:configure '("--enable-zlib" "--disable-splash-output" diff --git a/racket/src/native-libs/patches/cairo-nofortify.patch b/racket/src/native-libs/patches/cairo-nofortify.patch new file mode 100644 index 0000000000..5d52023b7a --- /dev/null +++ b/racket/src/native-libs/patches/cairo-nofortify.patch @@ -0,0 +1,13 @@ +diff -r -u old/cairo-1.14.12/configure new/cairo-1.14.12/configure +--- old/cairo-1.14.12/configure 2020-08-18 14:03:24.000000000 -0600 ++++ new/cairo-1.14.12/configure 2020-08-18 14:03:55.000000000 -0600 +@@ -19118,7 +19118,7 @@ + + MAYBE_WARN="$MAYBE_WARN -fno-strict-aliasing -fno-common" + +-MAYBE_WARN="$MAYBE_WARN -Wp,-D_FORTIFY_SOURCE=2" ++# MAYBE_WARN="$MAYBE_WARN -Wp,-D_FORTIFY_SOURCE=2" + + # invalidate cached value if MAYBE_WARN has changed + if test "x$cairo_cv_warn_maybe" != "x$MAYBE_WARN"; then +Only in new/cairo-1.14.12: configure~ diff --git a/racket/src/native-libs/patches/glib-debugprint.patch b/racket/src/native-libs/patches/glib-debugprint.patch new file mode 100644 index 0000000000..8058624ed7 --- /dev/null +++ b/racket/src/native-libs/patches/glib-debugprint.patch @@ -0,0 +1,27 @@ +diff -r -u old/glib-2.56.0/gio/gdbusauth.c new/glib-2.56.0/gio/gdbusauth.c +--- old/glib-2.56.0/gio/gdbusauth.c 2020-08-18 13:43:21.000000000 -0600 ++++ new/glib-2.56.0/gio/gdbusauth.c 2020-08-18 13:44:09.000000000 -0600 +@@ -1299,9 +1299,9 @@ + &line_length, + cancellable, + error); +- debug_print ("SERVER: WaitingForBegin, read '%s'", line); + if (line == NULL) + goto out; ++ debug_print ("SERVER: WaitingForBegin, read '%s'", line); + if (g_strcmp0 (line, "BEGIN") == 0) + { + /* YAY, done! */ +Only in new/glib-2.56.0/gio: gdbusauth.c~ +diff -r -u old/glib-2.56.0/gio/gdbusmessage.c new/glib-2.56.0/gio/gdbusmessage.c +--- old/glib-2.56.0/gio/gdbusmessage.c 2020-08-18 13:43:21.000000000 -0600 ++++ new/glib-2.56.0/gio/gdbusmessage.c 2020-08-18 13:50:21.000000000 -0600 +@@ -2699,6 +2699,7 @@ + if (message->body != NULL) + { + gchar *tupled_signature_str; ++ if (signature_str == NULL) signature_str = "???"; + tupled_signature_str = g_strdup_printf ("(%s)", signature_str); + if (signature == NULL) + { +Only in new/glib-2.56.0/gio: gdbusmessage.c~ diff --git a/racket/src/native-libs/patches/libtool-link.patch b/racket/src/native-libs/patches/libtool-link.patch index 6872676e24..49ef288f29 100644 --- a/racket/src/native-libs/patches/libtool-link.patch +++ b/racket/src/native-libs/patches/libtool-link.patch @@ -1,6 +1,6 @@ diff -r -u old/poppler-0.24.5/libtool new/poppler-0.24.5/libtool ---- old/poppler-0.24.5/libtool 2014-04-01 07:00:21.000000000 -0600 -+++ new/poppler-0.24.5/libtool 2014-04-01 07:00:07.000000000 -0600 +--- old/poppler-0.24.5/libtool 2020-08-18 14:20:55.000000000 -0600 ++++ new/poppler-0.24.5/libtool 2020-08-18 14:22:24.000000000 -0600 @@ -10167,14 +10167,14 @@ old_archive_from_expsyms_cmds="" @@ -18,17 +18,11 @@ diff -r -u old/poppler-0.24.5/libtool new/poppler-0.24.5/libtool # Commands used to build a loadable module if different from building # a shared archive. -@@ -10256,10 +10256,10 @@ +@@ -10266,2 +10266,7 @@ - # Dependencies to place before and after the objects being linked to - # create a shared library. --predep_objects="/usr/local/mw32/bin/../lib/gcc/i686-w64-mingw32/4.9.0/../../../../i686-w64-mingw32/lib/../lib/dllcrt2.o /usr/local/mw32/bin/../lib/gcc/i686-w64-mingw32/4.9.0/crtbegin.o" --postdep_objects="/usr/local/mw32/bin/../lib/gcc/i686-w64-mingw32/4.9.0/crtend.o" ++ ++# Clear these back out: +predep_objects="" +postdep_objects="" - predeps="" --postdeps="-lstdc++ -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt" +postdeps="" - - # The library search path used internally by the compiler when linking - # a shared library. + # ### END LIBTOOL TAG CONFIG: CXX diff --git a/racket/src/native-libs/patches/libtool64-link.patch b/racket/src/native-libs/patches/libtool64-link.patch deleted file mode 100644 index 064c472705..0000000000 --- a/racket/src/native-libs/patches/libtool64-link.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff -r -u orig/poppler-0.24.5/libtool next/poppler-0.24.5/libtool ---- orig/poppler-0.24.5/libtool 2018-04-04 09:51:15.000000000 -0600 -+++ next/poppler-0.24.5/libtool 2018-04-04 09:53:17.000000000 -0600 -@@ -10167,14 +10167,14 @@ - old_archive_from_expsyms_cmds="" - - # Commands used to build a shared archive. --archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" -+archive_cmds="\$CC -shared \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" - archive_expsym_cmds="if test \\\"x\\\`\$SED 1q \$export_symbols\\\`\\\" = xEXPORTS; then - cp \$export_symbols \$output_objdir/\$soname.def; - else - echo EXPORTS > \$output_objdir/\$soname.def; - cat \$export_symbols >> \$output_objdir/\$soname.def; - fi~ -- \$CC -shared -nostdlib \$output_objdir/\$soname.def \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" -+ \$CC -shared \$output_objdir/\$soname.def \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib" - - # Commands used to build a loadable module if different from building - # a shared archive. -@@ -10256,10 +10256,10 @@ - - # Dependencies to place before and after the objects being linked to - # create a shared library. --predep_objects="/usr/local/mw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.0/../../../../x86_64-w64-mingw32/lib/../lib/dllcrt2.o /usr/local/mw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.0/../../../../x86_64-w64-mingw32/lib/../lib/crtbegin.o" --postdep_objects="/usr/local/mw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.0/../../../../x86_64-w64-mingw32/lib/../lib/crtend.o" -+predep_objects="" -+postdep_objects="" - predeps="" --postdeps="-lstdc++ -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lgcc_eh -lmoldname -lmingwex -lmsvcrt" -+postdeps="" - - # The library search path used internally by the compiler when linking - # a shared library. diff --git a/racket/src/native-libs/patches/pixman-notest.patch b/racket/src/native-libs/patches/pixman-notest.patch index 0b295f589d..f302e33a10 100644 --- a/racket/src/native-libs/patches/pixman-notest.patch +++ b/racket/src/native-libs/patches/pixman-notest.patch @@ -1,13 +1,12 @@ diff -u -r old/pixman-0.34.0/Makefile new/pixman-0.34.0/Makefile ---- old/pixman-0.34.0/Makefile 2018-09-22 20:18:54.000000000 -0600 -+++ new/pixman-0.34.0/Makefile 2018-09-22 20:18:35.000000000 -0600 +--- old/pixman-0.34.0/Makefile.in 2018-09-22 20:18:54.000000000 -0600 ++++ new/pixman-0.34.0/Makefile.in 2018-09-22 20:18:35.000000000 -0600 @@ -380,7 +380,7 @@ - top_build_prefix = - top_builddir = . - top_srcdir = /Users/mflatt/build/bl/m64/pixman-0.34.0/. + top_build_prefix = @top_build_prefix@ + top_builddir = @top_builddir@ + top_srcdir = @top_srcdir@ -SUBDIRS = pixman demos test +SUBDIRS = pixman pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = pixman-1.pc GPGKEY = 3892336E -Only in old/pixman-0.34.0: Makefile~