266 lines
7.3 KiB
Ruby
266 lines
7.3 KiB
Ruby
class Fontconfig < Formula
|
|
desc "XML-based font configuration API for X Windows"
|
|
homepage "https://wiki.freedesktop.org/www/Software/fontconfig/"
|
|
url "https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.1.tar.bz2"
|
|
sha256 "dc62447533bca844463a3c3fd4083b57c90f18a70506e7a9f4936b5a1e516a99"
|
|
revision 2
|
|
|
|
# The bottle tooling is too lenient and thinks fontconfig
|
|
# is relocatable, but it has hardcoded paths in the executables.
|
|
bottle do
|
|
cellar :any
|
|
sha256 "6a2492b8e02a1b17cb2b2090917a5957934a25d24b13fe33cc213f07c7119955" => :el_capitan
|
|
sha256 "23574b814f3cd34dbbc00151038e50eee7d7db2cb0db9a581a06155a30b31b91" => :yosemite
|
|
sha256 "36104e396d373ff8c593ee61053534007f4436bf5c2d9ebbf29843aaccc51064" => :mavericks
|
|
end
|
|
|
|
pour_bottle? do
|
|
reason "The bottle needs to be installed into /usr/local."
|
|
# c.f. the identical hack in lua
|
|
# https://github.com/Homebrew/homebrew/issues/47173
|
|
satisfy { HOMEBREW_PREFIX.to_s == "/usr/local" }
|
|
end
|
|
|
|
keg_only :provided_pre_mountain_lion
|
|
|
|
option :universal
|
|
|
|
depends_on "pkg-config" => :build
|
|
depends_on "freetype"
|
|
|
|
# Reverts commit https://cgit.freedesktop.org/fontconfig/commit/?id=7a6622f25cdfab5ab775324bef1833b67109801b,
|
|
# which breaks caching font directories containing subdirectories
|
|
# See: https://github.com/Homebrew/homebrew/issues/28111
|
|
# Reported upstream, message to mailing list is waiting moderation.
|
|
patch :DATA
|
|
|
|
def install
|
|
ENV.universal_binary if build.universal?
|
|
system "./configure", "--disable-dependency-tracking",
|
|
"--disable-silent-rules",
|
|
"--enable-static",
|
|
"--with-add-fonts=/System/Library/Fonts,/Library/Fonts,~/Library/Fonts",
|
|
"--prefix=#{prefix}",
|
|
"--localstatedir=#{var}",
|
|
"--sysconfdir=#{etc}"
|
|
system "make", "install", "RUN_FC_CACHE_TEST=false"
|
|
end
|
|
|
|
def post_install
|
|
ohai "Regenerating font cache, this may take a while"
|
|
system "#{bin}/fc-cache", "-frv"
|
|
end
|
|
|
|
test do
|
|
system "#{bin}/fc-list"
|
|
end
|
|
end
|
|
|
|
__END__
|
|
diff --git a/fc-cache/fc-cache.c b/fc-cache/fc-cache.c
|
|
index 99e0e9f..bf3b6b4 100644
|
|
--- a/fc-cache/fc-cache.c
|
|
+++ b/fc-cache/fc-cache.c
|
|
@@ -187,13 +187,8 @@ scanDirs (FcStrList *list, FcConfig *config, FcBool force, FcBool really_force,
|
|
|
|
if (!cache)
|
|
{
|
|
- if (!recursive)
|
|
- cache = FcDirCacheRescan (dir, config);
|
|
- else
|
|
- {
|
|
- (*changed)++;
|
|
- cache = FcDirCacheRead (dir, FcTrue, config);
|
|
- }
|
|
+ (*changed)++;
|
|
+ cache = FcDirCacheRead (dir, FcTrue, config);
|
|
if (!cache)
|
|
{
|
|
fprintf (stderr, "%s: error scanning\n", dir);
|
|
@@ -391,7 +386,6 @@ main (int argc, char **argv)
|
|
ret += scanDirs (list, config, FcTrue, really_force, verbose, FcFalse, &changed, NULL);
|
|
FcStrListDone (list);
|
|
}
|
|
- FcStrSetDestroy (updateDirs);
|
|
|
|
/*
|
|
* Try to create CACHEDIR.TAG anyway.
|
|
diff --git a/fontconfig/fontconfig.h b/fontconfig/fontconfig.h
|
|
index 2258251..d0b4e9e 100644
|
|
--- a/fontconfig/fontconfig.h
|
|
+++ b/fontconfig/fontconfig.h
|
|
@@ -541,9 +541,6 @@ FcDirSave (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir);
|
|
|
|
FcPublic FcCache *
|
|
FcDirCacheLoad (const FcChar8 *dir, FcConfig *config, FcChar8 **cache_file);
|
|
-
|
|
-FcPublic FcCache *
|
|
-FcDirCacheRescan (const FcChar8 *dir, FcConfig *config);
|
|
|
|
FcPublic FcCache *
|
|
FcDirCacheRead (const FcChar8 *dir, FcBool force, FcConfig *config);
|
|
diff --git a/src/fccache.c b/src/fccache.c
|
|
index 5173e0b..10eacff 100644
|
|
--- a/src/fccache.c
|
|
+++ b/src/fccache.c
|
|
@@ -828,19 +828,6 @@ bail1:
|
|
return NULL;
|
|
}
|
|
|
|
-FcCache *
|
|
-FcDirCacheRebuild (FcCache *cache, struct stat *dir_stat, FcStrSet *dirs)
|
|
-{
|
|
- FcCache *new;
|
|
- FcFontSet *set = FcFontSetDeserialize (FcCacheSet (cache));
|
|
- const FcChar8 *dir = FcCacheDir (cache);
|
|
-
|
|
- new = FcDirCacheBuild (set, dir, dir_stat, dirs);
|
|
- FcFontSetDestroy (set);
|
|
-
|
|
- return new;
|
|
-}
|
|
-
|
|
/* write serialized state to the cache file */
|
|
FcBool
|
|
FcDirCacheWrite (FcCache *cache, FcConfig *config)
|
|
diff --git a/src/fcdir.c b/src/fcdir.c
|
|
index 3bcd0b8..b040a28 100644
|
|
--- a/src/fcdir.c
|
|
+++ b/src/fcdir.c
|
|
@@ -130,12 +130,7 @@ FcFileScanConfig (FcFontSet *set,
|
|
if (FcFileIsDir (file))
|
|
return FcStrSetAdd (dirs, file);
|
|
else
|
|
- {
|
|
- if (set)
|
|
- return FcFileScanFontConfig (set, blanks, file, config);
|
|
- else
|
|
- return FcTrue;
|
|
- }
|
|
+ return FcFileScanFontConfig (set, blanks, file, config);
|
|
}
|
|
|
|
FcBool
|
|
@@ -311,45 +306,6 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config)
|
|
return cache;
|
|
}
|
|
|
|
-FcCache *
|
|
-FcDirCacheRescan (const FcChar8 *dir, FcConfig *config)
|
|
-{
|
|
- FcCache *cache = FcDirCacheLoad (dir, config, NULL);
|
|
- FcCache *new = NULL;
|
|
- struct stat dir_stat;
|
|
- FcStrSet *dirs;
|
|
-
|
|
- if (!cache)
|
|
- return NULL;
|
|
- if (FcStatChecksum (dir, &dir_stat) < 0)
|
|
- goto bail;
|
|
- dirs = FcStrSetCreate ();
|
|
- if (!dirs)
|
|
- goto bail;
|
|
-
|
|
- /*
|
|
- * Scan the dir
|
|
- */
|
|
- if (!FcDirScanConfig (NULL, dirs, NULL, dir, FcTrue, config))
|
|
- goto bail1;
|
|
- /*
|
|
- * Rebuild the cache object
|
|
- */
|
|
- new = FcDirCacheRebuild (cache, &dir_stat, dirs);
|
|
- if (!new)
|
|
- goto bail1;
|
|
- FcDirCacheUnload (cache);
|
|
- /*
|
|
- * Write out the cache file, ignoring any troubles
|
|
- */
|
|
- FcDirCacheWrite (new, config);
|
|
-
|
|
-bail1:
|
|
- FcStrSetDestroy (dirs);
|
|
-bail:
|
|
- return new;
|
|
-}
|
|
-
|
|
/*
|
|
* Read (or construct) the cache for a directory
|
|
*/
|
|
diff --git a/src/fcfs.c b/src/fcfs.c
|
|
index 21c6c7c..941abba 100644
|
|
--- a/src/fcfs.c
|
|
+++ b/src/fcfs.c
|
|
@@ -122,28 +122,6 @@ FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s)
|
|
|
|
return s_serialize;
|
|
}
|
|
-
|
|
-FcFontSet *
|
|
-FcFontSetDeserialize (const FcFontSet *set)
|
|
-{
|
|
- int i;
|
|
- FcFontSet *new = FcFontSetCreate ();
|
|
-
|
|
- if (!new)
|
|
- return NULL;
|
|
- for (i = 0; i < set->nfont; i++)
|
|
- {
|
|
- if (!FcFontSetAdd (new, FcPatternDuplicate (FcFontSetFont (set, i))))
|
|
- goto bail;
|
|
- }
|
|
-
|
|
- return new;
|
|
-bail:
|
|
- FcFontSetDestroy (new);
|
|
-
|
|
- return NULL;
|
|
-}
|
|
-
|
|
#define __fcfs__
|
|
#include "fcaliastail.h"
|
|
#undef __fcfs__
|
|
diff --git a/src/fcint.h b/src/fcint.h
|
|
index cdf2dab..362ea6f 100644
|
|
--- a/src/fcint.h
|
|
+++ b/src/fcint.h
|
|
@@ -567,9 +567,6 @@ FcDirCacheScan (const FcChar8 *dir, FcConfig *config);
|
|
FcPrivate FcCache *
|
|
FcDirCacheBuild (FcFontSet *set, const FcChar8 *dir, struct stat *dir_stat, FcStrSet *dirs);
|
|
|
|
-FcPrivate FcCache *
|
|
-FcDirCacheRebuild (FcCache *cache, struct stat *dir_stat, FcStrSet *dirs);
|
|
-
|
|
FcPrivate FcBool
|
|
FcDirCacheWrite (FcCache *cache, FcConfig *config);
|
|
|
|
@@ -841,9 +838,6 @@ FcFontSetSerializeAlloc (FcSerialize *serialize, const FcFontSet *s);
|
|
FcPrivate FcFontSet *
|
|
FcFontSetSerialize (FcSerialize *serialize, const FcFontSet * s);
|
|
|
|
-FcPrivate FcFontSet *
|
|
-FcFontSetDeserialize (const FcFontSet *set);
|
|
-
|
|
/* fchash.c */
|
|
FcPrivate FcChar8 *
|
|
FcHashGetSHA256Digest (const FcChar8 *input_strings,
|
|
diff --git a/src/fcpat.c b/src/fcpat.c
|
|
index 986cca3..0614ac2 100644
|
|
--- a/src/fcpat.c
|
|
+++ b/src/fcpat.c
|
|
@@ -33,7 +33,6 @@ FcPatternCreate (void)
|
|
p = (FcPattern *) malloc (sizeof (FcPattern));
|
|
if (!p)
|
|
return 0;
|
|
- memset (p, 0, sizeof (FcPattern));
|
|
p->num = 0;
|
|
p->size = 0;
|
|
p->elts_offset = FcPtrToOffset (p, NULL);
|
|
@@ -1311,7 +1310,6 @@ FcValueListSerialize (FcSerialize *serialize, const FcValueList *vl)
|
|
}
|
|
return head_serialized;
|
|
}
|
|
-
|
|
#define __fcpat__
|
|
#include "fcaliastail.h"
|
|
#include "fcftaliastail.h"
|