# Nochmal Compiler Error bei dev-lang/python-3.7.x und 3.8.x

## Murmeltier

Hallo zusammen,

nach dem letzten Portage update will das System auf python 3.7.5 hoch, was aber scheitert.

Weiss jemand, was das soll?

Traceback (most recent call last):

  File "./setup.py", line 4, in <module>

    import sys, os, importlib.machinery, re, optparse

  File "/tmp/portage/dev-lang/python-3.7.5-r1/work/Python-3.7.5/Lib/optparse.py", line 422, in <module>

    _builtin_cvt = { "int" : (_parse_int, _("integer")),

  File "/tmp/portage/dev-lang/python-3.7.5-r1/work/Python-3.7.5/Lib/gettext.py", line 625, in gettext

    return dgettext(_current_domain, message)

  File "/tmp/portage/dev-lang/python-3.7.5-r1/work/Python-3.7.5/Lib/gettext.py", line 588, in dgettext

    codeset=_localecodesets.get(domain))

  File "/tmp/portage/dev-lang/python-3.7.5-r1/work/Python-3.7.5/Lib/gettext.py", line 533, in translation

    t = _translations.setdefault(key, class_(fp))

  File "/tmp/portage/dev-lang/python-3.7.5-r1/work/Python-3.7.5/Lib/gettext.py", line 260, in __init__

    self._parse(fp)

  File "/tmp/portage/dev-lang/python-3.7.5-r1/work/Python-3.7.5/Lib/gettext.py", line 344, in _parse

    from struct import unpack

  File "/tmp/portage/dev-lang/python-3.7.5-r1/work/Python-3.7.5/Lib/struct.py", line 13, in <module>

    from _struct import *

ModuleNotFoundError: No module named '_struct'

make: *** [Makefile:628: sharedmods] Error 1

 * ERROR: dev-lang/python-3.7.5-r1::gentoo failed (compile phase):

 *   emake failed

 *

emerge --info '=dev-lang/python-3.7.5-r1::gentoo'

Portage 2.3.84 (python 3.6.9-final-0, default/linux/x86/17.0/desktop, gcc-9.2.0, glibc-2.29-r7, 4.19.97-gentoo i686)

=================================================================

                         System Settings

=================================================================

System uname: Linux-4.19.97-gentoo-i686-Intel-R-_Core-TM-_i5-3570_CPU_@_3.40GHz-with-gentoo-2.6

KiB Mem:     3632160 total,   2269588 free

KiB Swap:    1047548 total,   1047548 free

Timestamp of repository gentoo: Sat, 01 Feb 2020 00:45:01 +0000

Head commit of repository gentoo: 62034fa04d7370f9c19c9fda7a257cf9acb2c955

sh bash 4.4_p23-r1

ld GNU ld (Gentoo 2.32 p2) 2.32.0

distcc 3.3.3 i686-pc-linux-gnu [disabled]

ccache version 3.7.6 [disabled]

app-shells/bash:          4.4_p23-r1::gentoo

dev-java/java-config:     2.2.0-r4::gentoo

dev-lang/perl:            5.30.1::gentoo

dev-lang/python:          2.7.17::gentoo, 3.6.9::gentoo

dev-util/ccache:          3.7.6::gentoo

dev-util/cmake:           3.14.6::gentoo

dev-util/pkgconfig:       0.29.2::gentoo

sys-apps/baselayout:      2.6-r1::gentoo

sys-apps/openrc:          0.42.1::gentoo

sys-apps/sandbox:         2.13::gentoo

sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r4::gentoo

sys-devel/automake:       1.13.4-r2::gentoo, 1.16.1-r1::gentoo

sys-devel/binutils:       2.32-r1::gentoo

sys-devel/gcc:            9.2.0-r2::gentoo

sys-devel/gcc-config:     2.1::gentoo

sys-devel/libtool:        2.4.6-r6::gentoo

sys-devel/make:           4.2.1-r4::gentoo

sys-kernel/linux-headers: 4.19::gentoo (virtual/os-headers)

sys-libs/glibc:           2.29-r7::gentoo

GrüsseLast edited by Murmeltier on Wed Apr 29, 2020 3:32 pm; edited 1 time in total

----------

## mike155

Manchmal versuche ich, auf solche Fragen eine Antwort zu finden. Dann versuche ich, den Fehler nachzustellen und die Ursache des Fehlers herauszufinden. Das kostet aber Zeit - manchmal Stunden. Das mache ich also nur, wenn ich Lust dazu habe. 

Meine Lust sinkt aber deutlich, wenn der Fragesteller sich noch nicht einmal die 10 Sekunden Zeit nimmt, Ausgaben mit Code-Tags zu umrahmen, damit sie leichter lesbar werden. Und wenn er nur die Hälfte der Ausgabe von 'emerge --info =<package-name>' postet, so dass ich die verwendeten USE-Flags nicht sehe. Hilfreich wäre auch ein vollständiges Build Log, gepostet über wgetpaste.

----------

## Murmeltier

 *mike155 wrote:*   

> Manchmal versuche ich, auf solche Fragen eine Antwort zu finden. Dann versuche ich, den Fehler nachzustellen und die Ursache des Fehlers herauszufinden. Das kostet aber Zeit - manchmal Stunden. Das mache ich also nur, wenn ich Lust dazu habe. 
> 
> Meine Lust sinkt aber deutlich, wenn der Fragesteller sich noch nicht einmal die 10 Sekunden Zeit nimmt, Ausgaben mit Code-Tags zu umrahmen, damit sie leichter lesbar werden. Und wenn er nur die Hälfte der Ausgabe von 'emerge --info =<package-name>' postet, so dass ich die verwendeten USE-Flags nicht sehe. Hilfreich wäre auch ein vollständiges Build Log, gepostet über wgetpaste.

 

Danke, ich hatte wirklich keine all zu vertiefte Analyse mit hohem Aufwand erwartet.

Was mit "Code-Tags zu umrahmen" gemeint ist, weiss ich nicht, und ob das in 10s getan ist, ebensowenig.

USE-Flags sind gar keine von mir selber gesetzt (für Python) und 2.7 sowie 3.6 kompilieren fehlerlos.

Es geht mir darum, ob jemand selber beim Kompilieren auf diesen Fehler gestossen ist, das Problem selber kennt und allenfalls gelöst hat.

Eine Suche in Netz hat nicht viel ergeben.

Also warte ich einfach mal eine Weile, ob ein Update für das Paket kommt.

----------

## franzf

 *Murmeltier wrote:*   

