diff --git a/pkgs/racket-lib/info.rkt b/pkgs/racket-lib/info.rkt index 400af92e46..9a9c71b08c 100644 --- a/pkgs/racket-lib/info.rkt +++ b/pkgs/racket-lib/info.rkt @@ -3,12 +3,12 @@ (define collection 'multi) (define deps - '(("racket-win32-i386-2" #:platform "win32\\i386") - ("racket-win32-x86_64-2" #:platform "win32\\x86_64") - ("racket-x86_64-linux-natipkg-2" #:platform "x86_64-linux-natipkg") - ("racket-x86_64-macosx-2" #:platform "x86_64-macosx") - ("racket-i386-macosx-2" #:platform "i386-macosx") - ("racket-ppc-macosx-2" #:platform "ppc-macosx") + '(("racket-win32-i386-3" #:platform "win32\\i386") + ("racket-win32-x86_64-3" #:platform "win32\\x86_64") + ("racket-x86_64-linux-natipkg-3" #:platform "x86_64-linux-natipkg") + ("racket-x86_64-macosx-3" #:platform "x86_64-macosx") + ("racket-i386-macosx-3" #:platform "i386-macosx") + ("racket-ppc-macosx-3" #:platform "ppc-macosx") ("db-ppc-macosx" #:platform "ppc-macosx") ("db-win32-i386" #:platform "win32\\i386") ("db-win32-x86_64" #:platform "win32\\x86_64") diff --git a/racket/collects/openssl/libcrypto.rkt b/racket/collects/openssl/libcrypto.rkt index 59a510cc97..091d26f2a8 100644 --- a/racket/collects/openssl/libcrypto.rkt +++ b/racket/collects/openssl/libcrypto.rkt @@ -57,8 +57,8 @@ (case (if runtime? (system-type) (cross-system-type)) [(windows) '(so "libeay32")] [(macosx) - ;; Version "1.0.0" is bundled with Racket - '(so "libcrypto" ("1.0.0" #f))] + ;; Version "1.1" is bundled with Racket + '(so "libcrypto" ("1.1" #f))] [else '(so "libcrypto")])) (define libcrypto diff --git a/racket/collects/openssl/libssl.rkt b/racket/collects/openssl/libssl.rkt index 66c0f882d6..b570ec007b 100644 --- a/racket/collects/openssl/libssl.rkt +++ b/racket/collects/openssl/libssl.rkt @@ -18,8 +18,8 @@ (case (if runtime? (system-type) (cross-system-type)) [(windows) '(so "ssleay32")] [(macosx) - ;; Version "1.0.0" is bundled with Racket - '(so "libssl" ("1.0.0" #f))] + ;; Version "1.1" is bundled with Racket + '(so "libssl" ("1.1" #f))] [else '(so "libssl")])) (define libssl diff --git a/racket/src/native-libs/README.txt b/racket/src/native-libs/README.txt index 231653bd04..81fd3ba714 100644 --- a/racket/src/native-libs/README.txt +++ b/racket/src/native-libs/README.txt @@ -1,4 +1,4 @@ -The core `racket' executable has minimal library dependencies. In +The core `racket` executable has minimal library dependencies. In contrast, libraries implemented in various packages, such as the "draw" or "math" packages, rely on additional C-implemented libraries, such as Cairo, GMP, etc., all of which are loaded dynamically. On Unix @@ -16,26 +16,27 @@ script and patches are fragile, so we upgrade libraries infrequently. 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]-3210000 (Windows and Linux only) - openssl-1.0.2k (current PPC binaries are 1.0.1g) - libiconv-1.14 (Windows only) - zlib-1.2.8 (Windows and Linux only) - libffi-3.0.13 - expat-2.1.0 - gettext-0.18.3.2 - glib-2.39.92 - libpng-1.6.10 - pixman-0.32.4 - cairo-1.12.16 - jpegsrc.v9a - harfbuzz-0.9.27 - fontconfig-2.11.1 - freetype-2.5.3 - pango-1.36.6 (current PPC binaries are 1.36.3) + sed-4.2 (Windows only, to avoid non-GNU `sed`) + sqlite[-autoconf]-3220000 (Windows and Linux only) + openssl-1.1.0h (current PPC binaries are 1.0.1g) + libiconv-1.15 (Windows only) + zlib-1.2.11 (Windows and Linux only) + libffi-3.2.1 + expat-2.2.5 + gettext-0.19.8 + glib-2.56.0 + libpng-1.6.34 + pixman-0.34.0 + cairo-1.14.12 + jpegsrc.v9c + harfbuzz-1.7.6 + fribidi-1.0.2 + fontconfig-2.13.0 + freetype-2.9 + pango-1.42.0 (current PPC binaries are 1.36.3) poppler-0.24.5 - mpfr-3.1.2 - gmp-5.1.3 + mpfr-3.1.6 + gmp-6.1.2 (Linux only:) xtrans-1.3.5 @@ -110,8 +111,8 @@ Build Steps (assuming no version changes) --archives where is the deirectory containing this file, - `--win' versus `--mac' selects a Windows versus Mac OS build, - and `--m32' versus `--m64' selects a 32-bit versus 64-bit build. + `--win` versus `--mac` selects a Windows versus Mac OS build, + and `--m32` versus `--m64` selects a 32-bit versus 64-bit build. * Run @@ -136,14 +137,14 @@ The first build step is "pkg-config", which is built for the current build platform, as opposed to the target platform. The resulting `pkg-config` is installed into "/dest/bin", which is included in the PATH environment variable when all other configuration -steps are run. If you used an installed `pkg-config', then you'd end +steps are run. If you used an installed `pkg-config`, then you'd end up linking to installed packages on the build machine, which would be confusing at best. More details for Windows: - * GNU `sed' is built to run on the build platform, just in case the - build platform's `sed' is BSD-style (as on Mac OS). + * GNU `sed` is built to run on the build platform, just in case the + build platform's `sed` is BSD-style (as on Mac OS). * The generated ".dll"s go to "dest/bin". @@ -151,7 +152,7 @@ More details for Windows: symbols. * Beware of dynamic linking to libgcc or libstdc++. The build script - uses `-static-libgcc' and `-static-libstdc++' to statically link + uses `-static-libgcc` and `-static-libstdc++` to statically link those libraries. Use "depends.exe" to check DLL dependencies. More details for Mac OS: @@ -167,7 +168,7 @@ More details for Mac OS: During the build, ".dylib"s in "/dest/lib" will contain full paths when they depend on other ".dylibs" in the same - directory. The "install.rkt" script uses `install_name_tool' to + directory. The "install.rkt" script uses `install_name_tool` to rewrite those paths to relative form using "@loader_path". You can use @@ -179,7 +180,7 @@ More details for Mac OS: out for "/usr/opt/local" paths, which means that you have accidentally links to MacPorts libraries. - * All ".dylib"s should use two-level namespaces. Use `otool -vh' and + * All ".dylib"s should use two-level namespaces. Use `otool -vh` and look for "TWOLEVEL" in the output to double check that a library build uses two-level namespaces. @@ -203,7 +204,7 @@ several places: * Update the library version in "install.rkt". - * Update the `ffi-lib' reference in the corresponding Racket wrapper + * Update the `ffi-lib` reference in the corresponding Racket wrapper libraries. * Update the "info.rkt" dependencies in the Racket packages that @@ -233,7 +234,8 @@ so delete that file to make "build-all.rkt" try again for If You Have to Start Over Completely ------------------------------------ -See +The "build.rkt" script automates most everything we learned, but +for old build notes, see also * "racket/src/mac/README.txt" in a Racket v5.x source distirbution @@ -243,6 +245,3 @@ See * Pre-built packages from www.gtk.org, specifically the "dev" archives. - -for old build notes. The "build.rkt" script automates most everything -we learned. diff --git a/racket/src/native-libs/build-all.rkt b/racket/src/native-libs/build-all.rkt index 5ba42c0682..153a38377c 100644 --- a/racket/src/native-libs/build-all.rkt +++ b/racket/src/native-libs/build-all.rkt @@ -41,6 +41,9 @@ "libXrender" "freefont")] [else null]) + (cond + [win? null] + [else '("libuuid")]) '("libffi" "glib" "libpng" @@ -49,6 +52,7 @@ "pixman" "cairo" "harfbuzz" + "fribidi" "pango" "gmp" "mpfr" diff --git a/racket/src/native-libs/build.rkt b/racket/src/native-libs/build.rkt index 8e4fd9fdb9..9cadfab300 100644 --- a/racket/src/native-libs/build.rkt +++ b/racket/src/native-libs/build.rkt @@ -113,12 +113,6 @@ ;; Fix a problem with glyph extents and clipped rendering: (define-runtime-path cairo-coretext-patch "patches/cairo-coretext.patch") -;; Avoid CGFontGetGlyphPath: -(define-runtime-path cairo-cgfontgetglpyh-patch "patches/cgfontgetglyph.patch") - -;; Patch to avoid writing to a global constant: -(define-runtime-path cairo-allclipmodifybug-patch "patches/allclipmodifybug.patch") - ;; Hack to workaround broken Courier New in Mac OS 10.{7.8}: (define-runtime-path courier-new-patch "patches/courier-new.patch") @@ -131,20 +125,27 @@ ;; Avoid crash when CTFontCollectionCreateMatchingFontDescriptors fails: (define-runtime-path coretext-nullarray "patches/coretext-nullarray.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") + ;; Enable "symbol" fonts, and fix off-by-one: (define-runtime-path win32text-patch "patches/win32text.patch") -;; Fix a problem with a surface connected to a clipped drawing context -(define-runtime-path win32cairofallback-patch "patches/win32cairofallback.patch") +;; Disable emoji-specific font, which intereferes with substitutions +;; (i.e., auto-find a suitable font) as implemented by `racket/draw` +(define-runtime-path pango-emoji-patch "patches/pango-emoji.patch") ;; Needed when building with old GCC, such as 4.0: (define-runtime-path gmp-weak-patch "patches/gmp-weak.patch") -;; XP doesn't have rand_s() as used by glib: -(define-runtime-path rand-patch "patches/rand.patch") +;; Upstream patch to fix Win32 build: +(define-runtime-path glib-win32-weekday-patch "patches/glib-win32-weekday.patch") -;; HarfBuzz makefile seems broken for MinGW as of 0.9.27: -(define-runtime-path fixdef-patch "patches/fixdef.patch") +;; strerror_s is not available in XP +(define-runtime-path glib-strerror-patch "patches/glib-strerror.patch") + +;; For now, disable glib functionality that depends on Mac OS 10.8: +(define-runtime-path gcocoanotify-patch "patches/gcocoanotify.patch") ;; Remove "-fno-check-new", which Clang does not recognize: (define-runtime-path nonochecknew-patch "patches/nonochecknew.patch") @@ -318,7 +319,7 @@ (if linux? (~a "make SHARED_LDFLAGS=" "-Wl,-rpath," dest "/lib") "make")) - (config #:configure-exe (find-executable-path "sh") + (config #:configure-exe (find-executable-path "perl") #:configure (cond [win? (list "./Configure" @@ -340,7 +341,11 @@ "shared" "linux-x86_64")]) #:make make - #:make-install (~a make " install_sw"))] + #:make-install (~a make " install_sw") + #:fixup (and win? + (~a "cd " (build-path dest "bin") + " && mv libssl-1_1" (if m32? "" "-x64") ".dll ssleay32.dll" + " && mv libcrypto-1_1" (if m32? "" "-x64") ".dll libeay32.dll")))] [("expat") (config)] [("gettext") (config #:depends (if win? '("libiconv") '()) #:configure '("--enable-languages=c") @@ -405,59 +410,86 @@ (~a "cp zlib1.dll " dest "/bin && cp libz.dll.a " dest "/lib")))] [("glib") (config #:depends (append '("libffi" "gettext") (if win? '("libiconv") '())) + #:configure (append '("--with-pcre=internal") + (if linux? '("--enable-libmount=no") '())) #:env (append path-flags ;; Disable Valgrind support, which particularly ;; goes wrong for 64-bit Windows builds. (list (list "CPPFLAGS" "-DNVALGRIND=1"))) - #:patches (if (and win? m32?) - (list rand-patch) - null))] + #:patches (cond + [win? (list glib-win32-weekday-patch + glib-strerror-patch)] + [mac? (list gcocoanotify-patch)] + [else null]))] [("libpng") (config #:depends (if (or win? linux?) '("zlib") '()) #:env (if (or linux? win?) - (append - path-flags - (if linux? - (list (list "LDFLAGS" (~a "-Wl,-rpath," dest "/lib"))) - null)) - null))] + (append + path-flags + (if linux? + (list (list "LDFLAGS" (~a "-Wl,-rpath," dest "/lib"))) + null)) + null))] + [("libuuid") (config)] [("freetype") (config #:depends '("libpng"))] - [("fontconfig") (config #:depends '("expat" "freetype") - #:configure '("--disable-docs") + [("fontconfig") (config #:depends (append '("expat" "freetype") + (if win? '() '("libuuid"))) + #:configure (append '("--disable-docs") + (if win? + `("--without-libiconv-prefix" + "--without-libintl-prefix") + '())) #:patches (list fcdirs-patch))] [("pixman") (config #:patches (if (and win? (not m32?)) (list noforceinline-patch) null))] - [("cairo") (config #:depends (append '("pixman" "fontconfig" "freetype" "libpng") - (if linux? - '("libX11" "libXrender") - null)) - #:env path-flags - #:configure (if (not linux?) - '("--enable-xlib=no") - null) - #:patches (list cairo-coretext-patch - cairo-cgfontgetglpyh-patch - cairo-allclipmodifybug-patch - courier-new-patch - win32cairofallback-patch))] + [("cairo") + (when mac? + (define zlib.pc (build-path dest "lib" "pkgconfig" "zlib.pc")) + (unless (file-exists? zlib.pc) + (call-with-output-file* + zlib.pc + (lambda (o) (write-string "Name: zlib\nDescription: zlib\nVersion: 1.0\nLibs: -lz\nLibs.private:\nCflags:\n" o))))) + (config #:depends (append '("pixman" "fontconfig" "freetype" "libpng") + (if linux? + '("libX11" "libXrender") + null)) + #:env path-flags + #:configure (append + (if (not linux?) + '("--enable-xlib=no") + null) + '("png_REQUIRES=libpng16") + (if mac? + '("CFLAGS=-include Kernel/uuid/uuid.h") + '())) + #:patches (list cairo-coretext-patch + courier-new-patch))] [("harfbuzz") (config #:depends '("fontconfig" "freetype" "cairo") #:configure '("--without-icu") - #:patches (if win? - (list fixdef-patch) - null) #:env cxx-env)] - [("pango") (config #:depends '("cairo" "harfbuzz") + [("fribidi") (config #:configure '("--disable-docs"))] + [("pango") (config #:depends '("cairo" "harfbuzz" "fribidi") #:env (if win? path-flags null) #:configure (append (if (not linux?) '("--without-x") null) '("--with-included-modules=yes" - "--with-dynamic-modules=no")) - #:patches (list coretext-patch - coretext-fontreg-patch - coretext-nullarray - win32text-patch))] + "--with-dynamic-modules=no") + (if mac? + '("CFLAGS=-include Kernel/uuid/uuid.h") + '())) + #:patches (append + (list coretext-patch + coretext-fontreg-patch + coretext-nullarray + win32text-patch) + (if (and mac? m32?) + (list pango-surrogate-patch) + null) + (if (or mac? win?) + (list pango-emoji-patch) + null)))] [("gmp") (config #:patches (if gcc-4.0? (list gmp-weak-patch) null) #:configure (append '("--enable-shared" "--disable-static") diff --git a/racket/src/native-libs/install.rkt b/racket/src/native-libs/install.rkt index 06f870bb89..5d65a9d0ff 100644 --- a/racket/src/native-libs/install.rkt +++ b/racket/src/native-libs/install.rkt @@ -13,8 +13,9 @@ "libgthread-2.0.0" "libglib-2.0.0" "libgobject-2.0.0" - "libintl.8" + "libintl.9" "libharfbuzz.0" + "libfribidi.0" "libpango-1.0.0" "libpangocairo-1.0.0" "libpangoft2-1.0.0" @@ -40,8 +41,9 @@ "libpangowin32-1.0.0")) (define nonwin-libs - '("libcrypto.1.0.0" - "libssl.1.0.0")) + '("libcrypto.1.1" + "libssl.1.1" + "libuuid.1")) (define linux-libs (append @@ -60,11 +62,11 @@ "libatk-1.0.0" "libgdk_pixbuf-2.0.0"))) (define linux-remove-libs - '("libintl.8")) + '("libintl.9")) (define package-mapping `(["draw" ; pkg name - "-2" ; pkg suffix (increment after "-" when library versions change) + "-3" ; pkg suffix (increment after "-" when library versions change) "racket/draw" ; subdir "" ; extra for "LICENSE.txt" #t ; dynamic libraries (as opposed to shared files) @@ -77,11 +79,13 @@ "libgthread" ["libintl" "libintl is released under the GNU Library General Public License (GNU LGPL)."] ["libharfbuzz" "HarfBuzz is relased under a MIT license."] + ["libfribidi" "FriBidi is released under the GNU Library General Public License (GNU LGPL)."] ["libpango" "Pango is released under the GNU Library General Public License (GNU LGPL)."] "libpangocairo" "libpangoft2" "libpangowin32" "libexpat" + ["libuuid" "libuuid is relased under a Modified BSD license."] ["libfontconfig" ,(~a "FontConfig:\n" " Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard\n" " Copyright © 2005 Patrick Lam\n" @@ -97,7 +101,7 @@ ["zlib1" "zlib is by Jean-loup Gailly and Mark Adler."] ["libz" "zlib is by Jean-loup Gailly and Mark Adler."])] ["racket" - "-2" + "-3" "racket" "" #t @@ -293,7 +297,8 @@ (~a pkg "-" platform suffix) subdir)) (define dest (build-path dir p)) - (make-directory* dir) + (let-values ([(base name dir?) (split-path dest)]) + (make-directory* base)) (cond [(file-exists? dest) (delete-file dest)] [(directory-exists? dest) (delete-directory/files dest)]) @@ -356,8 +361,8 @@ (environment-variables-copy (current-environment-variables))]) (putenv "PATH" (~a (if m32? - "/usr/mw32/bin:" - "/usr/mw64/bin:") + "/usr/local/mw32/bin:/usr/mw32/bin:" + "/usr/local/mw64/bin:/usr/mw64/bin:") (getenv "PATH"))) (install (~a "win32-" (if m32? "i386" "x86_64")) diff --git a/racket/src/native-libs/patches/allclipmodifybug.patch b/racket/src/native-libs/patches/allclipmodifybug.patch deleted file mode 100644 index 3824c8fef3..0000000000 --- a/racket/src/native-libs/patches/allclipmodifybug.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -u -r old/cairo-1.12.16/src/cairo-clip-boxes.c new/cairo-1.12.16/src/cairo-clip-boxes.c ---- old/cairo-1.12.16/src/cairo-clip-boxes.c 2015-11-06 15:46:30.000000000 -0700 -+++ new/cairo-1.12.16/src/cairo-clip-boxes.c 2015-11-06 15:47:36.000000000 -0700 -@@ -172,8 +172,11 @@ - if (clip->path == NULL) { - clip->extents = *r; - } else { -- if (! _cairo_rectangle_intersect (&clip->extents, r)) -+ if (! _cairo_rectangle_intersect (&clip->extents, r)) { - clip = _cairo_clip_set_all_clipped (clip); -+ /* return so that there's no attempt to modify `clip`: */ -+ return clip; -+ } - } - if (clip->path == NULL) - clip->is_region = _cairo_box_is_pixel_aligned (box); -Only in new/cairo-1.12.16/src: cairo-clip-boxes.c~ diff --git a/racket/src/native-libs/patches/cgfontgetglyph.patch b/racket/src/native-libs/patches/cgfontgetglyph.patch deleted file mode 100644 index c936bb52f4..0000000000 --- a/racket/src/native-libs/patches/cgfontgetglyph.patch +++ /dev/null @@ -1,76 +0,0 @@ -diff -r -u old/cairo-1.12.16/src/cairo-quartz-font.c new/cairo-1.12.16/src/cairo-quartz-font.c ---- old/cairo-1.12.16/src/cairo-quartz-font.c 2015-11-04 15:21:19.000000000 -0700 -+++ new/cairo-1.12.16/src/cairo-quartz-font.c 2015-11-04 15:21:37.000000000 -0700 -@@ -81,9 +81,6 @@ - static void (*CGContextSetAllowsFontSmoothingPtr) (CGContextRef, bool) = NULL; - static bool (*CGContextGetAllowsFontSmoothingPtr) (CGContextRef) = NULL; - --/* Not public in the least bit */ --static CGPathRef (*CGFontGetGlyphPathPtr) (CGFontRef fontRef, CGAffineTransform *textTransform, int unknown, CGGlyph glyph) = NULL; -- - /* CGFontGetHMetrics isn't public, but the other functions are public/present in 10.5 */ - typedef struct { - int ascent; -@@ -131,7 +128,6 @@ - /* These have the same name in 10.4 and 10.5 */ - CGFontGetUnitsPerEmPtr = dlsym(RTLD_DEFAULT, "CGFontGetUnitsPerEm"); - CGFontGetGlyphAdvancesPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphAdvances"); -- CGFontGetGlyphPathPtr = dlsym(RTLD_DEFAULT, "CGFontGetGlyphPath"); - - CGFontGetHMetricsPtr = dlsym(RTLD_DEFAULT, "CGFontGetHMetrics"); - CGFontGetAscentPtr = dlsym(RTLD_DEFAULT, "CGFontGetAscent"); -@@ -148,7 +144,6 @@ - CGFontGetGlyphsForUnicharsPtr && - CGFontGetUnitsPerEmPtr && - CGFontGetGlyphAdvancesPtr && -- CGFontGetGlyphPathPtr && - (CGFontGetHMetricsPtr || (CGFontGetAscentPtr && CGFontGetDescentPtr && CGFontGetLeadingPtr))) - _cairo_quartz_font_symbols_present = TRUE; - -@@ -592,6 +587,8 @@ - CGGlyph glyph = _cairo_quartz_scaled_glyph_index (scaled_glyph); - CGAffineTransform textMatrix; - CGPathRef glyphPath; -+ CTFontRef ctFont; -+ int empty_path; - cairo_path_fixed_t *path; - - if (glyph == INVALID_GLYPH) { -@@ -606,19 +603,32 @@ - -font->base.scale.yy, - 0, 0); - -- glyphPath = CGFontGetGlyphPathPtr (font_face->cgFont, &textMatrix, 0, glyph); -- if (!glyphPath) -+ ctFont = CTFontCreateWithGraphicsFont (font_face->cgFont, 1.0, NULL, NULL); -+ glyphPath = CTFontCreatePathForGlyph (ctFont, glyph, &textMatrix); -+ empty_path = 0; -+ if (!glyphPath) { -+ /* an empty glyph path may just reflect whitespace; check bounding rects */ -+ CGRect r; -+ r = CTFontGetBoundingRectsForGlyphs(ctFont, kCTFontHorizontalOrientation, &glyph, NULL, 1); -+ if (memcmp(&CGRectNull, &r, sizeof(CGRect))) -+ empty_path = 1; -+ } -+ CFRelease (ctFont); -+ if (!glyphPath && !empty_path) - return CAIRO_INT_STATUS_UNSUPPORTED; - - path = _cairo_path_fixed_create (); - if (!path) { -- CGPathRelease (glyphPath); -+ if (glyphPath) -+ CGPathRelease (glyphPath); - return _cairo_error(CAIRO_STATUS_NO_MEMORY); - } - -- CGPathApply (glyphPath, path, _cairo_quartz_path_apply_func); -+ if (glyphPath) -+ CGPathApply (glyphPath, path, _cairo_quartz_path_apply_func); - -- CGPathRelease (glyphPath); -+ if (glyphPath) -+ CGPathRelease (glyphPath); - - _cairo_scaled_glyph_set_path (scaled_glyph, &font->base, path); - diff --git a/racket/src/native-libs/patches/coretext.patch b/racket/src/native-libs/patches/coretext.patch index a237a1f292..a266eddc12 100644 --- a/racket/src/native-libs/patches/coretext.patch +++ b/racket/src/native-libs/patches/coretext.patch @@ -1,7 +1,23 @@ -diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modules/basic/basic-coretext.c ---- old/pango-1.36.6/modules/basic/basic-coretext.c 2014-08-16 07:15:21.000000000 -0600 -+++ new/pango-1.36.6/modules/basic/basic-coretext.c 2014-08-27 18:47:22.000000000 -0600 -@@ -56,7 +56,8 @@ +diff -u -r orig/pango-1.42.0/pango/pangocairo-coretextfont.c next/pango-1.42.0/pango/pangocairo-coretextfont.c +--- orig/pango-1.42.0/pango/pangocairo-coretextfont.c 2017-08-15 15:53:10.000000000 -0600 ++++ next/pango-1.42.0/pango/pangocairo-coretextfont.c 2018-03-28 21:15:02.000000000 -0600 +@@ -145,6 +145,12 @@ + metrics->strikethrough_position = metrics->ascent / 3; + metrics->strikethrough_thickness = CTFontGetUnderlineThickness (ctfont) * PANGO_SCALE; + ++ metrics->underline_position = -metrics->underline_position; ++ pango_quantize_line_geometry (&metrics->underline_thickness, ++ &metrics->underline_position); ++ metrics->underline_position = -(metrics->underline_position ++ + metrics->underline_thickness); ++ + layout = pango_layout_new (context); + font_desc = pango_font_describe_with_absolute_size ((PangoFont *) font); + pango_layout_set_font_description (layout, font_desc); +diff -u -r orig/pango-1.42.0/pango/pangocoretext-shape.c next/pango-1.42.0/pango/pangocoretext-shape.c +--- orig/pango-1.42.0/pango/pangocoretext-shape.c 2016-10-21 23:00:41.000000000 -0600 ++++ next/pango-1.42.0/pango/pangocoretext-shape.c 2018-03-28 21:22:58.000000000 -0600 +@@ -34,7 +34,8 @@ PangoGlyphString *glyphs, int i, int offset, @@ -11,7 +27,7 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu { PangoRectangle logical_rect; -@@ -66,8 +67,13 @@ +@@ -44,8 +45,13 @@ glyphs->glyphs[i].geometry.y_offset = 0; glyphs->log_clusters[i] = offset; @@ -27,7 +43,7 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu } -@@ -94,6 +100,8 @@ +@@ -74,6 +80,8 @@ CFIndex *current_indices; const CGGlyph *current_cgglyphs; CGGlyph *current_cgglyphs_buffer; @@ -36,7 +52,7 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu CTRunStatus current_run_status; }; -@@ -106,6 +114,9 @@ +@@ -86,6 +94,9 @@ if (iter->current_cgglyphs_buffer) free (iter->current_cgglyphs_buffer); iter->current_cgglyphs_buffer = NULL; @@ -46,7 +62,7 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu if (iter->current_indices) free (iter->current_indices); iter->current_indices = NULL; -@@ -133,6 +144,15 @@ +@@ -113,6 +124,15 @@ iter->current_cgglyphs = iter->current_cgglyphs_buffer; } @@ -62,26 +78,7 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu iter->current_indices = malloc (sizeof (CFIndex) * ct_glyph_count); CTRunGetStringIndices (iter->current_run, CFRangeMake (0, ct_glyph_count), iter->current_indices); -@@ -179,7 +199,17 @@ - static gunichar - run_iterator_get_character (struct RunIterator *iter) - { -- return CFStringGetCharacterAtIndex (iter->cstr, iter->current_indices[iter->ct_i]); -+ gunichar c; -+ -+ c = CFStringGetCharacterAtIndex (iter->cstr, iter->current_indices[iter->ct_i]); -+ if ((c >= 0xD800) && (c <= 0xDFFF)) { -+ /* surrogate pair */ -+ gunichar c2; -+ c2 = CFStringGetCharacterAtIndex (iter->cstr, iter->current_indices[iter->ct_i]+1); -+ c = 0x10000 + (((c & 0x3FF) << 10) | (c2 & 0x3FF)); -+ } -+ -+ return c; - } - - static CGGlyph -@@ -188,6 +218,12 @@ +@@ -208,6 +228,12 @@ return iter->current_cgglyphs[iter->ct_i]; } @@ -94,15 +91,15 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu static CFIndex run_iterator_get_index (struct RunIterator *iter) { -@@ -218,6 +254,7 @@ - iter->current_indices = NULL; +@@ -239,6 +265,7 @@ + iter->chr_idx_lut = NULL; iter->current_cgglyphs = NULL; iter->current_cgglyphs_buffer = NULL; + iter->current_cgadvs_buffer = NULL; /* Create CTLine */ attributes = CFDictionaryCreate (kCFAllocatorDefault, -@@ -311,6 +348,7 @@ +@@ -336,6 +363,7 @@ { CFIndex index; CGGlyph cgglyph; @@ -110,7 +107,7 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu gunichar wc; }; -@@ -352,6 +390,7 @@ +@@ -377,6 +405,7 @@ gi = g_slice_new (struct GlyphInfo); gi->index = run_iterator_get_index (&riter); gi->cgglyph = run_iterator_get_cgglyph (&riter); @@ -118,16 +115,16 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu gi->wc = run_iterator_get_character (&riter); glyph_list = g_slist_prepend (glyph_list, gi); -@@ -440,7 +479,7 @@ - if (gi == NULL || gi->index > gs_i) - { - /* gs_i is behind, insert empty glyph */ +@@ -466,7 +495,7 @@ + * up with the CoreText glyph list. This occurs for instance when + * CoreText inserts a ligature that covers two characters. + */ - set_glyph (font, glyphs, gs_i, p - text, PANGO_GLYPH_EMPTY); + set_glyph (font, glyphs, gs_i, p - text, PANGO_GLYPH_EMPTY, NULL); continue; } else if (gi->index < gs_i) -@@ -471,7 +510,7 @@ +@@ -502,7 +531,7 @@ if (result != PANGO_COVERAGE_NONE) { @@ -136,7 +133,7 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu if (g_unichar_type (gi->wc) == G_UNICODE_NON_SPACING_MARK) { -@@ -494,7 +533,7 @@ +@@ -525,7 +554,7 @@ } } else @@ -145,64 +142,3 @@ diff -r -u old/pango-1.36.6/modules/basic/basic-coretext.c new/pango-1.36.6/modu glyph_iter = g_slist_next (glyph_iter); } -diff -r -u old/pango-1.36.6/pango/pangocairo-coretextfont.c new/pango-1.36.6/pango/pangocairo-coretextfont.c ---- old/pango-1.36.6/pango/pangocairo-coretextfont.c 2014-03-05 21:33:55.000000000 -0700 -+++ new/pango-1.36.6/pango/pangocairo-coretextfont.c 2014-08-27 18:13:16.000000000 -0600 -@@ -147,6 +147,12 @@ - metrics->strikethrough_position = metrics->ascent / 3; - metrics->strikethrough_thickness = CTFontGetUnderlineThickness (ctfont) * PANGO_SCALE; - -+ metrics->underline_position = -metrics->underline_position; -+ pango_quantize_line_geometry (&metrics->underline_thickness, -+ &metrics->underline_position); -+ metrics->underline_position = -(metrics->underline_position -+ + metrics->underline_thickness); -+ - layout = pango_layout_new (context); - font_desc = pango_font_describe_with_absolute_size ((PangoFont *) font); - pango_layout_set_font_description (layout, font_desc); -diff -r -u old/pango-1.36.6/pango/pangocairo-coretextfontmap.c new/pango-1.36.6/pango/pangocairo-coretextfontmap.c ---- old/pango-1.36.6/pango/pangocairo-coretextfontmap.c 2014-03-05 21:33:55.000000000 -0700 -+++ new/pango-1.36.6/pango/pangocairo-coretextfontmap.c 2014-08-27 18:13:16.000000000 -0600 -@@ -186,5 +186,5 @@ - pango_cairo_core_text_font_map_init (PangoCairoCoreTextFontMap *cafontmap) - { - cafontmap->serial = 1; -- cafontmap->dpi = 96.; -+ cafontmap->dpi = 72.; - } -diff -r -u old/pango-1.36.6/pango/pangocoretext-fontmap.c new/pango-1.36.6/pango/pangocoretext-fontmap.c ---- old/pango-1.36.6/pango/pangocoretext-fontmap.c 2014-08-01 00:49:36.000000000 -0600 -+++ new/pango-1.36.6/pango/pangocoretext-fontmap.c 2014-08-27 18:13:16.000000000 -0600 -@@ -298,7 +298,8 @@ - cf_number = (CFNumberRef)CFDictionaryGetValue (dict, - kCTFontWeightTrait); - -- if (CFNumberGetValue (cf_number, kCFNumberCGFloatType, &value)) -+ weight = PANGO_WEIGHT_NORMAL; -+ if (cf_number && CFNumberGetValue (cf_number, kCFNumberCGFloatType, &value)) - { - if (value < ct_weight_min || value > ct_weight_max) - { -@@ -317,8 +318,6 @@ - } - } - } -- else -- weight = PANGO_WEIGHT_NORMAL; - - CFRelease (dict); - -diff -r -u old/pango-1.36.6/pango/pangocoretext.c new/pango-1.36.6/pango/pangocoretext.c ---- old/pango-1.36.6/pango/pangocoretext.c 2014-03-05 21:33:55.000000000 -0700 -+++ new/pango-1.36.6/pango/pangocoretext.c 2014-08-27 18:13:16.000000000 -0600 -@@ -97,8 +97,7 @@ - bitmap = CFCharacterSetCreateBitmapRepresentation (kCFAllocatorDefault, - charset); - -- /* We only handle the BMP plane */ -- length = MIN (CFDataGetLength (bitmap), 8192); -+ length = CFDataGetLength (bitmap); - ptr = CFDataGetBytePtr (bitmap); - - /* FIXME: can and should this be done more efficiently? */ diff --git a/racket/src/native-libs/patches/fcdirs.patch b/racket/src/native-libs/patches/fcdirs.patch index 9459c62a90..c4be40b96e 100644 --- a/racket/src/native-libs/patches/fcdirs.patch +++ b/racket/src/native-libs/patches/fcdirs.patch @@ -1,8 +1,8 @@ -diff -u -r old/fontconfig-2.11.1/fontconfig/fontconfig.h new/fontconfig-2.11.1/fontconfig/fontconfig.h ---- old/fontconfig-2.11.1/fontconfig/fontconfig.h 2014-10-07 06:54:53.000000000 -0600 -+++ new/fontconfig-2.11.1/fontconfig/fontconfig.h 2014-10-07 17:44:20.000000000 -0600 -@@ -342,6 +342,9 @@ - FcCacheCreateTagFile (const FcConfig *config); +diff -u -r orig/fontconfig-2.13.0/fontconfig/fontconfig.h next/fontconfig-2.13.0/fontconfig/fontconfig.h +--- orig/fontconfig-2.13.0/fontconfig/fontconfig.h 2018-03-05 20:31:12.000000000 -0700 ++++ next/fontconfig-2.13.0/fontconfig/fontconfig.h 2018-03-28 20:11:52.000000000 -0600 +@@ -377,6 +377,9 @@ + FcConfig *config); /* fccfg.c */ +FcPublic void @@ -11,7 +11,7 @@ diff -u -r old/fontconfig-2.11.1/fontconfig/fontconfig.h new/fontconfig-2.11.1/f FcPublic FcChar8 * FcConfigHome (void); -@@ -582,6 +585,9 @@ +@@ -635,6 +638,9 @@ FcPublic void FcFini (void); @@ -21,11 +21,11 @@ diff -u -r old/fontconfig-2.11.1/fontconfig/fontconfig.h new/fontconfig-2.11.1/f FcPublic int FcGetVersion (void); -Only in new/fontconfig-2.11.1/fontconfig: fontconfig.h~ -diff -u -r old/fontconfig-2.11.1/src/fccfg.c new/fontconfig-2.11.1/src/fccfg.c ---- old/fontconfig-2.11.1/src/fccfg.c 2014-10-07 06:54:53.000000000 -0600 -+++ new/fontconfig-2.11.1/src/fccfg.c 2014-10-07 17:44:11.000000000 -0600 -@@ -1834,6 +1834,22 @@ +Only in next/fontconfig-2.13.0/fontconfig: fontconfig.h.orig +diff -u -r orig/fontconfig-2.13.0/src/fccfg.c next/fontconfig-2.13.0/src/fccfg.c +--- orig/fontconfig-2.13.0/src/fccfg.c 2018-02-04 04:01:46.000000000 -0700 ++++ next/fontconfig-2.13.0/src/fccfg.c 2018-03-28 20:11:52.000000000 -0600 +@@ -1914,6 +1914,22 @@ #define FONTCONFIG_FILE "fonts.conf" #endif @@ -48,7 +48,7 @@ diff -u -r old/fontconfig-2.11.1/src/fccfg.c new/fontconfig-2.11.1/src/fccfg.c static FcChar8 * FcConfigFileExists (const FcChar8 *dir, const FcChar8 *file) { -@@ -1935,7 +1951,7 @@ +@@ -2015,7 +2031,7 @@ strcat ((char *) fontconfig_path, "\\fonts"); } #endif @@ -57,11 +57,11 @@ diff -u -r old/fontconfig-2.11.1/src/fccfg.c new/fontconfig-2.11.1/src/fccfg.c path[i] = malloc (strlen ((char *) dir) + 1); if (!path[i]) goto bail1; -Only in new/fontconfig-2.11.1/src: fccfg.c~ -diff -u -r old/fontconfig-2.11.1/src/fcinit.c new/fontconfig-2.11.1/src/fcinit.c ---- old/fontconfig-2.11.1/src/fcinit.c 2014-10-07 06:54:53.000000000 -0600 -+++ new/fontconfig-2.11.1/src/fcinit.c 2014-10-07 17:43:44.000000000 -0600 -@@ -35,6 +35,26 @@ +Only in next/fontconfig-2.13.0/src: fccfg.c.orig +diff -u -r orig/fontconfig-2.13.0/src/fcinit.c next/fontconfig-2.13.0/src/fcinit.c +--- orig/fontconfig-2.13.0/src/fcinit.c 2018-02-04 21:28:01.000000000 -0700 ++++ next/fontconfig-2.13.0/src/fcinit.c 2018-03-28 20:15:42.000000000 -0600 +@@ -35,25 +35,52 @@ #pragma message("To suppress these warnings, define FC_NO_MT.") #endif @@ -86,29 +86,43 @@ diff -u -r old/fontconfig-2.11.1/src/fcinit.c new/fontconfig-2.11.1/src/fcinit.c +} + static FcConfig * - FcInitFallbackConfig (void) + FcInitFallbackConfig (const FcChar8 *sysroot) { -@@ -43,9 +63,13 @@ + FcConfig *config; + const FcChar8 *fallback = (const FcChar8 *) "" \ + "" \ +- " " FC_DEFAULT_FONTS "" \ ++ " " "%s" "" \ + " fonts" \ +- " " FC_CACHEDIR "" \ ++ " " "%s" "" \ + " fontconfig" \ + " fontconfig/conf.d" \ + " fontconfig/fonts.conf" \ + ""; ++ const char *default_fonts, *cache_dir, *fallback_s; ++ ++ default_fonts = (fc_default_fonts ? fc_default_fonts : (const FcChar8 *)FC_DEFAULT_FONTS); ++ cache_dir = (fc_cachedir ? fc_cachedir : (const FcChar8 *)FC_CACHEDIR); ++ ++ fallback_s = malloc(strlen(fallback) + strlen(default_fonts) + strlen(cache_dir) + 1); ++ sprintf(fallback_s, fallback, default_fonts, cache_dir); + config = FcConfigCreate (); if (!config) goto bail0; -- if (!FcConfigAddDir (config, (FcChar8 *) FC_DEFAULT_FONTS)) -+ if (!FcConfigAddDir (config, (fc_default_fonts -+ ? fc_default_fonts -+ : (const FcChar8 *)FC_DEFAULT_FONTS))) + FcConfigSetSysRoot (config, sysroot); +- if (!FcConfigParseAndLoadFromMemory (config, fallback, FcFalse)) ++ if (!FcConfigParseAndLoadFromMemory (config, fallback_s, FcFalse)) goto bail1; -- if (!FcConfigAddCacheDir (config, (FcChar8 *) FC_CACHEDIR)) -+ if (!FcConfigAddCacheDir (config, (fc_cachedir -+ ? fc_cachedir -+ : (const FcChar8 *)FC_CACHEDIR))) - goto bail1; - return config; -Only in new/fontconfig-2.11.1/src: fcinit.c~ -diff -u -r old/fontconfig-2.11.1/src/fcint.h new/fontconfig-2.11.1/src/fcint.h ---- old/fontconfig-2.11.1/src/fcint.h 2014-10-07 06:54:53.000000000 -0600 -+++ new/fontconfig-2.11.1/src/fcint.h 2014-10-07 09:42:02.000000000 -0600 -@@ -605,6 +605,9 @@ + return config; +Only in next/fontconfig-2.13.0/src: fcinit.c.orig +Only in next/fontconfig-2.13.0/src: fcinit.c.rej +diff -u -r orig/fontconfig-2.13.0/src/fcint.h next/fontconfig-2.13.0/src/fcint.h +--- orig/fontconfig-2.13.0/src/fcint.h 2018-02-04 03:20:56.000000000 -0700 ++++ next/fontconfig-2.13.0/src/fcint.h 2018-03-28 20:11:52.000000000 -0600 +@@ -647,6 +647,9 @@ FcPrivate FcChar8 * FcConfigXdgDataHome (void); @@ -118,7 +132,7 @@ diff -u -r old/fontconfig-2.11.1/src/fcint.h new/fontconfig-2.11.1/src/fcint.h FcPrivate FcExpr * FcConfigAllocExpr (FcConfig *config); -@@ -806,6 +809,9 @@ +@@ -878,6 +881,9 @@ FcPrivate void FcDefaultFini (void); @@ -128,19 +142,24 @@ diff -u -r old/fontconfig-2.11.1/src/fcint.h new/fontconfig-2.11.1/src/fcint.h /* fcdir.c */ FcPrivate FcBool -Only in new/fontconfig-2.11.1/src: fcint.h~ -diff -u -r old/fontconfig-2.11.1/src/fcxml.c new/fontconfig-2.11.1/src/fcxml.c ---- old/fontconfig-2.11.1/src/fcxml.c 2014-10-07 06:54:53.000000000 -0600 -+++ new/fontconfig-2.11.1/src/fcxml.c 2014-10-07 09:42:42.000000000 -0600 -@@ -1997,6 +1997,10 @@ - attr = FcConfigGetAttribute (parse, "prefix"); - if (attr && FcStrCmp (attr, (const FcChar8 *)"xdg") == 0) - prefix = FcConfigXdgDataHome (); -+ if (attr && FcStrCmp (attr, (const FcChar8 *)"cfg") == 0) -+ prefix = FcConfigDir (); -+ if (attr && FcStrCmp (attr, (const FcChar8 *)"cache") == 0) -+ prefix = FcFallbackCacheDir (); +Only in next/fontconfig-2.13.0/src: fcint.h.orig +diff -u -r orig/fontconfig-2.13.0/src/fcxml.c next/fontconfig-2.13.0/src/fcxml.c +--- orig/fontconfig-2.13.0/src/fcxml.c 2018-02-04 04:01:55.000000000 -0700 ++++ next/fontconfig-2.13.0/src/fcxml.c 2018-03-28 20:16:52.000000000 -0600 +@@ -2080,6 +2080,14 @@ + if (!prefix) + goto bail; + } ++ if (attr && FcStrCmp (attr, (const FcChar8 *)"cfg") == 0) { ++ prefix = FcConfigDir (); ++ if (!prefix) goto bail; ++ } ++ if (attr && FcStrCmp (attr, (const FcChar8 *)"cache") == 0) { ++ prefix = FcFallbackCacheDir (); ++ if (!prefix) goto bail; ++ } data = FcStrBufDoneStatic (&parse->pstack->str); if (!data) { -Only in new/fontconfig-2.11.1/src: fcxml.c~ +Only in next/fontconfig-2.13.0/src: fcxml.c.orig +Only in next/fontconfig-2.13.0/src: fcxml.c.rej diff --git a/racket/src/native-libs/patches/fixdef.patch b/racket/src/native-libs/patches/fixdef.patch deleted file mode 100644 index 95dfbff981..0000000000 --- a/racket/src/native-libs/patches/fixdef.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -r -u old/harfbuzz-0.9.27/src/Makefile.in new/harfbuzz-0.9.27/src/Makefile.in ---- old/harfbuzz-0.9.27/src/Makefile.in 2014-03-31 09:23:00.000000000 -0600 -+++ new/harfbuzz-0.9.27/src/Makefile.in 2014-03-31 09:23:27.000000000 -0600 -@@ -2234,7 +2234,7 @@ - "$<" \ - > "$@.tmp" && mv "$@.tmp" "$@" || ( $(RM) "$@.tmp"; false ) - harfbuzz.def: $(HBHEADERS) $(HBNODISTHEADERS) -- $(AM_V_GEN) (echo EXPORTS; \ -+ $(AM_V_GEN) ( \ - (cat $^ || echo 'hb_ERROR ()' ) | \ - $(EGREP) '^hb_.* \(' | \ - sed -e 's/ (.*//' | \ diff --git a/racket/src/native-libs/patches/gcocoanotify.patch b/racket/src/native-libs/patches/gcocoanotify.patch new file mode 100644 index 0000000000..027d52cedd --- /dev/null +++ b/racket/src/native-libs/patches/gcocoanotify.patch @@ -0,0 +1,65 @@ +diff -u -r old/glib-2.56.0/gio/gcocoanotificationbackend.c new/glib-2.56.0/gio/gcocoanotificationbackend.c +--- old/glib-2.56.0/gio/gcocoanotificationbackend.c 2017-07-13 17:03:38.000000000 -0600 ++++ new/glib-2.56.0/gio/gcocoanotificationbackend.c 2018-03-28 18:57:37.000000000 -0600 +@@ -104,6 +104,7 @@ + } + } + ++#if 0 + @interface GNotificationCenterDelegate : NSObject @end + @implementation GNotificationCenterDelegate + +@@ -130,6 +131,7 @@ + @end + + static GNotificationCenterDelegate *cocoa_notification_delegate; ++#endif + + static gboolean + g_cocoa_notification_backend_is_supported (void) +@@ -143,6 +145,7 @@ + return TRUE; + } + ++#if 0 + static void + add_actions_to_notification (NSUserNotification *userNotification, + GNotification *notification) +@@ -196,12 +199,14 @@ + userNotification.userInfo = user_info; + [user_info release]; + } ++#endif + + static void + g_cocoa_notification_backend_send_notification (GNotificationBackend *backend, + const gchar *cstr_id, + GNotification *notification) + { ++#if 0 + NSString *str_title = nil, *str_text = nil, *str_id = nil; + NSImage *content = nil; + const char *cstr; +@@ -239,12 +244,14 @@ + [str_id release]; + [content release]; + [userNotification release]; ++#endif + } + + static void + g_cocoa_notification_backend_withdraw_notification (GNotificationBackend *backend, + const gchar *cstr_id) + { ++#if 0 + NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter]; + NSArray *notifications = [center deliveredNotifications]; + NSString *str_id = nsstring_from_cstr (cstr_id); +@@ -260,6 +267,7 @@ + + [notifications release]; + [str_id release]; ++#endif + } + + static void diff --git a/racket/src/native-libs/patches/glib-strerror.patch b/racket/src/native-libs/patches/glib-strerror.patch new file mode 100644 index 0000000000..b8523ff941 --- /dev/null +++ b/racket/src/native-libs/patches/glib-strerror.patch @@ -0,0 +1,50 @@ +diff -r -u orig/glib-2.56.0/glib/gstrfuncs.c next/glib-2.56.0/glib/gstrfuncs.c +--- orig/glib-2.56.0/glib/gstrfuncs.c 2018-01-08 13:34:19.000000000 -0800 ++++ next/glib-2.56.0/glib/gstrfuncs.c 2018-03-31 08:48:02.000000000 -0700 +@@ -1233,6 +1233,13 @@ + #endif + } + ++#if defined(G_OS_WIN32) ++# ifdef _WIN64 ++# define RKT_G_OS_WIN32 ++errno_t strerror_s(char *buffer, size_t numberOfElements, int errnum); ++# endif ++#endif ++ + /** + * g_strerror: + * @errnum: the system error number. See the standard C %errno +@@ -1282,7 +1289,7 @@ + gchar buf[1024]; + GError *error = NULL; + +-#if defined(G_OS_WIN32) ++#if defined(RKT_G_OS_WIN32) + strerror_s (buf, sizeof (buf), errnum); + msg = buf; + #elif defined(HAVE_STRERROR_R) +diff -r -u orig/glib-2.56.0/gmodule/gmodule-win32.c next/glib-2.56.0/gmodule/gmodule-win32.c +--- orig/glib-2.56.0/gmodule/gmodule-win32.c 2018-01-08 13:34:19.000000000 -0800 ++++ next/glib-2.56.0/gmodule/gmodule-win32.c 2018-03-31 08:57:49.000000000 -0700 +@@ -62,6 +62,20 @@ + g_free (error); + } + ++#ifdef _WIN64 ++BOOL SetThreadErrorMode(DWORD dwNewMode, LPDWORD lpOldMode); ++#else ++/* SetThreadErrorMode is not in XP */ ++# define SetThreadErrorMode rktSetThreadErrorMode ++static BOOL rktSetThreadErrorMode(DWORD dwNewMode, LPDWORD lpOldMode) ++{ ++ if (lpOldMode) ++ *lpOldMode = GetErrorMode(); ++ return SetErrorMode(dwNewMode); ++} ++#endif ++ ++ + /* --- functions --- */ + static gpointer + _g_module_open (const gchar *file_name, diff --git a/racket/src/native-libs/patches/glib-win32-weekday.patch b/racket/src/native-libs/patches/glib-win32-weekday.patch new file mode 100644 index 0000000000..26bdf18625 --- /dev/null +++ b/racket/src/native-libs/patches/glib-win32-weekday.patch @@ -0,0 +1,12 @@ +diff --git x/a/glib/gdatetime.c y/b/glib/gdatetime.c +index 2eda466..ba85038 100644 +--- x/a/glib/gdatetime.c ++++ y/b/glib/gdatetime.c +@@ -224,6 +224,7 @@ static const gint month_item[2][12] = + #define WEEKDAY_ABBR(d) (get_weekday_name_abbr (g_date_time_get_day_of_week (d))) + #define WEEKDAY_ABBR_IS_LOCALE FALSE + #define WEEKDAY_FULL(d) (get_weekday_name (g_date_time_get_day_of_week (d))) ++#define WEEKDAY_FULL_IS_LOCALE FALSE + /* We don't yet know if nl_langinfo (MON_n) returns standalone or complete-date + * format forms but if nl_langinfo (ALTMON_n) is not supported then we will + * have to use MONTH_FULL as standalone. The same if nl_langinfo () does not diff --git a/racket/src/native-libs/patches/libtool-link.patch b/racket/src/native-libs/patches/libtool-link.patch index 939730675c..6872676e24 100644 --- a/racket/src/native-libs/patches/libtool-link.patch +++ b/racket/src/native-libs/patches/libtool-link.patch @@ -22,8 +22,8 @@ diff -r -u old/poppler-0.24.5/libtool new/poppler-0.24.5/libtool # Dependencies to place before and after the objects being linked to # create a shared library. --predep_objects="/usr/mw32/bin/../lib/gcc/i686-w64-mingw32/4.9.0/../../../../i686-w64-mingw32/lib/../lib/dllcrt2.o /usr/mw32/bin/../lib/gcc/i686-w64-mingw32/4.9.0/crtbegin.o" --postdep_objects="/usr/mw32/bin/../lib/gcc/i686-w64-mingw32/4.9.0/crtend.o" +-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" +predep_objects="" +postdep_objects="" predeps="" diff --git a/racket/src/native-libs/patches/libtool64-link.patch b/racket/src/native-libs/patches/libtool64-link.patch index 6cdda7e982..064c472705 100644 --- a/racket/src/native-libs/patches/libtool64-link.patch +++ b/racket/src/native-libs/patches/libtool64-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-04 16:45:38.000000000 -0600 -+++ new/poppler-0.24.5/libtool 2014-04-04 16:46:07.000000000 -0600 +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="" @@ -22,8 +22,8 @@ diff -r -u old/poppler-0.24.5/libtool new/poppler-0.24.5/libtool # Dependencies to place before and after the objects being linked to # create a shared library. --predep_objects="/usr/mw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.0/../../../../x86_64-w64-mingw32/lib/../lib/dllcrt2.o /usr/mw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.0/../../../../x86_64-w64-mingw32/lib/../lib/crtbegin.o" --postdep_objects="/usr/mw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.0/../../../../x86_64-w64-mingw32/lib/../lib/crtend.o" +-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="" diff --git a/racket/src/native-libs/patches/pango-emoji.patch b/racket/src/native-libs/patches/pango-emoji.patch new file mode 100644 index 0000000000..8fb3548a36 --- /dev/null +++ b/racket/src/native-libs/patches/pango-emoji.patch @@ -0,0 +1,12 @@ +diff -u -r orig/pango-1.42.0/pango/pango-context.c next/pango-1.42.0/pango/pango-context.c +--- orig/pango-1.42.0/pango/pango-context.c 2017-08-12 17:40:19.000000000 -0500 ++++ next/pango-1.42.0/pango/pango-context.c 2018-04-04 19:24:05.000000000 -0500 +@@ -1388,7 +1388,7 @@ + + if (!state->current_fonts) + { +- gboolean is_emoji = state->emoji_iter.is_emoji; ++ gboolean is_emoji = 0; // state->emoji_iter.is_emoji; + if (is_emoji && !state->emoji_font_desc) + { + state->emoji_font_desc = pango_font_description_copy_static (state->font_desc); diff --git a/racket/src/native-libs/patches/pango-surrogate.patch b/racket/src/native-libs/patches/pango-surrogate.patch new file mode 100644 index 0000000000..96276c371d --- /dev/null +++ b/racket/src/native-libs/patches/pango-surrogate.patch @@ -0,0 +1,25 @@ +diff -r -u orig/pango-1.42.0/pango/pangocoretext-shape.c next/pango-1.42.0/pango/pangocoretext-shape.c +--- orig/pango-1.42.0/pango/pangocoretext-shape.c 2016-10-22 00:00:41.000000000 -0500 ++++ next/pango-1.42.0/pango/pangocoretext-shape.c 2018-04-04 20:07:01.000000000 -0500 +@@ -132,6 +132,21 @@ + return accumulator; + } + ++static gunichar CFStringGetLongCharacterForSurrogatePair(UniChar c, UniChar c2) ++{ ++ return 0x10000 + (((c & 0x3FF) << 10) | (c2 & 0x3FF)); ++} ++ ++static int CFStringIsSurrogateHighCharacter(UniChar c) ++{ ++ return ((c >= 0xD800) && (c <= 0xDBFF)); ++} ++ ++static int CFStringIsSurrogateLowCharacter(UniChar c) ++{ ++ return ((c >= 0xDC00) && (c <= 0xDFFF)); ++} ++ + /* This function generates a lookup table to match string indices of glyphs to + * actual unicode character indices. This also takes unicode characters into + * account that are encoded using 2 UTF16 code points in CFStrings. We use the diff --git a/racket/src/native-libs/patches/rand.patch b/racket/src/native-libs/patches/rand.patch deleted file mode 100644 index 636ddd7e21..0000000000 --- a/racket/src/native-libs/patches/rand.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -u -r old/glib-2.39.92/glib/grand.c new/glib-2.39.92/glib/grand.c ---- old/glib-2.39.92/glib/grand.c 2014-03-31 08:42:11.000000000 -0600 -+++ new/glib-2.39.92/glib/grand.c 2014-03-31 08:42:56.000000000 -0600 -@@ -264,7 +264,7 @@ - gint i; - - for (i = 0; i < G_N_ELEMENTS (seed); i++) -- rand_s (&seed[i]); -+ seed[i] = rand(); - #endif - - return g_rand_new_with_seed_array (seed, 4); - diff --git a/racket/src/native-libs/patches/win32cairofallback.patch b/racket/src/native-libs/patches/win32cairofallback.patch deleted file mode 100644 index e56c5893b6..0000000000 --- a/racket/src/native-libs/patches/win32cairofallback.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 844455c14f8e9e4767fd661e475a9c6fdea9d22e Mon Sep 17 00:00:00 2001 -From: Massimo Valentini -Date: Wed, 11 Sep 2013 18:10:38 +0200 -Subject: [PATCH] Bug 53121 - My program runs successfully with... - -Cairo-1.10.2, but getting SIGSEGV with 1.12.2. ---- - src/win32/cairo-win32-display-surface.c | 8 ++++---- - 1 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c -index 5ecdbee..965f2c4 100644 ---- a/cairo/src/win32/cairo-win32-display-surface.c -+++ b/cairo/src/win32/cairo-win32-display-surface.c -@@ -455,17 +455,17 @@ _cairo_win32_display_surface_map_to_image (void *abstract_sur - surface->fallback = - _cairo_win32_display_surface_create_for_dc (surface->win32.dc, - surface->win32.format, -- surface->win32.extents.width, -- surface->win32.extents.height); -+ surface->win32.extents.x + surface->win32.extents.width, -+ surface->win32.extents.y + surface->win32.extents.height); - if (unlikely (status = surface->fallback->status)) - goto err; - - if (!BitBlt (to_win32_surface(surface->fallback)->dc, -- 0, 0, -+ surface->win32.extents.x, surface->win32.extents.y, - surface->win32.extents.width, - surface->win32.extents.height, - surface->win32.dc, -- 0, 0, -+ surface->win32.extents.x, surface->win32.extents.y, - SRCCOPY)) { - status = _cairo_error (CAIRO_STATUS_DEVICE_ERROR); - goto err; --- -1.7.6.5 diff --git a/racket/src/native-libs/patches/win32text.patch b/racket/src/native-libs/patches/win32text.patch index e78cb86ce8..e8afafdbb9 100644 --- a/racket/src/native-libs/patches/win32text.patch +++ b/racket/src/native-libs/patches/win32text.patch @@ -1,6 +1,6 @@ -diff -r -u old/pango-1.36.3/modules/basic/basic-win32.c new/pango-1.36.3/modules/basic/basic-win32.c ---- old/pango-1.36.3/modules/basic/basic-win32.c 2014-04-01 09:45:50.000000000 -0600 -+++ new/pango-1.36.3/modules/basic/basic-win32.c 2014-04-01 09:49:32.000000000 -0600 +diff -r -u old/pango-1.36.3/pango/pangowin32-shape.c new/pango-1.36.3/pango/pangowin32-shape.c +--- old/pango-1.36.3/pango/pangowin32-shape.c 2014-04-01 09:45:50.000000000 -0600 ++++ new/pango-1.36.3/pango/pangowin32-shape.c 2014-04-01 09:49:32.000000000 -0600 @@ -468,7 +468,7 @@ g_print (G_STRLOC ": ScriptItemize: uDefaultLanguage:%04x uBidiLevel:%d\n", control.uDefaultLanguage, state.uBidiLevel);