Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 327113

Summary: media-gfx/fontforge fails to build with Python 2.7 (PyBytes_Decode)
Product: Gentoo Linux Reporter: Diego Elio Pettenò (RETIRED) <flameeyes>
Component: New packagesAssignee: Gentoo Fonts Team <fonts>
Status: RESOLVED FIXED    
Severity: normal CC: hanno, krinpaus, kripton, markus, steffen, tdalman
Priority: High    
Version: unspecified   
Hardware: All   
OS: Linux   
URL: http://fontforge.cvs.sourceforge.net/viewvc/fontforge/fontforge/fontforge/ffpython.h?r1=1.8&r2=1.9
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 292401    
Attachments: Build log
patch to make fontforge compile on python-2.7
changed ebuild to include patch for python-2.7 compatibility

Description Diego Elio Pettenò (RETIRED) gentoo-dev 2010-07-06 09:14:03 UTC
Portage 2.1.8.3 (default/linux/x86/10.0, gcc-4.5.0-asneeded, glibc-2.11.2-r0, 2.6.34 i686)
=================================================================
System uname: Linux-2.6.34-i686-Quad-Core_AMD_Opteron-tm-_Processor_2350-with-gentoo-2.0.1
Timestamp of tree: Mon, 05 Jul 2010 16:00:01 +0000
ccache version 2.4 [disabled]
app-shells/bash:     4.1_p7
dev-java/java-config: 2.1.11
dev-lang/python:     2.6.5-r2, 2.7, 3.1.2-r3
dev-util/ccache:     2.4-r8
dev-util/cmake:      2.8.1-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.6.1-r1
sys-apps/sandbox:    2.2
sys-devel/autoconf:  2.13, 2.65-r1
sys-devel/automake:  1.4_p6-r1, 1.5-r1, 1.6.3-r1, 1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1-r1
sys-devel/gcc:       4.5.0
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.10
virtual/os-headers:  2.6.34
ACCEPT_KEYWORDS="x86 ~x86"
ACCEPT_LICENSE="*"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /opt/openjms/config /usr/lib/tomoyo/conf /usr/share/X11/xkb /usr/share/bufrtables /usr/share/config /usr/share/qpsmtpd/plugins /var/bind /var/lib/hsqldb /var/phxd /var/qmail/alias /var/qmail/control /var/spool/torque /var/vpopmail/etc /var/yp/Makefile"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/games/angband/edit/ /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe"
DISTDIR="/var/cache/distfiles"
FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms split-log strict test test-fail-continue unmerge-orphans userfetch userpriv usersandbox"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gentoo.wheel.sk/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1"
MAKEOPTS="-j14"
PKGDIR="/var/spool/portage/packages"
PORTAGE_COMPRESS=""
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/var/cache/portage/tree-tinderbox"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="acl berkdb bzip2 cli cracklib crypt cups cxx dri fortran gdbm gpm iconv ipv6 java5 java6 modules mudflap ncurses nls nostatic nptl nptlonly openmp pam pcre perl pppd python qt3support readline reflection ruby session spl ssl sysfs tcpd unicode vhosts x86 xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias auth_digest" ELIBC="glibc" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" RUBY_TARGETS="ruby18 jruby ruby19 ree18" USERLAND="GNU" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Comment 1 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-07-06 09:14:44 UTC
Created attachment 237703 [details]
Build log
Comment 2 Arfrever Frehtes Taifersar Arahesis (RETIRED) gentoo-dev 2010-07-06 12:18:03 UTC
http://svn.python.org/view?view=rev&revision=69689
Comment 3 Steffen Schaumburg 2010-08-10 19:36:44 UTC
Found a patch here: https://sourceforge.net/mailarchive/message.php?msg_name=20100803075528.GA25670%40crud.chemoelectric.org

Will upload patch and changed ebuild (only added an epatch line)
Comment 4 Steffen Schaumburg 2010-08-10 19:38:08 UTC
Created attachment 242289 [details, diff]
patch to make fontforge compile on python-2.7
Comment 5 Steffen Schaumburg 2010-08-10 19:38:51 UTC
Created attachment 242291 [details]
changed ebuild to include patch for python-2.7 compatibility
Comment 6 Dirkjan Ochtman (RETIRED) gentoo-dev 2010-10-25 09:22:37 UTC
Steffen, thanks for coming up with this patch. Did you talk to upstream? It would be nice if we can ascertain that a similar patch will be in the next upstream release.
Comment 7 Tolga Dalman 2010-11-29 14:07:08 UTC
Same issue here with Python 2.7.1.
Comment 9 Francesco Riosa 2010-11-29 21:57:15 UTC
Simple fix COMPILE IT WITH USE=-python !

Anyway found this comment on a mailing list:

http://old.nabble.com/Compiling-error-with-Python-td29226850.html

Re: Compiling error with Python
Click to flag this post

by Barry Schwartz-2 Aug 03, 2010; 09:55am :: Rate this Message: - Use ratings to moderate (?)

Reply | Print | View Threaded | Show Only this Message
Kevin Fenzi <kevin@...> skribis:

> The following small patch makes it build here with python 2.7:
>
> diff -Nur fontforge-20100501.orig/fontforge/ffpython.h fontforge-20100501/fontforge/ffpython.h
> --- fontforge-20100501.orig/fontforge/ffpython.h 2010-04-05 14:10:26.000000000 -0600
> +++ fontforge-20100501/fontforge/ffpython.h 2010-07-28 12:07:25.000000000 -0600
> @@ -25,7 +25,7 @@
>   * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>   */
>  
> -#if PY_MAJOR_VERSION >= 3
> +#if PY_MAJOR_VERSION >= 3 || (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION > 6)
>  
>  #define PyInt_Check    PyLong_Check
>  #define PyInt_AsLong   PyLong_AsLong
... [show rest of quote]

That's probably not right, plus the Python 3 code is incomplete and
its Python extension is badly designed. I know, because I created
it. :)

What probably happened is that they removed the #define for
PyBytes_Decode that was in 2.6, because there those defines were to
ease transition to Python 3 (wherein "PyString" stuff is renamed
"PyBytes"), but Python 3 wasn't actually going to have a
PyBytes_Decode -- the function was simply going to be dropped.

Simplest fix in that case is to go back to the old name:

diff --git a/fontforge/ffpython.h b/fontforge/ffpython.h
index e81c3ec..70ba318 100644
--- a/fontforge/ffpython.h
+++ b/fontforge/ffpython.h
@@ -43,7 +43,7 @@
 
 #define STRING_CHECK   PyBytes_Check
 #define STRING_TO_PY   PyBytes_FromString
-#define DECODE_UTF8(s, size, errors) PyBytes_Decode(s, size, "UTF-8", errors)
+#define DECODE_UTF8(s, size, errors) PyString_Decode(s, size, "UTF-8", errors)
 #define PYBYTES_UTF8(str)            PyString_AsEncodedObject(str, "UTF-8", NULL)
 #define STRING_FROM_FORMAT           PyBytes_FromFormat 
Comment 10 Hanno Böck gentoo-dev 2010-11-30 23:15:30 UTC
Added patch from upstream. All further discussion about better solutions should be handled with upstream.