# Portage > 2.3.49 Inkompatibilitaets-Bug mit Porthole

## YPenguin

Das neue Portage (neuer als 2.3.49) funktioniert nicht mehr komplett mit Porthole. Wenn man in Porthole den Dialog für die Emerge-Details aufmacht, werden die Optionen in der package.use-Datei dort nicht mehr angezeigt. Es gibt nur noch einen Button für "package-use aktualisieren", was in dem Zusammenhang dann keinen Sinn macht.

----------

## Tyrus

Ich bekomme da auch Laufzeitfehler:

Bei Aufruf von porthole sieht das so aus:

```

Porthole: python version =  2.7.15 (default, Oct  2 2018, 08:35:54) 

[GCC 7.3.0]

importing installed modules

starting main()

CONFIG: id initialized to  471326

CONFIGURATION: id initialized to  471428

PREFERENCES: id initialized to  472918

initializing utils.__init__.py

DEBUG: id initialized to  473245

UTILS: mydebug.id =  473245

PREFERENCES: imported debug.id =  473245

BACKENDS: id initialized to  488522

PORTAGELIB: id initialized to  488779

STERMINAL: id initialized to  489252

VERSION_SORT: id initialized to  490370

PROPERTIES: id initialized to  490977

METADATA: id initialized to  491084

PORTAGELIB: imported portage-2.2 modules

PORTAGELIB: portage version = 2.3.51

BACKENDS: portage_lib import complete : <module 'porthole.backends.portagelib' from '/usr/lib64/python2.7/site-packages/porthole/backends/portagelib.pyc'>

MAINWINDOW: id initialized to  111821

DATABASE: id initialized to  118410

PACKAGE: id initialized to  118607

DBREADER: import id initialized to  118706

UTILITIES: id initialized to  118978

USERCONFIGS: id initialized to  119237

DBREADER: DatabaseReader.id initialized to  119665

PLUGIN: id initialized to  167520

ADVEMERGE: id initialized to  169405

PORTHOLE: i18n_DIR = /usr/share/locale/

threading.enumerate() =  [<_MainThread(MainThread, started 140492468774144)>]

this thread is : 140492468774144  current thread  <_MainThread(MainThread, started 140492468774144)>

Traceback (most recent call last):

  File "/usr/lib64/python2.7/site-packages/porthole/views/package.py", line 350, in _clicked

    self.mainwindow_callback("package changed", {'package': package, 'caller': 'VIEWS: Package view _clicked()'})

  File "/usr/lib64/python2.7/site-packages/porthole/mainwindow.py", line 424, in action_callback

    ret_val = getattr(self, "_action_%s_" %_action)(arg)

  File "/usr/lib64/python2.7/site-packages/porthole/mainwindow.py", line 454, in _action_package_changed_

    self.package_changed(arg['package'])

  File "/usr/lib64/python2.7/site-packages/porthole/mainwindow.py", line 1188, in package_changed

    self.packagebook.set_package(package)

  File "/usr/lib64/python2.7/site-packages/porthole/packagebook/notebook.py", line 92, in set_package

    self.summary.update_package_info(package)

  File "/usr/lib64/python2.7/site-packages/porthole/packagebook/summary.py", line 686, in update_package_info

    show_props(self.ebuild)

  File "/usr/lib64/python2.7/site-packages/porthole/packagebook/summary.py", line 432, in show_props

    ebuild_use_flags = get_reduced_flags(ebuild)

  File "/usr/lib64/python2.7/site-packages/porthole/backends/utilities.py", line 166, in get_reduced_flags

    package_use_flags = USERCONFIGS.get_user_config('USE', ebuild=ebuild)

  File "/usr/lib64/python2.7/site-packages/porthole/db/user_configs.py", line 268, in get_user_config

    match = portage_lib.xmatch('match-list', acpv, mylist=[ebuild])

  File "/usr/lib64/python2.7/site-packages/porthole/backends/portagelib.py", line 328, in xmatch

    results  =  settings.portdb.xmatch(*args, **kwargs)[:] # make a copy.  needed for <portage-svn-r5382

  File "/usr/lib64/python2.7/site-packages/portage/dbapi/porttree.py", line 1088, in xmatch

    self.async_xmatch(level, origdep, loop=loop))

  File "/usr/lib64/python2.7/site-packages/portage/util/_eventloop/EventLoop.py", line 833, in run_until_complete

    return future.result()

  File "/usr/lib64/python2.7/site-packages/portage/util/futures/futures.py", line 131, in result

    raise self._exception

AssertionError: Invalid level argument: 'match-list'

```

Der Laufzeitfehler tritt auf wenn man Details zu einem Package abruft. 

Hab erstmal temporär sys-apps/portage-2.3.51-r1 maskiert da ich porthole gerne als schnelles Anzeigetool nutze.

----------

## firefly

porthole ist so gut wie tot. Der Entwickler hat scheinbar keine Zeit um da weiter zu machen.

https://sourceforge.net/p/porthole/bugs/152/

----------

## YPenguin

Ich habe auch gesehen, dass M. Gorny einen Fork von Portage aufgemacht hat. Hat den schon jemand mal ausprobiert und was waren die Gründe für den Fork?

----------

## Tyrus

Nun wie es ausschaut soll im Sommer laut dem Entwickler ein neuer Student im Rahmen von Google Summer of Code dran arbeiten:

 *Quote:*   

> 
> 
> Brian Dolbec - 2019-04-23
> 
> Yes, pothole needs quite a few updates. We are waiting for the Google
> ...

 

Kann man hier nachlesen:

https://sourceforge.net/p/porthole/bugs/153/

Bin mal gespannt ob noch was passiert ...

----------

## Tyrus

Ich habe mir jetzt mal die Zeit genommen und den Fehler genauer angesehen. Das Problem liegt, soweit ich das überblicke in

/usr/lib64/python2.7/site-packages/porthole/db/user_configs.py

in Zeile 268:

```

match = portage_lib.xmatch('match-list', acpv, mylist=[ebuild])

```

Die Klasse portdbapi (https://dev.gentoo.org/~zmedico/portage/doc/api/portage.dbapi.porttree.portdbapi-class.html) beinhaltet das xmatch das da benutzt wird. Der String für den Levelparameter wurde umbenannt/geändert und es gibt kein 'match-list' mehr. Mein Patch macht daraus 'list-visible'.

```

--- porthole/db/user_configs.py 2019-06-18 02:03:42.954132526 +0200

+++ porthole/db/user_configs.py 2019-06-18 02:04:04.070206512 +0200

@@ -264,7 +264,7 @@ class UserConfigs:

                 return result

             for atom in atoms:

                 acpv = atom.acpv()

-                match = portage_lib.xmatch('match-list', acpv, mylist=[ebuild])

+                match = portage_lib.xmatch('list-visible', acpv, mylist=[ebuild])

                 if match:

                     if mytype in masktypes:

                         result.extend(acpv) # package.mask/unmask

```

Also die API hat sich da wohl geändert. Für mich funktioniert jetzt Porthole wieder korrekt und zeigt mir alle Details an. 

Wer gerne Porthole weiternutzen will bis sich da vielleicht mal was tut, kann sich dafür ja ein ebuild im lokalen Overlay erzeugen. So hab ichs zumindest jetzt gemacht.

----------

## franzf

Einfacher gehts hiermit:

https://wiki.gentoo.org/wiki//etc/portage/patches

----------