>  *mike155 wrote:*   Manchmal versuche ich, auf solche Fragen eine Antwort zu finden. Dann versuche ich, den Fehler nachzustellen und die Ursache des Fehlers herauszufinden. Das kostet aber Zeit - manchmal Stunden. Das mache ich also nur, wenn ich Lust dazu habe. 
> 
> Meine Lust sinkt aber deutlich, wenn der Fragesteller sich noch nicht einmal die 10 Sekunden Zeit nimmt, Ausgaben mit Code-Tags zu umrahmen, damit sie leichter lesbar werden. Und wenn er nur die Hälfte der Ausgabe von 'emerge --info =<package-name>' postet, so dass ich die verwendeten USE-Flags nicht sehe. Hilfreich wäre auch ein vollständiges Build Log, gepostet über wgetpaste. 
> 
> Danke, ich hatte wirklich keine all zu vertiefte Analyse mit hohem Aufwand erwartet.
> ...

 

Geht in unter einer Sekunde.

Den zu umrahmenden Text (z.B. "emerge --info" Ausgabe) markieren und bei den Formatierungs-Knöpfen "B" "i" "u" usw. auf "Code" klicken -> fertig.

 *Quote:*   

> USE-Flags sind gar keine von mir selber gesetzt (für Python) und 2.7 sowie 3.6 kompilieren fehlerlos.

 

Wäre aber trotzdem hilfreich zu sehen, was an ist, denn nicht jeder hat auch genau dein Profil am Laufen und "hab ich nichts dran geändert" hört man oft und selbst erfahrene Nutzer übersehen dabei das eine oder andere in ihrer config.

Also bitte wenn du gefragt wirst auch brav posten. DANKE!

 *Quote:*   

> Es geht mir darum, ob jemand selber beim Kompilieren auf diesen Fehler gestossen ist, das Problem selber kennt und allenfalls gelöst hat.

 

Wie du siehst hat wohl niemand dein Problem, wenn du es lösen willst solltest du die geforderten infos liefern.

 *Quote:*   

> Eine Suche in Netz hat nicht viel ergeben.
> 
> Also warte ich einfach mal eine Weile, ob ein Update für das Paket kommt.

 

3.7.6 ist seit 3 Tagen stable für x86:

https://github.com/gentoo/gentoo/commit/3aa51a5a8a508625da4a63b7f96ecb8f8430f3ee#diff-b8823484e18194d53f686af5f9255ba3

----------

## Murmeltier

Gut, einverstanden, ich versuche es nochmal:

Python 3.7.6 zeigt denselben Fehler

Das Ganze läuft in VirtualBox, weil ich die Kompilate binär für eine alte X86 Pentium-Kiste brauche

Wie gesagt, Python 2.7 und 3.6 gehen durch.

1) Build log (nicht alles, aber hoffentlich genug)

2) emerge --info '=dev-lang/python-3.7.6::gentoo'

```

i686-pc-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv   -std=c99$

i686-pc-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv   -std=c99$

i686-pc-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv   -std=c99$

i686-pc-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv   -std=c99$

i686-pc-linux-gnu-gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv   -std=$

i686-pc-linux-gnu-gcc -pthread -c -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv  $

/usr/bin/install -c -m 644 ./Tools/gdb/libpython.py python-gdb.py

i686-pc-linux-gnu-gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv   -std=$

sed -e "s,@EXENAME@,/usr/bin/python3.7m," < ./Misc/python-config.in >python-config.py

LC_ALL=C sed -e 's,\$(\([A-Za-z0-9_]*\)),\$\{\1\},g' < Misc/python-config.sh >python-config

i686-pc-linux-gnu-gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv   -std=$

      -DGITVERSION="\"`LC_ALL=C `\"" \

      -DGITTAG="\"`LC_ALL=C `\"" \

      -DGITBRANCH="\"`LC_ALL=C `\"" \

      -o Modules/getbuildinfo.o ./Modules/getbuildinfo.c

rm -f libpython3.7m.a

if test libpython3.7m.so.1.0 != libpython3.7m.so; then \

        i686-pc-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,--as-needed -L.    -Wl,-hlibpython3.7m.so.1.0 -o libpython3.7m.so.1.0 Modules/g$

        ln -f libpython3.7m.so.1.0 libpython3.7m.so; \

else \

        i686-pc-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,--as-needed -L.    -o libpython3.7m.so Modules/getbuildinfo.o Parser/acceler.o $

fi

i686-pc-linux-gnu-ar rcs libpython3.7m.a Modules/getbuildinfo.o Parser/acceler.o Parser/grammar1.o Parser/listnode.o Parser/node.o Parser/$

i686-pc-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,--as-needed -L.    -Wl,--no-as-needed -o libpython3.so -Wl,-hlibpython3.so libpython3.7$

i686-pc-linux-gnu-gcc -pthread -Wl,-O1 -Wl,--as-needed -L.    -Xlinker -export-dynamic -o python Programs/python.o -L. -lpython3.7m -lcryp$

i686-pc-linux-gnu-gcc -pthread -Wl,-O1 -Wl,--as-needed -L.    -Xlinker -export-dynamic -o Programs/_testembed Programs/_testembed.o -L. -l$

LD_LIBRARY_PATH=/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6 ./python -E -S -m sysconfig --generate-posix-vars ;\

if test $? -ne 0 ; then \

        echo "generate-posix-vars failed" ; \

        rm -f ./pybuilddir.txt ; \

        exit 1 ; \

fi

LD_LIBRARY_PATH=/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6 CC='i686-pc-linux-gnu-gcc -pthread' LDSHARED='i686-pc-linux-gnu-gcc -$

Traceback (most recent call last):

  File "./setup.py", line 4, in <module>

    import sys, os, importlib.machinery, re, optparse

  File "/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/optparse.py", line 422, in <module>

    _builtin_cvt = { "int" : (_parse_int, _("integer")),

  File "/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/gettext.py", line 625, in gettext

    return dgettext(_current_domain, message)

  File "/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/gettext.py", line 588, in dgettext

    codeset=_localecodesets.get(domain))

  File "/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/gettext.py", line 533, in translation

    t = _translations.setdefault(key, class_(fp))

  File "/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/gettext.py", line 260, in __init__

    self._parse(fp)

  File "/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/gettext.py", line 344, in _parse

    from struct import unpack

  File "/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/struct.py", line 13, in <module>

    from _struct import *

ModuleNotFoundError: No module named '_struct'

make: *** [Makefile:628: sharedmods] Error 1

 * ERROR: dev-lang/python-3.7.6::gentoo failed (compile phase):

 *   emake failed

 *

```

