Skip to content

Installation failures for pypy-3.9 on GitHub Actions #8693

Description

@mrmundt

What did you do?

We have a GitHub Actions suite that installs pillow (and lots of other libraries) on a combination of OS', Python versions, etc. In this suite, we have one job that uses pypy-3.9 which can no longer install pillow.

What did you expect to happen?

Assuming pypy-3.9 is still supported for pillow 11+, we expect it to install.

What actually happened?

Note that pillow installation on pypy-3.9 was fine until 11.1.0 was released. This is a new failure as of the newest release.

Building wheel for pillow (pyproject.toml): started
  Building wheel for pillow (pyproject.toml): finished with status 'error'
  error: subprocess-exited-with-error
  
  × Building wheel for pillow (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [209 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ExifTags.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageCms.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_tkinter_finder.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageGrab.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/MicImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_binary.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/TiffTags.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageQt.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageStat.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/GifImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_util.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_typing.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/TarIO.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/JpegPresets.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/BdfFontFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageMorph.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageFilter.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/QoiImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/report.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/__init__.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/__main__.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageTk.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PcfFontFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/GdImageFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImagePath.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageFont.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PSDraw.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/CurImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/FliImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ContainerIO.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageShow.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageMode.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PngImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageDraw.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageTransform.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/MspImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/SunImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/features.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_version.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageSequence.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageChops.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_deprecate.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageOps.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageEnhance.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageColor.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PaletteFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/GimpGradientFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageWin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/Image.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageMath.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/BlpImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/FitsImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImageDraw2.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/ImagePalette.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/FontFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/PdfParser.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/WalImageFile.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-pypy39/PIL
      running egg_info
      writing src/pillow.egg-info/PKG-INFO
      writing dependency_links to src/pillow.egg-info/dependency_links.txt
      writing requirements to src/pillow.egg-info/requires.txt
      writing top-level names to src/pillow.egg-info/top_level.txt
      reading manifest file 'src/pillow.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching '*.c'
      warning: no files found matching '*.h'
      warning: no files found matching '*.sh'
      warning: no files found matching '*.txt'
      warning: no files found matching '.flake8'
      warning: no previously-included files found matching '.appveyor.yml'
      warning: no previously-included files found matching '.clang-format'
      warning: no previously-included files found matching '.coveragerc'
      warning: no previously-included files found matching '.editorconfig'
      warning: no previously-included files found matching '.readthedocs.yml'
      warning: no previously-included files found matching 'codecov.yml'
      warning: no previously-included files found matching 'renovate.json'
      warning: no previously-included files matching '.git*' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      no previously-included directories found matching '.ci'
      no previously-included directories found matching 'wheels'
      adding license file 'LICENSE'
      writing manifest file 'src/pillow.egg-info/SOURCES.txt'
      copying src/PIL/_imaging.pyi -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_imagingcms.pyi -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_imagingft.pyi -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_imagingmath.pyi -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_imagingmorph.pyi -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_imagingtk.pyi -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/_webp.pyi -> build/lib.linux-x86_64-pypy39/PIL
      copying src/PIL/py.typed -> build/lib.linux-x86_64-pypy39/PIL
      running build_ext
      
      
      The headers or library files could not be found for jpeg,
      a required dependency when compiling Pillow from source.
      
      Please see the install instructions at:
         https://pillow.readthedocs.io/en/latest/installation/basic-installation.html
      
      Traceback (most recent call last):
        File "<string>", line 1032, in <module>
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/__init__.py", line 117, in setup
          return distutils.core.setup(**attrs)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/core.py", line 186, in setup
          return run_commands(dist)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/core.py", line 202, in run_commands
          dist.run_commands()
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/dist.py", line 983, in run_commands
          self.run_command(cmd)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/dist.py", line 999, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/dist.py", line 1002, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/command/bdist_wheel.py", line 379, in run
          self.run_command("build")
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/cmd.py", line 339, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/dist.py", line 999, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/dist.py", line 1002, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/command/build.py", line 136, in run
          self.run_command(cmd_name)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/cmd.py", line 339, in run_command
          self.distribution.run_command(command)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/dist.py", line 999, in run_command
          super().run_command(command)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/dist.py", line 1002, in run_command
          cmd_obj.run()
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/command/build_ext.py", line 99, in run
          _build_ext.run(self)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/_distutils/command/build_ext.py", line 365, in run
          self.build_extensions()
        File "<string>", line 851, in build_extensions
      RequiredDependencyException: jpeg
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "/opt/hostedtoolcache/PyPy/3.9.19/x64/lib/pypy3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/opt/hostedtoolcache/PyPy/3.9.19/x64/lib/pypy3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/opt/hostedtoolcache/PyPy/3.9.19/x64/lib/pypy3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 251, in build_wheel
          return _build_backend().build_wheel(wheel_directory, config_settings,
        File "/tmp/pip-install-ikrok8p4/pillow_844cf8e2030b418a965d58ef8db74046/_custom_build/backend.py", line 26, in build_wheel
          return super().build_wheel(wheel_directory, config_settings, metadata_directory)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/build_meta.py", line 438, in build_wheel
          return _build(['bdist_wheel', '--dist-info-dir', str(metadata_directory)])
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/build_meta.py", line 426, in _build
          return self._build_with_temp_dir(
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/build_meta.py", line 407, in _build_with_temp_dir
          self.run_setup()
        File "/tmp/pip-install-ikrok8p4/pillow_844cf8e2030b418a965d58ef8db74046/_custom_build/backend.py", line 20, in run_setup
          return super().run_setup(setup_script)
        File "/tmp/pip-build-env-uxt_za0z/overlay/lib/pypy3.9/site-packages/setuptools/build_meta.py", line 320, in run_setup
          exec(code, locals())
        File "<string>", line 1048, in <module>
      RequiredDependencyException:
      
      The headers or library files could not be found for jpeg,
      a required dependency when compiling Pillow from source.
      
      Please see the install instructions at:
         https://pillow.readthedocs.io/en/latest/installation/basic-installation.html
      
      
      [end of output]

What are your OS, Python and Pillow versions?

  • OS: Ubuntu 24.04
  • Python: pypy-3.9
  • Pillow: 11.1.0

Here is a link to the action that failed: https://github.com/Pyomo/pyomo/actions/runs/12749451978/job/35532014220

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions