homebrew-core/Formula/fontconfig.rb
2016-05-02 22:41:41 +02:00

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"