```
root@Idefix /etc/portage # emerge --info '=dev-lang/python-3.7.6::gentoo'

Portage 2.3.84 (python 3.6.10-final-0, default/linux/x86/17.0/desktop, gcc-9.2.0, glibc-2.29-r7, 4.19.97-gentoo i686)

=================================================================

                         System Settings

=================================================================

System uname: Linux-4.19.97-gentoo-i686-Intel-R-_Core-TM-_i5-3570_CPU_@_3.40GHz-with-gentoo-2.6

KiB Mem:     3632160 total,   2862072 free

KiB Swap:    1047548 total,   1047548 free

Timestamp of repository gentoo: Fri, 28 Feb 2020 00:45:01 +0000

Head commit of repository gentoo: feae48e6ea13a13ca3e47dd45d6d4117e33de37d

sh bash 4.4_p23-r1

ld GNU ld (Gentoo 2.32 p2) 2.32.0

distcc 3.3.3 i686-pc-linux-gnu [disabled]

ccache version 3.7.6 [disabled]

app-shells/bash:          4.4_p23-r1::gentoo

dev-java/java-config:     2.2.0-r4::gentoo

dev-lang/perl:            5.30.1::gentoo

dev-lang/python:          2.7.17-r1::gentoo, 3.6.10::gentoo

dev-util/ccache:          3.7.6::gentoo

dev-util/cmake:           3.14.6::gentoo

dev-util/pkgconfig:       0.29.2::gentoo

sys-apps/baselayout:      2.6-r1::gentoo

sys-apps/openrc:          0.42.1::gentoo

sys-apps/sandbox:         2.13::gentoo

sys-devel/autoconf:       2.13-r1::gentoo, 2.69-r4::gentoo

sys-devel/automake:       1.13.4-r2::gentoo, 1.16.1-r1::gentoo

sys-devel/binutils:       2.32-r1::gentoo

sys-devel/gcc:            9.2.0-r2::gentoo

sys-devel/gcc-config:     2.1::gentoo

sys-devel/libtool:        2.4.6-r6::gentoo

sys-devel/make:           4.2.1-r4::gentoo

sys-kernel/linux-headers: 4.19::gentoo (virtual/os-headers)

sys-libs/glibc:           2.29-r7::gentoo

Repositories:

gentoo

    location: /usr/portage/portage

    sync-type: rsync

    sync-uri: rsync://rsync.gentoo.org/gentoo-portage

    priority: -1000

    sync-rsync-extra-opts: --compress-level=9

    sync-rsync-verify-max-age: 24

    sync-rsync-verify-metamanifest: yes

    sync-rsync-verify-jobs: 1

myoverlay

    location: /usr/portage/overlay

    masters: gentoo

ACCEPT_KEYWORDS="x86"

ACCEPT_LICENSE="@FREE"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O2 -march=pentium4 -mmmx -msse -msse2 -pipe"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt"

CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"

CXXFLAGS="-O2 -march=pentium4 -mmmx -msse -msse2 -pipe"

DISTDIR="/usr/portage/distfiles-Idefix"

EMERGE_DEFAULT_OPTS="--buildpkg --with-bdeps=y --keep-going=y"

ENV_UNSET="DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"

FCFLAGS="-O2 -march=i686 -pipe"

FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync"

FFLAGS="-O2 -march=i686 -pipe"

GENTOO_MIRRORS="/usr/portage/distfiles-Idefix                 /usr/portage/distfiles-Asterix                 ftp://mirror.netcologne.de/gentoo                 ftp://ftp.fau.de/gentoo                 ftp://mirror.switch.ch/mirror/gentoo"

LANG="de_CH.utf8"

LC_ALL="de_CH.utf8"

LDFLAGS="-Wl,-O1 -Wl,--as-needed"

LINGUAS="de"

MAKEOPTS="-j5"

PKGDIR="/usr/portage/binpkgs"

PORTAGE_CONFIGROOT="/"

PORTAGE_RSYNC_EXTRA_OPTS="--compress-level=9"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"

PORTAGE_TMPDIR="/tmp"

USE="X a52 aac acl acpi alsa berkdb branding bzip2 cairo cdda cdr cjk cli consolekit crypt cups cxx dbus dri dts dvd dvdr emboss encode evdev exif ffmpeg flac fontconfig gd gdbm gif gimp gnome-keyring gnutls gphoto2 gpm gstreamer gtk gtk3 iconv icu java jpeg lcms libnotify libtirpc lm_sensors lzma mad mng mp3 mp4 mpeg mysql ncurses nls nptl nsplugin offlinehelp ogg opengl openmp pam pango pch pcre pdf pm-utils png policykit ppds qt5 quicktime raw readline sbcl sdl seccomp sound spell split-usr sqlite ssl startup-notification subversion svg tcpd threads tiff timidity tk truetype udev udisks unicode upower usb vcd video vorbis wxwidgets x264 x86 xcb xfce xml xscreensaver xv xvid zlib" ABI_X86="32" ADA_TARGET="gnat_2018" 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" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd 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 cgi cgid 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" CALLIGRA_FEATURES="karbon sheets words" CAMERAS="directory" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" ELIBC="glibc" GPSD_PROTOCOLS="garmin" INPUT_DEVICES="evdev keyboard mouse" KERNEL="linux" L10N="de" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer nlpsolver" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-2" POSTGRES_TARGETS="postgres10 postgres11" PYTHON_SINGLE_TARGET="python3_6" PYTHON_TARGETS="python2_7 python3_6" RUBY_TARGETS="ruby25" SANE_BACKENDS="hp" USERLAND="GNU" VIDEO_CARDS="vesa vboxvideo" XFCE_PLUGINS="clock power trash" 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"

Unset:  CC, CPPFLAGS, CTARGET, CXX, INSTALL_MASK, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS

root@Idefix /etc/portage # 

```

----------

## franzf

Danke.

Leider sind die Zeilen des build log abgeschnitten, hast du aus der Konsole kopiert, oder?

Das vollständige build.log wäre schon gut. Lad es doch einfach auf pastebin.com o.Ä. hoch.

Auch das environment file wäre interessant, sollte noch unter /tmp/portage/dev-lang/python-3.7.6/temp/environment zu finden sein. Dort liegt übrigens auch das build.log.

Ansonsten seh ich, dass sich im ebuild zwischen den 3.6ern und 3.7ern EINIGES getan hat.

