summaryrefslogtreecommitdiff
path: root/media-gfx/fontforge
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-05-29 03:22:09 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-05-29 03:22:09 +0100
commitd4bd6695641f6d2ec7ff8681913d304e995902f5 (patch)
tree6ec8d4c38152bb4f2bb4b93277236ebd9fbbd21d /media-gfx/fontforge
parent22910f5d14da606bd7f06e19a2f61c5d1a8fc94b (diff)
gentoo resync : 29.05.2018
Diffstat (limited to 'media-gfx/fontforge')
-rw-r--r--media-gfx/fontforge/Manifest2
-rw-r--r--media-gfx/fontforge/files/20170731-PyMem_Free.patch197
-rw-r--r--media-gfx/fontforge/fontforge-20170731-r4.ebuild121
3 files changed, 320 insertions, 0 deletions
diff --git a/media-gfx/fontforge/Manifest b/media-gfx/fontforge/Manifest
index ea96432302ac..67e7b048f26f 100644
--- a/media-gfx/fontforge/Manifest
+++ b/media-gfx/fontforge/Manifest
@@ -1,6 +1,8 @@
+AUX 20170731-PyMem_Free.patch 5579 BLAKE2B ffb048f9790ea237f37bedf17ec50087002c621d9b47f087397d417d854f593576229fac3d0ec17c5ba95bd4d44b75b270ceb754d50bd5388c96f542af7d21fb SHA512 fff7b217002d4f270ba20bdce9dcec44b4d1a68f4ea5df45880f5766b897ae8dcf051612416aac28e80d6063c9a461acbac998bd51eef1878bf590a8d75d0963
AUX 20170731-gethex-unaligned.patch 510 BLAKE2B ed943be0d150c8de7c99decf898cc4cfccf4c3990045a92af79b60c7e018a118996aa4f4b7146408b713b4eaf2b867110dc41d6c99ba302cdc522f62d035572a SHA512 ef4df9ac6589615f4ce619d073cb78dc9fcc281f24a01941567a09a9e536d105672856fa3fded436bddefac4de094d017ed51ace9d5bb0454f44dc373c95927b
AUX 20170731-startnoui-FindOrMakeEncoding.patch 751 BLAKE2B c4a0248affa9117c5150aacb40a54bcb6f29d84866e1d193898f49a4fe58735eda2319856b6cfdbce450492871a5fe2255443849dd0f98ee70285614f7e44bb1 SHA512 0135717d9760a0bbf6d35ce21c19fb9019d3da01859882918a5643bbe6011a55eaf57ad07c8063c2c5c20cd6c6907420f8015abf54210ccdd75b2ba473e6b366
AUX 20170731-tilepath.patch 411 BLAKE2B 39ef99a26b85fc25d6c0b778a6b0ddfdb2c366b6456bd8ed47b12ca8681e8970e65e3b69cd06880794832f761c6de801d9e7c51e1edfff5abf434aa7f7dcc7c2 SHA512 026f6765b2db7549f72cd6ccff8d23bdf357ab24035c89cd792fa933f6033445f6cbaf7fa20f1372bdeda2caa242b9f8237f3019292cba0cc551c6de9e5c8341
DIST fontforge-dist-20170731.tar.xz 13985256 BLAKE2B 7bc49a3b7747de419e4fafb445062873cf9bf56aa73fd7499509b787a1c0fd6c47b0b5d7bfeb2a69d9237f9f66f989af968b0d00e9d5e57030906394f042f29c SHA512 26f7a40714460716a24dd0229fdb027f3766bcc48db64b8993436ddcb6277898f9f3b67ad4fc0be515b2b38e01370d1c7d9ee3c6ece1be862b7d8c9882411f11
EBUILD fontforge-20170731-r3.ebuild 2790 BLAKE2B 8d0290229ff389cca1f1e4915801b1f9ee0683a55030eadec60da8c82d4177f47af0592b366c9f1c7b730568e01a98d202e9502647f91cfccb02c5ac0b7bc98b SHA512 f14898b95f7a457b793d5ebabc84ce845296c84fe7360ab6069db4c99b485b5231ff12285981ba0e6fabe815204fe0b5cf878f0c84d594622e367afb62497b89
+EBUILD fontforge-20170731-r4.ebuild 2844 BLAKE2B 2b42a9048d545839af49d9ffa42956f0bcfefce27d2fafab9465e8c4009d65ee558ed2d49e47a6f42998552cba3711e1c0f309d3b0c12b8e57ed753a1fe6123e SHA512 06f8e05ca9b5bc02f98bcd370283ace4ae1486edaab33ce9803effb404fcfb97fa13355c98a0ed9a0e9c9787cbf39681148e9ebebbbce6679419571ca3fffd7b
MISC metadata.xml 908 BLAKE2B 57e840cbf69ebd2780ecaf5a3009905b782223a16339beae90acf1c087a185944e33fe952b477184244cb3f5f313fcce32a561ce903d751de457b77f4a90cd74 SHA512 973d4967be4eb7aad087ce977a4d94945a8894138604e8d37257dac97f74e98f7fb9a7cad7e7f46abb4c8c39dcb4bd79e9ad26f96838ad39ac1894e154834d28
diff --git a/media-gfx/fontforge/files/20170731-PyMem_Free.patch b/media-gfx/fontforge/files/20170731-PyMem_Free.patch
new file mode 100644
index 000000000000..48301dabb2f1
--- /dev/null
+++ b/media-gfx/fontforge/files/20170731-PyMem_Free.patch
@@ -0,0 +1,197 @@
+From b6089f11bd7534c9aa38b875ef1e830fc3b898b4 Mon Sep 17 00:00:00 2001
+From: Jeremy Tan <jtanx@outlook.com>
+Date: Wed, 13 Sep 2017 17:22:18 +0800
+Subject: [PATCH] python: Use PyMem_Free wherever PyArg_ParseTuple+es is used
+
+https://docs.python.org/2.0/ext/parseTuple.html
+
+diff --git a/fontforge/python.c b/fontforge/python.c
+index 5d6820c40..c6d7aca2b 100644
+--- a/fontforge/python.c
++++ b/fontforge/python.c
+@@ -607,7 +607,13 @@ return( NULL );
+ }
+ }
+
+- if ( !SetPrefs((char *) prefname,&val,NULL)) {
++ bool succeeded = SetPrefs((char *) prefname,&val,NULL);
++ if (val.type == v_str && val.u.sval) {
++ PyMem_Free(val.u.sval);
++ val.u.sval = NULL;
++ }
++
++ if (!succeeded) {
+ PyErr_Format(PyExc_NameError, "Unknown preference item in SetPrefs: %s", prefname );
+ return( NULL );
+ }
+@@ -728,7 +734,7 @@ static PyObject *PyFF_UnicodeFromName(PyObject *UNUSED(self), PyObject *args) {
+ return( NULL );
+
+ ret = Py_BuildValue("i", UniFromName((char *) name, ui_none,&custom));
+- free(name);
++ PyMem_Free(name);
+ return( ret );
+ }
+
+@@ -1361,12 +1367,14 @@ Py_RETURN_NONE; /* Well, that was pointless */
+ if ( import==Py_None )
+ import=NULL;
+ else if ( !PyCallable_Check(import) ) {
++ PyMem_Free(name);
+ PyErr_Format(PyExc_TypeError, "First argument is not callable" );
+ return( NULL );
+ }
+ if ( export==Py_None )
+ export=NULL;
+ else if ( !PyCallable_Check(export) ) {
++ PyMem_Free(name);
+ PyErr_Format(PyExc_TypeError, "Second argument is not callable" );
+ return( NULL );
+ }
+@@ -1472,7 +1480,7 @@ static PyObject *PyFF_logError(PyObject *UNUSED(self), PyObject *args) {
+ if ( !PyArg_ParseTuple(args,"es","UTF-8", &msg) )
+ return( NULL );
+ LogError(msg);
+- free(msg);
++ PyMem_Free(msg);
+ Py_RETURN_NONE;
+ }
+
+@@ -1486,6 +1494,8 @@ static PyObject *PyFF_postError(PyObject *UNUSED(self), PyObject *args) {
+ return( NULL );
+ if( showPythonErrors )
+ ff_post_error(title,msg); /* Prints to stderr if no ui */
++ PyMem_Free(title);
++ PyMem_Free(msg);
+ Py_RETURN_NONE;
+ }
+
+@@ -1494,6 +1504,8 @@ static PyObject *PyFF_postNotice(PyObject *UNUSED(self), PyObject *args) {
+ if ( !PyArg_ParseTuple(args,"eses","UTF-8", &title, "UTF-8", &msg) )
+ return( NULL );
+ ff_post_notice(title,msg); /* Prints to stderr if no ui */
++ PyMem_Free(title);
++ PyMem_Free(msg);
+ Py_RETURN_NONE;
+ }
+
+@@ -1511,8 +1523,8 @@ return( NULL );
+ return( NULL );
+
+ ret = ff_open_filename(title,def,filter);
+- free(title);
+- free(def);
++ PyMem_Free(title);
++ PyMem_Free(def);
+ if ( ret==NULL )
+ Py_RETURN_NONE;
+ reto = DECODE_UTF8(ret,strlen(ret),NULL);
+@@ -1534,8 +1546,8 @@ return( NULL );
+ return( NULL );
+
+ ret = ff_save_filename(title,def,filter);
+- free(title);
+- free(def);
++ PyMem_Free(title);
++ PyMem_Free(def);
+ if ( ret==NULL )
+ Py_RETURN_NONE;
+ reto = DECODE_UTF8(ret,strlen(ret),NULL);
+@@ -1558,8 +1570,8 @@ return( NULL );
+ return( NULL );
+ if ( !PySequence_Check(answero) || STRING_CHECK(answero)) {
+ PyErr_Format(PyExc_TypeError, "Expected a tuple of strings for the third argument");
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ return( NULL );
+ }
+ cnt = PySequence_Size(answero);
+@@ -1568,16 +1580,16 @@ return( NULL );
+ cancel = cnt-1;
+ if ( cancel<0 || cancel>=cnt || def<0 || def>=cnt ) {
+ PyErr_Format(PyExc_ValueError, "Value out of bounds for 4th or 5th argument");
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ free(answers);
+ return( NULL );
+ }
+ for ( i=0; i<cnt; ++i ) {
+ PyObject *utf8_name = PYBYTES_UTF8(PySequence_GetItem(answero,i));
+ if ( utf8_name==NULL ) {
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ FreeStringArray( i, answers );
+ return( NULL );
+ }
+@@ -1587,8 +1599,8 @@ return( NULL );
+ answers[cnt] = NULL;
+
+ ret = ff_ask(title,(const char **) answers,def,cancel,quest);
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ FreeStringArray( cnt, answers );
+ return( Py_BuildValue("i",ret));
+ }
+@@ -1608,23 +1620,23 @@ return( NULL );
+ return( NULL );
+ if ( !PySequence_Check(answero) || STRING_CHECK(answero)) {
+ PyErr_Format(PyExc_TypeError, "Expected a tuple of strings for the third argument");
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ return( NULL );
+ }
+ cnt = PySequence_Size(answero);
+ answers = calloc(cnt+1, sizeof(char *));
+ if ( def<0 || def>=cnt ) {
+ PyErr_Format(PyExc_ValueError, "Value out of bounds for 4th argument");
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ return( NULL );
+ }
+ for ( i=0; i<cnt; ++i ) {
+ PyObject *utf8_name = PYBYTES_UTF8(PySequence_GetItem(answero,i));
+ if ( utf8_name==NULL ) {
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ FreeStringArray( i, answers );
+ return( NULL );
+ }
+@@ -1634,8 +1646,8 @@ return( NULL );
+ answers[cnt] = NULL;
+
+ ret = ff_choose(title,(const char **) answers,cnt,def,quest);
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ FreeStringArray( cnt, answers );
+ return( Py_BuildValue("i",ret));
+ }
+@@ -1654,8 +1666,8 @@ return( NULL );
+ return( NULL );
+
+ ret = ff_ask_string(title,def,quest);
+- free(title);
+- free(quest);
++ PyMem_Free(title);
++ PyMem_Free(quest);
+ free(def);
+ if ( ret==NULL )
+ Py_RETURN_NONE;
+--
+2.17.0
+
diff --git a/media-gfx/fontforge/fontforge-20170731-r4.ebuild b/media-gfx/fontforge/fontforge-20170731-r4.ebuild
new file mode 100644
index 000000000000..046325111fab
--- /dev/null
+++ b/media-gfx/fontforge/fontforge-20170731-r4.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
+
+inherit gnome2-utils python-single-r1 xdg-utils
+
+DESCRIPTION="postscript font editor and converter"
+HOMEPAGE="http://fontforge.github.io/"
+SRC_URI="https://github.com/fontforge/fontforge/releases/download/${PV}/fontforge-dist-${PV}.tar.xz"
+
+LICENSE="BSD GPL-3+"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
+IUSE="cairo truetype-debugger gif gtk jpeg png +python readline test tiff svg unicode X"
+
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+ cairo? ( png )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ test? ( png python )
+"
+
+RDEPEND="
+ dev-libs/libltdl:0
+ dev-libs/libxml2:2=
+ >=media-libs/freetype-2.3.7:2=
+ cairo? (
+ >=x11-libs/cairo-1.6:0=
+ x11-libs/pango:0=
+ )
+ gif? ( media-libs/giflib:0= )
+ jpeg? ( virtual/jpeg:0 )
+ png? ( media-libs/libpng:0= )
+ tiff? ( media-libs/tiff:0= )
+ truetype-debugger? ( >=media-libs/freetype-2.3.8:2[fontforge,-bindist(-)] )
+ gtk? ( x11-libs/gtk+:2= )
+ python? ( ${PYTHON_DEPS} )
+ readline? ( sys-libs/readline:0= )
+ unicode? ( media-libs/libuninameslist:0= )
+ X? (
+ x11-libs/libX11:0=
+ x11-libs/libXi:0=
+ >=x11-libs/pango-1.10:0=[X]
+ )
+ !media-gfx/pfaedit
+"
+DEPEND="${RDEPEND}
+ sys-devel/gettext
+ virtual/pkgconfig
+ X? ( x11-base/xorg-proto )
+"
+
+# Needs keywording on many arches.
+# zeromq? (
+# >=net-libs/czmq-2.2.0:0=
+# >=net-libs/zeromq-4.0.4:0=
+# )
+
+S="${WORKDIR}/fontforge-2.0.${PV}"
+
+PATCHES=(
+ "${FILESDIR}"/20170731-startnoui-FindOrMakeEncoding.patch
+ "${FILESDIR}"/20170731-tilepath.patch
+ "${FILESDIR}"/20170731-gethex-unaligned.patch
+ "${FILESDIR}"/20170731-PyMem_Free.patch
+)
+
+pkg_setup() {
+ use python && python-single-r1_pkg_setup
+}
+
+src_configure() {
+ local myeconfargs=(
+ --disable-static
+ $(use_enable truetype-debugger freetype-debugger "${EPREFIX}/usr/include/freetype2/internal4fontforge")
+ $(use_enable gtk gtk2-use)
+ $(use_enable python python-extension)
+ $(use_enable python python-scripting)
+ --enable-tile-path
+ --enable-gb12345
+ $(use_with cairo)
+ $(use_with gif giflib)
+ $(use_with jpeg libjpeg)
+ $(use_with png libpng)
+ $(use_with readline libreadline)
+ --without-libspiro
+ $(use_with tiff libtiff)
+ $(use_with unicode libuninameslist)
+ #$(use_with zeromq libzmq)
+ --without-libzmq
+ $(use_with X x)
+ )
+ econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+ # Build system deps are broken
+ emake -C plugins
+ emake
+}
+
+src_install() {
+ default
+ find "${D}" -name '*.la' -delete || die
+}
+
+pkg_postrm() {
+ gnome2_icon_cache_update
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+}
+
+pkg_postinst() {
+ gnome2_icon_cache_update
+ xdg_desktop_database_update
+ xdg_mimeinfo_database_update
+}