lelit/pglast

Missing protoc-gen-c generated files cause build failure

Closed this issue · 4 comments

If you attempt to install pglast 3.3 into an empty virtual environment on a Apple Silicon Macintosh running the arm64 version of python installation fails with the following output:

pip install -i https://pypi.org/simple pglast                                                                           C 687
Collecting pglast
  Downloading pglast-3.3.tar.gz (2.9 MB)
     |████████████████████████████████| 2.9 MB 3.6 MB/s 
Requirement already satisfied: setuptools in ./venv/lib/python3.8/site-packages (from pglast) (57.4.0)
Building wheels for collected packages: pglast
  Building wheel for pglast (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /Users/chrisb/pglast/venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py'"'"'; __file__='"'"'/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-wheel-_06ferfv
       cwd: /private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/
  Complete output (73 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-11-universal2-3.8
  creating build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/error.py -> build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/visitors.py -> build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/keywords.py -> build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/__init__.py -> build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/stream.py -> build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/ast.py -> build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/node.py -> build/lib.macosx-11-universal2-3.8/pglast
  copying pglast/__main__.py -> build/lib.macosx-11-universal2-3.8/pglast
  creating build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/primnodes.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/parsenodes.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/xml.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/__init__.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/pg_class.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/pg_am.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/lockoptions.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/lockdefs.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/nodes.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/pg_attribute.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  copying pglast/enums/pg_trigger.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
  creating build/lib.macosx-11-universal2-3.8/pglast/printers
  copying pglast/printers/ddl.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
  copying pglast/printers/__init__.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
  copying pglast/printers/dml.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
  copying pglast/printers/sfuncs.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
  running build_ext
  compiling src/pg_query.c
  compiling src/pg_query_deparse.c
  compiling src/pg_query_fingerprint.c
  compiling src/pg_query_json_plpgsql.c
  compiling src/pg_query_normalize.c
  compiling src/pg_query_outfuncs_json.c
  compiling src/pg_query_outfuncs_protobuf.c
  src/pg_query_outfuncs_protobuf.c:11:10: fatal error: 'protobuf/pg_query.pb-c.h' file not found
  #include "protobuf/pg_query.pb-c.h"
           ^~~~~~~~~~~~~~~~~~~~~~~~~~
  1 error generated.
  make: *** [src/pg_query_outfuncs_protobuf.o] Error 1
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py", line 43, in <module>
      setup(
    File "/Users/chrisb/pglast/venv/lib/python3.8/site-packages/setuptools/__init__.py", line 153, in setup
      return distutils.core.setup(**attrs)
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/Users/chrisb/pglast/venv/lib/python3.8/site-packages/wheel/bdist_wheel.py", line 299, in run
      self.run_command('build')
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/command/build.py", line 135, in run
      self.run_command(cmd_name)
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py", line 39, in run
      subprocess.check_call(['make', '-s', '-C', LIBPG_QUERY_DIR, 'build'])
    File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py", line 364, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['make', '-s', '-C', '/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/libpg_query', 'build']' returned non-zero exit status 2.
  ----------------------------------------
  ERROR: Failed building wheel for pglast
  Running setup.py clean for pglast
Failed to build pglast
Installing collected packages: pglast
    Running setup.py install for pglast ... error
    ERROR: Command errored out with exit status 1:
     command: /Users/chrisb/pglast/venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py'"'"'; __file__='"'"'/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-record-see03oxu/install-record.txt --single-version-externally-managed --compile --install-headers /Users/chrisb/pglast/venv/include/site/python3.8/pglast
         cwd: /private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/
    Complete output (69 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.macosx-11-universal2-3.8
    creating build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/error.py -> build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/visitors.py -> build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/keywords.py -> build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/__init__.py -> build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/stream.py -> build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/ast.py -> build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/node.py -> build/lib.macosx-11-universal2-3.8/pglast
    copying pglast/__main__.py -> build/lib.macosx-11-universal2-3.8/pglast
    creating build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/primnodes.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/parsenodes.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/xml.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/__init__.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/pg_class.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/pg_am.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/lockoptions.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/lockdefs.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/nodes.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/pg_attribute.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    copying pglast/enums/pg_trigger.py -> build/lib.macosx-11-universal2-3.8/pglast/enums
    creating build/lib.macosx-11-universal2-3.8/pglast/printers
    copying pglast/printers/ddl.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
    copying pglast/printers/__init__.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
    copying pglast/printers/dml.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
    copying pglast/printers/sfuncs.py -> build/lib.macosx-11-universal2-3.8/pglast/printers
    running build_ext
    compiling src/pg_query_outfuncs_protobuf.c
    src/pg_query_outfuncs_protobuf.c:11:10: fatal error: 'protobuf/pg_query.pb-c.h' file not found
    #include "protobuf/pg_query.pb-c.h"
             ^~~~~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.
    make: *** [src/pg_query_outfuncs_protobuf.o] Error 1
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py", line 43, in <module>
        setup(
      File "/Users/chrisb/pglast/venv/lib/python3.8/site-packages/setuptools/__init__.py", line 153, in setup
        return distutils.core.setup(**attrs)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/Users/chrisb/pglast/venv/lib/python3.8/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/command/install.py", line 545, in run
        self.run_command('build')
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py", line 39, in run
        subprocess.check_call(['make', '-s', '-C', LIBPG_QUERY_DIR, 'build'])
      File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/subprocess.py", line 364, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['make', '-s', '-C', '/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/libpg_query', 'build']' returned non-zero exit status 2.
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Users/chrisb/pglast/venv/bin/python -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py'"'"'; __file__='"'"'/private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-install-f572_x1i/pglast_55ed8a10cb794f61b83e5a8199289bf4/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/wc/145n64jx1450pd4381ws4gp40000gq/T/pip-record-see03oxu/install-record.txt --single-version-externally-managed --compile --install-headers /Users/chrisb/pglast/venv/include/site/python3.8/pglast Check the logs for full command output.

I can reproduce this on Alpine Linux.

lelit commented

Thanks, I'm sorry but I could not find the time/energy to merge cbrichord's PR #87 yet. I'll do my best to do that over the weekend.

lelit commented

This should be fixed in the just released v3.4.

@lelit Thank you for the quick release! I can confirm this is now working with pglast==3.4. We highly appreciate this!
@cbrichford Thanks for the PR! We used your git branch in our requirements.txt as a temporary fix so it allowed us to prevent blockers with development. We switched to pglast==3.4 now.