Eine "ältere" Version der 3.7er Serie pflegt Martin Vaeth in seinem Overlay:

https://github.com/vaeth/mv-overlay

Wenn das bei dir geht kann man die Ursache vielleicht besser einkreisen.

----------

## Murmeltier

 *franzf wrote:*   

> Danke.
> 
> Leider sind die Zeilen des build log abgeschnitten, hast du aus der Konsole kopiert, oder?
> 
> Das vollständige build.log wäre schon gut. Lad es doch einfach auf pastebin.com o.Ä. hoch.
> ...

 

Hallo, das Build-Log ist unter https://pastebin.com/zz9f0sx4 zu finden.

/tmp/portage/dev-lang/python-3.7.6/temp/environment ist hier : https://pastebin.com/3T9vn579

Danke

----------

## mike155

Hallo Murmeltier,

danke für die Dateien! 

Ich habe meine alte x86 VM wieder reaktiviert und habe versucht, das Problem nachzustellen.

Laut Build Log werden bei Murmeltier folgende USE-Flags und Features verwendet:

```
Package:    dev-lang/python-3.7.6

Repository: gentoo

Maintainer: python@gentoo.org

USE:        abi_x86_32 elibc_glibc gdbm kernel_linux ncurses readline sqlite ssl tk userland_GNU x86 xml

FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox
```

Wenn ich bei mir folgende Anweisung starte:

```
USE="gdbm kernel_linux ncurses readline sqlite ssl tk userland_GNU x86 xml" emerge --oneshot python
```

wird Python mit den gleichen Features und USE flags übersetzt. Bei mir funktioniert es aber und ich erhalte aber keinen Fehler.

An den CFLAGS liegt es auch nicht...

```
CFLAGS="-O2 -march=pentium4 -mmmx -msse -msse2 -pipe"
```

... und auch nicht an den Sprach-Einstellungen

```
LANG="de_CH.utf8"

LC_ALL="de_CH.utf8"

LINGUAS="de"
```

Also, ich kann den Bug nicht reproduzieren. Du könntest folgendes probieren:

Python ohne USE-Flag "tk" installieren. Tritt der Fehler dann auch auf?

Es wäre möglich, dass distcc und ccache hier ihr Unwesen treiben. Laut "emerge --info" sind sie "disabled". Aber wir hatten schon mal einen Fall, in dem die beiden "disabled" waren und trotzdem zu merkwürdigen Fehlern geführt haben. Vielleicht musst Du sie noch mehr "disablen", evtl. sogar komplett deinstallieren?

----------

## Murmeltier

 *mike155 wrote:*   

> Hallo Murmeltier,
> 
> danke für die Dateien! 
> 
> Ich habe meine alte x86 VM wieder reaktiviert und habe versucht, das Problem nachzustellen.
> ...

 

Danke mike155 für die Analyse,

folgendes hat sich ergeben:

ccache und distccd zu deinstallieren hat keinen Einfluss.

USE - Flag "-tk" habe ich in package.use gesetzt, hilft auch nichts.

--> ABER wenn ich das Paket auf dem Hauptrechner in AMD64-Architktur compiliere, dann gehts    :Shocked:   :Shocked: 

Da der Fehler im Link-Step auftritt, hat er wohl dieses ominöse Modul "_struct" gar nicht erst erstellt?

Es bleibt vorerst rätselhaft.

----------

## Murmeltier

 *Murmeltier wrote:*   

> 
> 
> --> ABER wenn ich das Paket auf dem Hauptrechner in AMD64-Architktur compiliere, dann gehts    
> 
> Da der Fehler im Link-Step auftritt, hat er wohl dieses ominöse Modul "_struct" gar nicht erst erstellt?
> ...

 

Hab noch was gefunden beim Durchsuchen der Logs:

amd64:

root@Asterix /var/log/portage # grep -ir "'_struct'" *.log

dev-lang:python-2.7.17-r1:20200229-075809.log:building '_struct' extension

dev-lang:python-3.6.10:20200229-075631.log:building '_struct' extension

dev-lang:python-3.7.6:20200229-075952.log:building '_struct' extension

x86:

root@Idefix /var/log/portage # grep -ir "'_struct'" *.log

dev-lang:python-2.7.17-r1:20200228-171739.log:building '_struct' extension

dev-lang:python-3.6.10:20200228-171529.log:building '_struct' extension

dev-lang:python-3.7.6:20200228-171933.log:ModuleNotFoundError: No module named '_struct'

KEIN "building '_struct' extension" unter x86, aha!

Wieso weshalb warum?

 :Rolling Eyes: 

----------

## franzf

 *Quote:*   

> KEIN "building '_struct' extension" unter x86, aha!
> 
> Wieso weshalb warum? 

 

Weil es vorher bei den imports schon abschmiert.

Was halt irgendwie komisch ist. gettext ist involviert, aber für den Fall dass es bei gettext Probleme gibt ist ein fallback definiert:

/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/Lib/optparse.py

ab Zeile 89.

```
try:

    from gettext import gettext, ngettext

except ImportError:

    def gettext(message):

        return message

    def ngettext(singular, plural, n):

        if n == 1:

            return singular

        return plural

_ = gettext

```

Kannst du mal machen (als root):

```
# cd /tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/

# ./python -E -c "import sys; print(sys.path)"
```

Und die Ausgabe posten?

Bitte auch noch deine /etc/portage/make.conf.

(Hast du auch noch eine /etc/make.conf?)

Auch noch interessant könnte sein, ob du in /usr/local/bin und /usr/local/sbin was liegen hast, und wenn ja -> was?

Dein clang ist auch noch im PATH: /usr/lib/llvm/8/bin

Was liegt da drinnen?

----------

## franzf

Hmmm. Kannst du kurz was ausprobieren?

```
# cd /tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/

# vim Lib/gettext.py
```

(kann natürlich jeder texteditor sein, nicht zwingend vim)

Dann in Zeile 53 einfügen

```
import struct
```

Und speichern.

Danach

```
# ebuild /usr/portage/portage/dev-lang/python/python-3.7.6.ebuild compile
```

kompiliert der jetzt fertig? Solltest du ja sofort sehen können.

----------

## Murmeltier

 *franzf wrote:*   

>  *Quote:*   KEIN "building '_struct' extension" unter x86, aha!
> 
> Wieso weshalb warum?  
> 
> Weil es vorher bei den imports schon abschmiert.
> ...

 

Hallo, hier die Ergebnisse:

