re-running snapcraft when override-build dirty fails complaining about pip

Bug #1820843 reported by Evan
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Snapcraft
Incomplete
Undecided
Unassigned

Bug Description

Filing on behalf of a user.

$ snapcraft --shell-after
Launching a VM.
Skipping pull copy-stuff (already ran)
Skipping pull desktop-gtk3 (already ran)
Skipping pull rubber-band-async (already ran)
Skipping build copy-stuff (already ran)
Skipping build desktop-gtk3 (already ran)
Copying needed target link from the system /lib/x86_64-linux-gnu/liblzma.so.5.2.2
Copying needed target link from the system /lib/x86_64-linux-gnu/libpcre.so.3.13.3
Cleaning later steps and re-building rubber-band-async ('override-build' property changed)
/root/parts/rubber-band-async/install/usr/bin/python3: No module named pip
Failed to run '/root/parts/rubber-band-async/install/usr/bin/python3 -m pip wheel --no-index --find-links /root/parts/rubber-band-async/python-packages --wheel-dir /tmp/tmpytyegx1n --requirement /root/project/requirements-linux.txt https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.0.4-cp36-cp36m-linux_x86_64.whl': Exited with code 1.
Run the same command again with --debug to shell into the environment if you wish to introspect this failure.
An error occurred when trying to execute 'sudo -i env SNAPCRAFT_HAS_TTY=True snapcraft snap' with 'multipass': returned exit code 2.

I would think this user error if not for the fact that pip comes from the plugin itself, so on first inspection it looks like snapcraft is cleaning the pip installation but not reinstalling it prior to running again.

Here's the snapcraft.yaml:
name: rubber-band-async # you probably want to 'snapcraft register <name>'
version: '0.1' # just for humans, typically '1.2+git' or '1.3.2'
summary: Rubberband wxPython app with wxasync clock # 79 char long summary
description: |
  ...
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: strict # use 'strict' once you have the right plugs and slots
base: core18

apps:
   rubber-band-async:
       command: desktop-launch python3 $SNAP/rubber_band_async.py
       plugs: [x11, unity7, pulseaudio, home, gsettings, network]
       environment:
           LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/pulseaudio
   python:
       command: usr/bin/python -vvv
   python3:
       command: usr/bin/python3 -vvv
   python-nopath:
       command: python -vvv
   python3-nopath:
       command: python3 -vvv
   report:
       command: python3 $SNAP/report_snap_env.py
   report-hack:
       command: python3 $SNAP/report_snap_env.py
       environment:
         PATH: $PATH:$SNAP/bin/
         PYTHONPATH: $PYTHONPATH:$SNAP/lib/python3.6/site-packages

parts:
 desktop-gtk3:
   build-packages:
   - build-essential
   - libgtk-3-dev
   make-parameters:
   - FLAVOR=gtk3
   plugin: make
   source: https://github.com/ubuntu/snapcraft-desktop-helpers.git
   source-subdir: gtk
   stage-packages:
   - libxkbcommon0
   - ttf-ubuntu-font-family
   - dmz-cursor-theme
   - light-themes
   - adwaita-icon-theme
   - gnome-themes-standard
   - shared-mime-info
   - libgtk-3-0
   - libgdk-pixbuf2.0-0
   - libglib2.0-bin
   - libgtk-3-bin
   - unity-gtk3-module
   - libappindicator3-1
   - locales-all
   - xdg-user-dirs
   - ibus-gtk3
   - libibus-1.0-5
   - fcitx-frontend-gtk3
 copy-stuff:
   plugin: dump
   source: .
 rubber-band-async:
   # See 'snapcraft plugins'
   plugin: python
   python-version: python3
   source: .
   stage-packages:
       # - libc6
       - libssl-dev
       - libjpeg-dev
       - libtiff-dev
       - libsdl1.2-dev
       - libnotify-dev
       - freeglut3
       - ibus-gtk3
       - libwebkitgtk-3.0-0
       - zlib1g
       - libsm6
       - libpulse0
       - libslang2
   #after: [desktop-gtk3]
   python-packages:
       #- https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.0.4-cp37-cp37m-linux_x86_64.whl
       - https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04/wxPython-4.0.4-cp36-cp36m-linux_x86_64.whl
   requirements:
       - /root/project/requirements-linux.txt

Evan (ev)
description: updated
Revision history for this message
Andy (andybulka) wrote :

@Evan - could you please edit and remove all commands in the above snapfile.yaml except the first one. They were just commands I was playing around with and some don't compile, so are unnecessary to the problem at hand.

Also your interesting comment:

  "I would think this user error if not for the fact that pip comes from the plugin itself, so on first inspection it looks like snapcraft is cleaning the pip installation but not reinstalling it prior to running again."

seems to be lost/hard to see between the listings of the shell output and the snapcraft.yaml - perhaps add some spacing?

To all: this issue might also be related to https://forum.snapcraft.io/t/error-you-must-give-at-least-one-requirement-to-install-when-rebuilding-parts-with-python-plugin/9011
 there certainly have been multiple complaints about this pip bug on the internet.

Changed in snapcraft:
milestone: none → 3.4
Changed in snapcraft:
milestone: 3.4 → 3.5
Revision history for this message
Sergio Schvezov (sergiusens) wrote :

IIRC, the pip/requirements issue was fixed in 3.3, is this still reproduceable for you?

Changed in snapcraft:
status: New → Incomplete
Revision history for this message
Michael Vogt (mvo) wrote :

I get this issue (it seems it's the same) with snapcraft 4.4.2:
"""
Launching a VM.
                                                                                                                                                                                                                                          Skipping pull a1fbox (already ran)
Skipping pull blocker (already ran)
Building a1fbox
/root/parts/a1fbox/install/usr/bin/python3: No module named pip
Failed to run '/root/parts/a1fbox/install/usr/bin/python3 -m pip wheel --no-index --find-links /root/parts/a1fbox/python-packages --wheel-dir /tmp/tmpmx7gav05 --requirement /root/parts/a1fbox/build/requirements.txt': Exited with code 1.
Run the same command again with --debug to shell into the environment if you wish to introspect this failure.
"""
doing a snapcraft clean fixes it.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.