signalstickers/Adhesive

Installation requires compilation from source

Closed this issue · 4 comments

maqp commented

OS: Ubuntu 20.10
Python version: 3.8.6

Steps to reproduce

$ git clone https://github.com/signalstickers/Adhesive.git
$ cd Adhesive/
$ python3.8 -m venv virtualenv
$ . virtualenv/bin/activate
(virtualenv) $ python3.8 -m pip install -Ur requirements.txt

Throws

Collecting toml~=0.10
  Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting Pillow-SIMD~=7.0
  Using cached Pillow-SIMD-7.0.0.post3.tar.gz (630 kB)
Collecting telethon~=1.0
  Using cached Telethon-1.19.0-py3-none-any.whl (501 kB)
Collecting sqlcipher3-binary~=0.4
  Using cached sqlcipher3_binary-0.4.5-cp38-cp38-manylinux1_x86_64.whl (4.6 MB)
Collecting signalstickers-client~=3.0
  Using cached signalstickers_client-3.0.0-py3-none-any.whl (16 kB)
Collecting httpx~=0.16
  Using cached httpx-0.16.1-py3-none-any.whl (65 kB)
Collecting semaphore-bot~=0.9
  Using cached semaphore_bot-0.9.1-py3-none-any.whl (35 kB)
Processing /home/maqp/.cache/pip/wheels/aa/ca/9c/8a3c00512585c703edc457db81c066b9609d76758c74f72ac6/pyaes-1.6.1-py3-none-any.whl
Collecting rsa
  Using cached rsa-4.6-py3-none-any.whl (47 kB)
Collecting protobuf<4.0.0,>=3.13.0
  Using cached protobuf-3.14.0-cp38-cp38-manylinux1_x86_64.whl (1.0 MB)
Collecting anyio<3.0.0,>=2.0.2
  Using cached anyio-2.0.2-py3-none-any.whl (62 kB)
Collecting cryptography<4.0.0,>=3.1.1
  Using cached cryptography-3.3.1-cp36-abi3-manylinux2010_x86_64.whl (2.6 MB)
Collecting sniffio
  Using cached sniffio-1.2.0-py3-none-any.whl (10 kB)
Collecting httpcore==0.12.*
  Using cached httpcore-0.12.2-py3-none-any.whl (54 kB)
Collecting rfc3986[idna2008]<2,>=1.3
  Using cached rfc3986-1.4.0-py2.py3-none-any.whl (31 kB)
Collecting certifi
  Using cached certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
Collecting python-dateutil==2.8.1
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting attrs==18.2.0
  Using cached attrs-18.2.0-py2.py3-none-any.whl (34 kB)
Collecting pyasn1>=0.1.3
  Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Collecting six>=1.9
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting idna>=2.8
  Using cached idna-3.1-py3-none-any.whl (58 kB)
Collecting cffi>=1.12
  Using cached cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl (411 kB)
Collecting h11==0.*
  Using cached h11-0.12.0-py3-none-any.whl (54 kB)
Collecting pycparser
  Using cached pycparser-2.20-py2.py3-none-any.whl (112 kB)
Using legacy setup.py install for Pillow-SIMD, since package 'wheel' is not installed.
Installing collected packages: toml, Pillow-SIMD, pyaes, pyasn1, rsa, telethon, sqlcipher3-binary, six, protobuf, sniffio, idna, anyio, h11, httpcore, rfc3986, certifi, httpx, pycparser, cffi, cryptography, signalstickers-client, python-dateutil, attrs, semaphore-bot
    Running setup.py install for Pillow-SIMD ... error
    ERROR: Command errored out with exit status 1:
     command: /home/maqp/Adhesive/virtualenv/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5cjz_zfi/Pillow-SIMD/setup.py'"'"'; __file__='"'"'/tmp/pip-install-5cjz_zfi/Pillow-SIMD/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-n1wq4zlz/install-record.txt --single-version-externally-managed --compile --install-headers /home/maqp/Adhesive/virtualenv/include/site/python3.8/Pillow-SIMD
         cwd: /tmp/pip-install-5cjz_zfi/Pillow-SIMD/
    Complete output (176 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.8
    creating build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/XpmImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PaletteFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PdfParser.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/TiffImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/DcxImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageChops.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/BmpImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PcfFontFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/GribStubImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/IcoImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageShow.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/WebPImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/_version.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/FontFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PcxImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/EpsImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/FtexImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageMath.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageQt.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PyAccess.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/SgiImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/GimpPaletteFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageGrab.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/BdfFontFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PalmImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageCms.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/SpiderImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PdfImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/MspImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/DdsImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PsdImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/XbmImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/IcnsImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImagePalette.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageStat.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/BlpImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/TarIO.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/CurImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/XVThumbImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/McIdasImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageFont.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/MpegImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/_tkinter_finder.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/GbrImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PcdImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/MpoImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageSequence.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageColor.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageDraw2.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/FitsStubImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/IptcImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PpmImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/__init__.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImtImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageMorph.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/BufrStubImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageTk.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/features.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ContainerIO.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/GimpGradientFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImagePath.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageWin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageFilter.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/SunImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PSDraw.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/GdImageFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageTransform.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/MicImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/WmfImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/FliImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageOps.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageDraw.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/FpxImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/TgaImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ExifTags.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PngImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/Image.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/GifImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/_binary.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/__main__.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/_util.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/JpegPresets.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/WalImageFile.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/JpegImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/PixarImagePlugin.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageEnhance.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/TiffTags.py -> build/lib.linux-x86_64-3.8/PIL
    copying src/PIL/ImageMode.py -> build/lib.linux-x86_64-3.8/PIL
    running egg_info
    writing src/Pillow_SIMD.egg-info/PKG-INFO
    writing dependency_links to src/Pillow_SIMD.egg-info/dependency_links.txt
    writing top-level names to src/Pillow_SIMD.egg-info/top_level.txt
    reading manifest file 'src/Pillow_SIMD.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 directories found matching 'Tests'
    no previously-included directories found matching 'Tests'
    warning: no previously-included files found matching '.appveyor.yml'
    warning: no previously-included files found matching '.coveragerc'
    warning: no previously-included files found matching '.codecov.yml'
    warning: no previously-included files found matching '.editorconfig'
    warning: no previously-included files found matching '.readthedocs.yml'
    warning: no previously-included files found matching 'azure-pipelines.yml'
    warning: no previously-included files matching '.git*' found anywhere in distribution
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
    warning: no previously-included files matching '*.so' found anywhere in distribution
    no previously-included directories found matching '.azure-pipelines'
    no previously-included directories found matching '.travis'
    writing manifest file 'src/Pillow_SIMD.egg-info/SOURCES.txt'
    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.html
    
    Traceback (most recent call last):
      File "/tmp/pip-install-5cjz_zfi/Pillow-SIMD/setup.py", line 860, in <module>
        setup(
      File "/home/maqp/Adhesive/virtualenv/lib/python3.8/site-packages/setuptools/__init__.py", line 145, in setup
        return distutils.core.setup(**attrs)
      File "/usr/lib/python3.8/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/home/maqp/Adhesive/virtualenv/lib/python3.8/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python3.8/distutils/command/install.py", line 589, in run
        self.run_command('build')
      File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3.8/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3.8/distutils/command/build_ext.py", line 340, in run
        self.build_extensions()
      File "/tmp/pip-install-5cjz_zfi/Pillow-SIMD/setup.py", line 687, in build_extensions
        raise RequiredDependencyException(f)
    __main__.RequiredDependencyException: jpeg
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-5cjz_zfi/Pillow-SIMD/setup.py", line 915, in <module>
        raise RequiredDependencyException(msg)
    __main__.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.html
    
    
    ----------------------------------------
ERROR: Command errored out with exit status 1: /home/maqp/Adhesive/virtualenv/bin/python3.8 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5cjz_zfi/Pillow-SIMD/setup.py'"'"'; __file__='"'"'/tmp/pip-install-5cjz_zfi/Pillow-SIMD/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-n1wq4zlz/install-record.txt --single-version-externally-managed --compile --install-headers /home/maqp/Adhesive/virtualenv/include/site/python3.8/Pillow-SIMD Check the logs for full command output.

Hi there! Thanks for your interest 👋
From the looks of it, Pillow-SIMD, an image processing dependency, failed to compile on your machine, due to missing libjpeg development libraries. As Pillow-SIMD is just a drop-in replacement for Pillow, you can try either:

  • running pip install Pillow, then the rest of the dependencies,
  • or installing libjpeg, zlib, and build-essential first and then re-running the pip install -Ur requirements.txt command.

Meanwhile, I'll leave this issue open as a reminder to make Pillow-SIMD optional and require Pillow by default. Let me know if you have any other questions.

maqp commented

Thanks! That helped me resolve the issue (although I got stuck in PIN verification. It would probably save some people trouble if they knew they can't use their own phone number temporarily if they have SVR PIN enabled).

Meanwhile, I'll leave this issue open as a reminder

OK I won't close it then but just to let you know I'm good :) Thanks for your hard work!

@maqp would you mind opening a separate issue about PIN verification?

maqp commented

I managed to get my migration done without a personal sticker bot and I'm too exhausted from the migration and busy with other stuff to continue to look into this. I was under the impression the PIN warnings originated from the project's internal code so you'd be aware of the limitation, and could change it yourself without the need for a ticket. Anyway, massive thanks to everyone in this project, it saved an incredible amount of work!