upgrade native libraries
Update the build scripts, patches, and notes.
This commit is contained in:
parent
e0668d895b
commit
5bb2c1f16e
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 <archive-dir>
|
||||
|
||||
where <here-dir> 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 "<build-dir>/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 "<build-dir>/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.
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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~
|
|
@ -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);
|
||||
|
|
@ -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? */
|
||||
|
|
|
@ -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 *) "" \
|
||||
"<fontconfig>" \
|
||||
- " <dir>" FC_DEFAULT_FONTS "</dir>" \
|
||||
+ " <dir>" "%s" "</dir>" \
|
||||
" <dir prefix=\"xdg\">fonts</dir>" \
|
||||
- " <cachedir>" FC_CACHEDIR "</cachedir>" \
|
||||
+ " <cachedir>" "%s" "</cachedir>" \
|
||||
" <cachedir prefix=\"xdg\">fontconfig</cachedir>" \
|
||||
" <include ignore_missing=\"yes\" prefix=\"xdg\">fontconfig/conf.d</include>" \
|
||||
" <include ignore_missing=\"yes\" prefix=\"xdg\">fontconfig/fonts.conf</include>" \
|
||||
"</fontconfig>";
|
||||
+ 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
|
||||
|
|
|
@ -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/ (.*//' | \
|
65
racket/src/native-libs/patches/gcocoanotify.patch
Normal file
65
racket/src/native-libs/patches/gcocoanotify.patch
Normal file
|
@ -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<NSUserNotificationCenterDelegate> @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
|
50
racket/src/native-libs/patches/glib-strerror.patch
Normal file
50
racket/src/native-libs/patches/glib-strerror.patch
Normal file
|
@ -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,
|
12
racket/src/native-libs/patches/glib-win32-weekday.patch
Normal file
12
racket/src/native-libs/patches/glib-win32-weekday.patch
Normal file
|
@ -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
|
|
@ -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=""
|
||||
|
|
|
@ -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=""
|
||||
|
|
12
racket/src/native-libs/patches/pango-emoji.patch
Normal file
12
racket/src/native-libs/patches/pango-emoji.patch
Normal file
|
@ -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);
|
25
racket/src/native-libs/patches/pango-surrogate.patch
Normal file
25
racket/src/native-libs/patches/pango-surrogate.patch
Normal file
|
@ -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
|
|
@ -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);
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
From 844455c14f8e9e4767fd661e475a9c6fdea9d22e Mon Sep 17 00:00:00 2001
|
||||
From: Massimo Valentini <mvalentini@src.gnome.org>
|
||||
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
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue
Block a user