# Lingering python 3.8 Packages



## i1045 (Aug 21, 2022)

I recently updated my ports-tree, and encountered a problem removing the old Python 3.8 packages.  I've read the UPDATING file - it has instructions for people using portmaster or pre-built packages, but I always build from source.  Here is an example of what I am encountering:


```
# cd /usr/ports/graphics/py-cairo
# make deinstall clean
===>  Deinstalling for py39-cairo
===>   py39-cairo not installed, skipping
===>  Cleaning for cairo-1.17.4_1,3
===>  Cleaning for cairo-1.17.4_1,3
===>  Cleaning for gtk-doc-1.33.2_2
===>  Cleaning for gtk-doc-1.33.2_2
===>  Cleaning for itstool-2.0.7
===>  Cleaning for itstool-2.0.7
===>  Cleaning for automake-1.16.5
===>  Cleaning for automake-1.16.5
===>  Cleaning for py39-cairo-1.21.0,1
```

The old version of py-cairo is removed...  


```
# make install clean
===>  Installing for py39-cairo-1.21.0,1
===>  Checking if py39-cairo is already installed
===>   Registering installation for py39-cairo-1.21.0,1
Installing py39-cairo-1.21.0,1...
pkg-static: py39-cairo-1.21.0,1 conflicts with py38-cairo-1.18.1_2,1 (installs files into the same place).  Problematic file: /usr/local/include/pycairo/py3cairo.h
*** Error code 1

Stop.
make: stopped in /usr/ports/graphics/py-cairo
```

I am looking for a clean way to remove the old py38-cairo-1.18.1_2,1 without causing further issues.  From what I have read, I expect the following would work, but it seems rather drastic:


```
# pkg remove py38-cairo-1.18.1_2,1
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 20 packages (of 0 packages in the universe):

Installed packages to be REMOVED:
        accounts-qml-module: 0.7_2
        akonadi-calendar: 21.12.0
        calendarsupport: 21.12.0
        eventviews: 21.12.0
        graphene: 1.10.6
        gstreamer1-plugins-gl: 1.16.2_2
        gstreamer1-vaapi: 1.16.2_2
        kaccounts-integration: 21.12.0
        kalendar: 0.3.1
        kf5-purpose: 5.88.0
        kmailtransport: 21.12.0
        libaccounts-glib: 1.25
        libaccounts-qt5: 1.16_2
        okular: 21.12.0_4
        pimcommon: 21.12.0
        py38-cairo: 1.18.1_2,1
        py38-gobject3: 3.38.0
        signon-ui: 0.17_8
        webkit2-gtk3: 2.34.2
        wx31-gtk3: 3.1.5_1

Number of packages to be removed: 20

The operation will free 156 MiB.

Proceed with deinstalling packages? [y/N]: n
```

I am really hesitant to do that, considering the following other Python 3.8 packages are still installed.  Each of these shows a similarly daunting list:


```
# pkg info | grep py38 | awk '{ print $1 }'
py38-cairo-1.18.1_2,1
py38-evdev-1.4.0
py38-gobject3-3.38.0
py38-pyudev-0.22.0
py38-setuptools-57.0.0
py38-six-1.16.0
```

So, for folks who build from source, is there a cleaner way to remove these?  


Thanks


----------



## Andriy (Aug 21, 2022)

Rebuild and reinstall all ports depending on py38.
FWIW, the ports infrastructure never had nice support for upgrades, that's why various tooling (like portmaster, portupgarde, etc) had to be invented.


----------



## i1045 (Aug 21, 2022)

I had a feeling that might be the case.  Once I get this sorted out, I'll check out portmaster.  Many thanks!


----------