```
./python -E -c "import sys; print(sys.path)" geht nicht

==> ./python: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

Ich muss /usr/bin/python nehmen

/usr/bin/python -E -c "import sys; print(sys.path)"

['', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/lib/python3.6/site-packages']
```

Meine /etc/portage/make.conf  (/etc/make.conf gibt es nicht)

```
cat /etc/portage/make.conf

# These settings were set by the catalyst build script that automatically built this stage

# Please consult /etc/make.conf.example for a more detailed example

#----------------------------------------------------------------------------

# DW, 25.01.2008, Anpassung

#----------------------------------------------------------------------------

# Compilereinstellungen

CFLAGS="-O2 -march=pentium4 -mmmx -msse -msse2 -pipe"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

CPU_FLAGS_X86="mmx mmxext sse sse2"

MAKEOPTS="-j5"

# Erklärung der USE-Flags: /usr/portage/portage/profiles/use.desc

USE="cjk dbus evdev ffmpeg fontconfig gd gphoto2 gimp gnome-keyring gnutls \

     gstreamer gtk gtk3 icu java lm_sensors lzma mysql nsplugin offlinehelp \

     opengl pch pm-utils qt5 quicktime raw sbcl sound sqlite subversion \

     timidity threads tk vcd video wxwidgets xfce xscreensaver \

     -bindist -bluetooth -cddb -cvs -doc -dso -embedded -enca -fortran -gjc \

     -git -gnome -ipv6 -kde -kerberos -ldap -motif -ppp -pulseaudio -qt4 \

     -samba -schroedinger -speex -systemd -wayland -wifi -xattr -xinerama"

# Sonstige Installationsflags

#

# LINGUAS/L10N ist wichtig für die Installation lokaler Sprachdateien!

# INPUT_DEVICES,VIDEO_CARDS ist für massgeschneiderten X-Server nötig.

# RUBY_TARGETS ist für die Auswahl von Ruby-Paketen zuständig.

ABI_X86="32"

LINGUAS="de"

L10N="de"

INPUT_DEVICES="evdev keyboard mouse"

VIDEO_CARDS="vesa vboxvideo"

CAMERAS="directory"

GPSD_PROTOCOLS="garmin"

LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer nlpsolver"

RUBY_TARGETS="ruby25"

SANE_BACKENDS="hp"

XFCE_PLUGINS="clock power trash"

# Definition diverser Optionen.

EMERGE_DEFAULT_OPTS="--buildpkg --with-bdeps=y --keep-going=y"

FEATURES=""

# Ort der Portage-Verzeichnisse

PORTDIR="/usr/portage/portage"

DISTDIR="/usr/portage/distfiles-Idefix"

RPMDIR="/usr/portage/rpm"

PKGDIR="/usr/portage/binpkgs"

PORTAGE_ELOG_CLASSES="warn error log"

PORTAGE_ELOG_SYSTEM="save_summary"

PORTAGE_TMPDIR="/tmp"

PORTAGE_TMPFS="/dev/shm"

PORT_LOGDIR="/var/log/portage"

# Quellen für Installationspakete

PORTAGE_RSYNC_EXTRA_OPTS="--compress-level=9"

GENTOO_MIRRORS="/usr/portage/distfiles-Idefix \

                /usr/portage/distfiles-Asterix \

                ftp://mirror.netcologne.de/gentoo \

                ftp://ftp.fau.de/gentoo \

                ftp://mirror.switch.ch/mirror/gentoo"
```

Nichts in /usr/local

```
root@Idefix /tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6 # ll /usr/local/bin

insgesamt 0

root@Idefix /tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6 # ll /usr/local/sbin

insgesamt 0
```

Und der Inhalt von clang:

```
ll  /usr/lib/llvm/8/bin

insgesamt 14876

-rwxr-xr-x 1 root root  433316 05.10.2019 08:25:46 bugpoint*

-rwxr-xr-x 1 root root  179424 28.02.2020 21:31:35 c-index-test*

lrwxrwxrwx 1 root root       7 28.02.2020 21:31:31 clang -> clang-8*

lrwxrwxrwx 1 root root       9 28.02.2020 21:31:33 clang++ -> clang++-8*

lrwxrwxrwx 1 root root       7 28.02.2020 21:31:33 clang++-8 -> clang-8*

-rwxr-xr-x 1 root root  146168 28.02.2020 21:31:35 clang-8*

-rwxr-xr-x 1 root root   46644 28.02.2020 21:31:35 clang-apply-replacements*

-rwxr-xr-x 1 root root  235424 28.02.2020 21:31:35 clang-change-namespace*

-rwxr-xr-x 1 root root   34396 28.02.2020 21:31:35 clang-check*

lrwxrwxrwx 1 root root      10 28.02.2020 21:31:33 clang-cl -> clang-cl-8*

lrwxrwxrwx 1 root root       7 28.02.2020 21:31:33 clang-cl-8 -> clang-8*

lrwxrwxrwx 1 root root      11 28.02.2020 21:31:33 clang-cpp -> clang-cpp-8*

lrwxrwxrwx 1 root root       7 28.02.2020 21:31:33 clang-cpp-8 -> clang-8*

-rwxr-xr-x 1 root root   91908 28.02.2020 21:31:35 clangd*

-rwxr-xr-x 1 root root   22040 28.02.2020 21:31:35 clang-extdef-mapping*

-rwxr-xr-x 1 root root   67244 28.02.2020 21:31:35 clang-format*

-rwxr-xr-x 1 root root   75484 28.02.2020 21:31:35 clang-import-test*

-rwxr-xr-x 1 root root  100212 28.02.2020 21:31:35 clang-include-fixer*

-rwxr-xr-x 1 root root   59016 28.02.2020 21:31:35 clang-offload-bundler*

-rwxr-xr-x 1 root root  231272 28.02.2020 21:31:35 clang-query*

-rwxr-xr-x 1 root root  128764 28.02.2020 21:31:35 clang-refactor*

-rwxr-xr-x 1 root root   71460 28.02.2020 21:31:35 clang-rename*

-rwxr-xr-x 1 root root   34372 28.02.2020 21:31:35 clang-reorder-fields*

-rwxr-xr-x 1 root root  247692 28.02.2020 21:31:35 clang-tidy*

-rwxr-xr-x 1 root root   13588 05.10.2019 08:25:46 count*

-rwxr-xr-x 1 root root  398908 28.02.2020 21:31:35 diagtool*

-rwxr-xr-x 1 root root  457312 05.10.2019 08:25:46 dsymutil*

-rwxr-xr-x 1 root root   83564 05.10.2019 08:25:46 FileCheck*

-rwxr-xr-x 1 root root  231280 28.02.2020 21:31:35 find-all-symbols*

-rwxr-xr-x 1 root root   21841 28.02.2020 21:31:32 git-clang-format*

-rwxr-xr-x 1 root root    9977 28.02.2020 21:31:32 hmaptool*

lrwxrwxrwx 1 root root      25 28.02.2020 21:31:33 i686-pc-linux-gnu-clang -> i686-pc-linux-gnu-clang-8*

lrwxrwxrwx 1 root root      27 28.02.2020 21:31:33 i686-pc-linux-gnu-clang++ -> i686-pc-linux-gnu-clang++-8*

lrwxrwxrwx 1 root root       9 28.02.2020 21:31:33 i686-pc-linux-gnu-clang++-8 -> clang++-8*

lrwxrwxrwx 1 root root       7 28.02.2020 21:31:33 i686-pc-linux-gnu-clang-8 -> clang-8*

lrwxrwxrwx 1 root root      28 28.02.2020 21:31:33 i686-pc-linux-gnu-clang-cl -> i686-pc-linux-gnu-clang-cl-8*

lrwxrwxrwx 1 root root      10 28.02.2020 21:31:33 i686-pc-linux-gnu-clang-cl-8 -> clang-cl-8*

lrwxrwxrwx 1 root root      29 28.02.2020 21:31:33 i686-pc-linux-gnu-clang-cpp -> i686-pc-linux-gnu-clang-cpp-8*

lrwxrwxrwx 1 root root      11 28.02.2020 21:31:33 i686-pc-linux-gnu-clang-cpp-8 -> clang-cpp-8*

-rwxr-xr-x 1 root root   64704 05.10.2019 08:25:46 i686-pc-linux-gnu-llvm-config*

-rwxr-xr-x 1 root root  186364 05.10.2019 08:25:46 llc*

-rwxr-xr-x 1 root root  370844 05.10.2019 08:25:46 lli*

-rwxr-xr-x 1 root root  104016 05.10.2019 08:25:46 lli-child-target*

-rwxr-xr-x 1 root root   67324 05.10.2019 08:25:46 llvm-ar*

-rwxr-xr-x 1 root root   26128 05.10.2019 08:25:46 llvm-as*

-rwxr-xr-x 1 root root   67112 05.10.2019 08:25:46 llvm-bcanalyzer*

-rwxr-xr-x 1 root root   26136 05.10.2019 08:25:46 llvm-cat*

-rwxr-xr-x 1 root root  141048 05.10.2019 08:25:46 llvm-cfi-verify*

lrwxrwxrwx 1 root root      29 05.10.2019 08:25:43 llvm-config -> i686-pc-linux-gnu-llvm-config*

-rwxr-xr-x 1 root root  383148 05.10.2019 08:25:46 llvm-cov*

-rwxr-xr-x 1 root root  117536 05.10.2019 08:25:46 llvm-c-test*

-rwxr-xr-x 1 root root   26140 05.10.2019 08:25:46 llvm-cvtres*

-rwxr-xr-x 1 root root   75352 05.10.2019 08:25:46 llvm-cxxdump*

-rwxr-xr-x 1 root root   30224 05.10.2019 08:25:46 llvm-cxxfilt*

-rwxr-xr-x 1 root root   38436 05.10.2019 08:25:46 llvm-cxxmap*

-rwxr-xr-x 1 root root   95776 05.10.2019 08:25:46 llvm-diff*

-rwxr-xr-x 1 root root   38488 05.10.2019 08:25:46 llvm-dis*

lrwxrwxrwx 1 root root       7 05.10.2019 08:25:42 llvm-dlltool -> llvm-ar*

-rwxr-xr-x 1 root root  112540 05.10.2019 08:25:46 llvm-dwarfdump*

-rwxr-xr-x 1 root root  100132 05.10.2019 08:25:46 llvm-dwp*

-rwxr-xr-x 1 root root   34336 05.10.2019 08:25:46 llvm-elfabi*

-rwxr-xr-x 1 root root  330496 05.10.2019 08:25:46 llvm-exegesis*

-rwxr-xr-x 1 root root   54908 05.10.2019 08:25:46 llvm-extract*

lrwxrwxrwx 1 root root       7 05.10.2019 08:25:42 llvm-lib -> llvm-ar*

-rwxr-xr-x 1 root root   59056 05.10.2019 08:25:46 llvm-link*

-rwxr-xr-x 1 root root  202628 05.10.2019 08:25:46 llvm-lto*

-rwxr-xr-x 1 root root  161500 05.10.2019 08:25:46 llvm-lto2*

-rwxr-xr-x 1 root root   96064 05.10.2019 08:25:46 llvm-mc*

-rwxr-xr-x 1 root root  145156 05.10.2019 08:25:46 llvm-mca*

-rwxr-xr-x 1 root root   22020 05.10.2019 08:25:46 llvm-modextract*

-rwxr-xr-x 1 root root   26108 05.10.2019 08:25:46 llvm-mt*

-rwxr-xr-x 1 root root  137088 05.10.2019 08:25:46 llvm-nm*

-rwxr-xr-x 1 root root  337776 05.10.2019 08:25:46 llvm-objcopy*

-rwxr-xr-x 1 root root  604764 05.10.2019 08:25:46 llvm-objdump*

-rwxr-xr-x 1 root root   50764 05.10.2019 08:25:46 llvm-opt-report*

-rwxr-xr-x 1 root root 1055896 05.10.2019 08:25:46 llvm-pdbutil*

-rwxr-xr-x 1 root root   17712 05.10.2019 08:25:46 llvm-PerfectShuffle*

-rwxr-xr-x 1 root root  149312 05.10.2019 08:25:46 llvm-profdata*

lrwxrwxrwx 1 root root       7 05.10.2019 08:25:42 llvm-ranlib -> llvm-ar*

-rwxr-xr-x 1 root root  177932 05.10.2019 08:25:46 llvm-rc*

lrwxrwxrwx 1 root root      12 05.10.2019 08:25:43 llvm-readelf -> llvm-readobj*

-rwxr-xr-x 1 root root 1178332 05.10.2019 08:25:46 llvm-readobj*

-rwxr-xr-x 1 root root   79660 05.10.2019 08:25:46 llvm-rtdyld*

-rwxr-xr-x 1 root root   87676 05.10.2019 08:25:46 llvm-size*

-rwxr-xr-x 1 root root   21996 05.10.2019 08:25:46 llvm-split*

-rwxr-xr-x 1 root root   67428 05.10.2019 08:25:46 llvm-stress*

-rwxr-xr-x 1 root root   34316 05.10.2019 08:25:46 llvm-strings*

lrwxrwxrwx 1 root root      12 05.10.2019 08:25:42 llvm-strip -> llvm-objcopy*

-rwxr-xr-x 1 root root   50764 05.10.2019 08:25:46 llvm-symbolizer*

-rwxr-xr-x 1 root root 2443508 05.10.2019 08:25:45 llvm-tblgen*

-rwxr-xr-x 1 root root   22000 05.10.2019 08:25:46 llvm-undname*

-rwxr-xr-x 1 root root  448500 05.10.2019 08:25:46 llvm-xray*

-rwxr-xr-x 1 root root  272380 28.02.2020 21:31:35 modularize*

-rwxr-xr-x 1 root root   13676 05.10.2019 08:25:46 not*

-rwxr-xr-x 1 root root  296848 05.10.2019 08:25:46 obj2yaml*

-rwxr-xr-x 1 root root  396436 05.10.2019 08:25:46 opt*

-rwxr-xr-x 1 root root  120704 05.10.2019 08:25:46 sancov*

-rwxr-xr-x 1 root root   26104 05.10.2019 08:25:46 sanstats*

-rwxr-xr-x 1 root root   55075 13.12.2018 21:55:34 scan-build*

-rwxr-xr-x 1 root root    4705 28.02.2020 21:31:32 scan-view*

-rwxr-xr-x 1 root root   67128 05.10.2019 08:25:46 verify-uselistorder*

-rwxr-xr-x 1 root root  169692 05.10.2019 08:25:46 yaml2obj*

-rwxr-xr-x 1 root root   38464 05.10.2019 08:25:46 yaml-bench*

```

----------

## Murmeltier

 *franzf wrote:*   

> Hmmm. Kannst du kurz was ausprobieren?
> 
> ```
> # cd /tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6/
> 
> ...

 

JAAAA    :Very Happy: 

```
>>> Source compiled.
```

Schönen Dank, also zur Not mache ich die ebuild-Schritte manuell,

aber es gibt sicher einen eleganteren Weg, oder?

----------

## franzf

 *Murmeltier wrote:*   

> 
> 
> Hallo, hier die Ergebnisse:
> 
> ```
> ...

 

Ich will schauen, ob da irgendwas am path komisch ist.

Dass es nicht geht macht Sinn...

Mach mal

```
LD_LIBRARY_PATH=/tmp/portage/dev-lang/python-3.7.6/work/Python-3.7.6 ./python -E -c "import sys; print(sys.path)"
```

 *Quote:*   

> Meine /etc/portage/make.conf  (/etc/make.conf gibt es nicht)
> 
> ```
> cat /etc/portage/make.conf
> 
> ...

 

Nimm die beiden mal testweise raus.

PORTAGE_TMPFS find ich gar nicht dokumentiert.

Wg. PORTAGE_TMPDIR als tmpfs schau dann mal hier, scheint etwas mehr nötig zu sein:

https://wiki.gentoo.org/wiki/Portage_TMPDIR_on_tmpfs

 *Quote:*   

> JAAAA 
> 
> Code:	
> 
> >>> Source compiled.	
> ...

 

Wenn du es auch noch gleich installieren willst, mach weiter:

```
# ebuild /usr/portage/portage/dev-lang/python/python-3.7.6.ebuild install

# ebuild /usr/portage/portage/dev-lang/python/python-3.7.6.ebuild qmerge
```

Danach noch /usr/lib/python3.7/gettext.py Und die Änderung (import struct in Zeile 53) wieder rückgängig machen.

Funktionieren sollte es zawr, aber scheinbar kann die Performance leiden (siehe gettext.py Zeile 342)

Die eleganteste Lösung wäre, die Ursache für dein Problem zu finden.

Allerhöchstwahrscheinlich ist es irgendeine Schraube in deiner Systemkonfiguration, oder ein cornercase. 

Am besten machst du einen gentoo bugreport auf. wahrscheinlich/hoffentlich kann da dann jemand genaueres sagen.

----------

## mike155

@Murmeltier, @franzf: mit der Analyse seid Ihr noch ein ganzes Stück weitergekommen! Prima!  :Smile: 

Das Problem ist auf anderen Rechnern offenbar nicht reproduzierbar. Außerdem finden weder Google, noch der Gentoo Bugtracker Einträge zu dem Problem. Das sind Hinweise darauf, dass es sich um ein sehr spezielles Problem auf Murmeltiers Rechner handelt - und nicht um einen Bug in Gentoo, Python oder in einem anderen Paket.

Ich würde:

die Portage Konfigurationsdateien (/var/lib/portage/world, /etc/portage/*) kräftig aufräumen: alles raus, was nicht unbedingt gebraucht wird und wieder möglichst nahe zu den Default-Werten

alles rückgängig machen, was von Hand am System geändert wurde und was vom Default-Zustand abweicht oder abweichen könnte: beispielsweise von Hand (ohne emerge) installierte Software usw.

ein "emerge -e @world" gefolgt von einem "emerge --depclean" laufen lassen.

----------

## Murmeltier

 *mike155 wrote:*   

> @Murmeltier, @franzf: mit der Analyse seid Ihr noch ein ganzes Stück weitergekommen! Prima! 
> 
> Das Problem ist auf anderen Rechnern offenbar nicht reproduzierbar. Außerdem finden weder Google, noch der Gentoo Bugtracker Einträge zu dem Problem. Das sind Hinweise darauf, dass es sich um ein sehr spezielles Problem auf Murmeltiers Rechner handelt - und nicht um einen Bug in Gentoo, Python oder in einem anderen Paket.
> 
> Ich würde:
> ...

 

Das will ich noch kurz kommentieren.

- im World file sind nur Dinge, die ich per emerge explizit haben wollte, fast alles stable-Pakete.

- die package.* Dateien sind ebenso gepflegt, entweder sind USE-Flags von emerge angefordert worden oder ich wollte gewisse Funktionen haben

- Nichts ist von Hand geändert, nichts ist an portage "vorbei" installiert

- emerge -e @world ist leider keine Option, das würde ewig dauern.

Ich denke auch, es ist nicht EINE Ursache, sondern ein Zusammentreffen mehrerer Dinge.

Dass es niemand sonst bemerkt hat, mag auch daran liegen, dass kaum jemand noch x86-Pakete compiliert.

Und die Architektur alleine dürfte auch nicht die Ursache sein.

Aber es gibt den Workaround mit Lib/gettext.py

Danke an alle, die hier geholfen haben.

----------

## Murmeltier

Hallo zusammen,

ich komme nochmal mit dem Problem, dass sich python > 3.7.5 auf einem 32-bit System (nur da!) nicht kompilieren lässt.

Damals konnte ich den Workaround anwenden und in Lib/gettext.py ein "import struct" einbauen, wodurch es dann ging.

Bei Python 3.8 ist es noch schlimmer geworden, da hilft dieser Trick auch nicht mehr.

Output vom ersten Versuch:

```

LD_LIBRARY_PATH=/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2 CC='i686-pc-linux-gnu-gcc -pthread' LDSHARED='i686-pc-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,--as-needed -L.   ' CFLAGS='-Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv  '    _TCLTK_INCLUDES='' _TCLTK_LIBS=''    ./python -E ./setup.py  build

running build

running build_ext

Traceback (most recent call last):

  File "./setup.py", line 2445, in <module>

    main()

  File "./setup.py", line 2414, in main

    setup(# PyPI Metadata (PEP 301)

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/distutils/core.py", line 148, in setup

    dist.run_commands()

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/distutils/dist.py", line 966, in run_commands

    self.run_command(cmd)

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/distutils/dist.py", line 985, in run_command

    cmd_obj.run()

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/distutils/command/build.py", line 135, in run

    self.run_command(cmd_name)

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/distutils/cmd.py", line 313, in run_command

    self.distribution.run_command(command)

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/distutils/dist.py", line 985, in run_command

    cmd_obj.run()

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/distutils/command/build_ext.py", line 340, in run

    self.build_extensions()

  File "./setup.py", line 331, in build_extensions

    self.detect_modules()

  File "./setup.py", line 1701, in detect_modules

    self.configure_compiler()

  File "./setup.py", line 673, in configure_compiler

    self.add_ldflags_cppflags()

  File "./setup.py", line 655, in add_ldflags_cppflags

    parser = argparse.ArgumentParser()

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/argparse.py", line 1671, in __init__

    self._positionals = add_group(_('positional arguments'))

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/gettext.py", line 736, in gettext

    return dgettext(_current_domain, message)

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/gettext.py", line 662, in dgettext

    t = translation(domain, _localedirs.get(domain, None))

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/gettext.py", line 598, in translation

    t = _translations.setdefault(key, class_(fp))

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/gettext.py", line 261, in __init__

    self._parse(fp)

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/gettext.py", line 376, in _parse

    from struct import unpack

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/struct.py", line 13, in <module>

    from _struct import *

ModuleNotFoundError: No module named '_struct'

make: *** [Makefile:613: sharedmods] Error 1

 * ERROR: dev-lang/python-3.8.2-r1::gentoo failed (compile phase):

 *   emake failed

```

Nach Einbau von "import struct" kommt dieses:

```
LD_LIBRARY_PATH=/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2 CC='i686-pc-linux-gnu-gcc -pthread' LDSHARED='i686-pc-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,--as-needed -L.   ' CFLAGS='-Wno-unused-result -Wsign-compare -DNDEBUG  -O2 -march=pentium4 -mmmx -msse -msse2 -pipe -fwrapv  '    _TCLTK_INCLUDES='' _TCLTK_LIBS=''    ./python -E ./setup.py  build

Traceback (most recent call last):

  File "./setup.py", line 3, in <module>

    import argparse

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/argparse.py", line 92, in <module>

    from gettext import gettext as _, ngettext

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/gettext.py", line 53, in <module>

    import struct

  File "/tmp/portage/dev-lang/python-3.8.2-r1/work/Python-3.8.2/Lib/struct.py", line 13, in <module>

    from _struct import *

ModuleNotFoundError: No module named '_struct'

make: *** [Makefile:613: sharedmods] Error 1

 * ERROR: dev-lang/python-3.8.2-r1::gentoo failed (compile phase):

 *   emake failed

```

Etwas kürzer, aber dafür erfolglos.

In diversen Suchmaschinen ist nichts erhellendes zu finden.

Bin immer noch für Lösungsvorschläge dankbar, bin damit momentan überfordert.

Grüsse

----------

## Murmeltier

Hallo zusammen,

das Problem wurde heute in Gentoo Bugzilla gelöst, wenn es jemanden noch interessiert:

In "/usr/share/locale/de/LC_MESSAGES" existierte ein verwaistes, 11 Jahre altes File "messages.mo".

Nachdem dieses keinem Paket mehr angehörte, habe ich es gelöscht.

Seitdem lässt sich python wieder compilieren!

Vermutlich ein Relikt eines nicht ganz sauber entfernten Paketes, mit grosser Auswirkung.

----------

## mike155

 *Quote:*   

> Vermutlich ein Relikt eines nicht ganz sauber entfernten Paketes, mit grosser Auswirkung.

 

Danke für die Rückmeldung!

Fehler durch Dateien, die nicht in die System-Verzeichnisse gehören, sind außerordentlich schwierig zu analysieren und zu fixen. 

Ich achte deshalb sehr darauf, dass nur Portage in die System-Verzeichnisse schreibt. Ab und zu prüfe ich auch, ob in den System-Verzeichnissen Dateien stehen, die nicht über emerge/portage geschrieben wurden. Wenn ich welche finde, lösche ich sie - versuche aber vorher noch herauszufinden, wie sie eigentlich dorthin gelangt sind.

----------

## Josef.95

Huh ja, guter Fund :)

Und ja, danke für die Rückmeldung. Mich interessiert bei solchen Fehlern auch meist *wie* man drauf kam, drum suchte ich mir den Bugreport raus, und schaute mir das Debugging an -- sehr interessant.

Fein das ihr das (~11 Jahre) alte System habt retten können -- respekt :)

----------

## Murmeltier

 *Josef.95 wrote:*   

> Huh ja, guter Fund 
> 
> Und ja, danke für die Rückmeldung. Mich interessiert bei solchen Fehlern auch meist *wie* man drauf kam, drum suchte ich mir den Bugreport raus, und schaute mir das Debugging an -- sehr interessant.
> 
> Fein das ihr das (~11 Jahre) alte System habt retten können -- respekt 

 

Ja, und mike155 hat auch Recht, ich vermute dass irgendwas mit dem Datum der Datei passiert ist (oder der Grösse)

und dann hat portage beim unmerge die nicht mehr sauber abräumen können.

Nur 11 Jahre später hat's dann bei python geknallt.    :Wink: 

Da muss man erstmal drauf kommen...

----------

