cloudfoundry-attic / multi-buildpack

Cloud Foundry buildpack for running multiple buildpacks
Apache License 2.0
12 stars 14 forks source link

Installing Dependencies with Multiple Buildpacks #2

Closed MHarmony closed 7 years ago

MHarmony commented 7 years ago

What version of Cloud Foundry and CF CLI are you using? (i.e. What is the output of running cf curl /v2/info && cf version?

{
   "name": "Bluemix",
   "build": "253027",
   "support": "http://ibm.biz/bluemix-supportinfo",
   "version": 0,
   "description": "IBM Bluemix",
   "authorization_endpoint": "https://login.ng.bluemix.net/UAALoginServerWAR",
   "token_endpoint": "https://uaa.ng.bluemix.net",
   "min_cli_version": null,
   "min_recommended_cli_version": null,
   "api_version": "2.75.0",
   "app_ssh_endpoint": "ssh.ng.bluemix.net:2222",
   "app_ssh_host_key_fingerprint": "c7:1f:89:2a:62:3b:78:a9:08:c9:33:81:fb:39:26:da",
   "app_ssh_oauth_client": "ssh-proxy",
   "logging_endpoint": "wss://loggregator.ng.bluemix.net:443",
   "doppler_logging_endpoint": "wss://doppler.ng.bluemix.net:443"
}
cf version 6.28.0+9e024bd.2017-06-27

What version of the buildpack you are using?

Multi Buildpack - 0.2.4 Nodejs Buildpack - 1.6.3 Python Buildpack - 1.5.20

If you were attempting to accomplish a task, what was it you were attempting to do?

Node.js app needs to call python code, and the python code has dependencies. Wanted to include both Node.js and python build packs.

What did you expect to happen?

Expected depdencies to be installed for both buildpacks... I could just me misunderstanding how this is supposed to work. If so, please let me know!

What was the actual behavior?

Whichever buildpack is listed last in multi-buildpack.yml is the only one that installs all the required dependencies.

I have both a requirements.txt and package.json file for python and Node.js dependencies, respectively. If Node.js is listed last in multi-buildpack.yml, it installs all Node.js depedencies but only python, setuptools, pip, pip-pop, and pipenv and none of my python dependencies in requirements.txt. If you flip the order, it installs all dependencies in requirements.txt, and only node and yarn, but not any of my Node.js dependencies listed in package.json.

Please confirm where necessary:

MHarmony commented 7 years ago

Log output with the following up multi-buildpack.yml:

buildpacks:
  - https://github.com/cloudfoundry/nodejs-buildpack
  - https://github.com/cloudfoundry/python-buildpack
Creating container
Successfully created container
Downloading app package...
Downloaded app package (1.4M)
Downloading build artifacts cache...
Downloaded build artifacts cache (42M)
Staging...
-----> Download go 1.8.1
-----> Running go build compile
-----> Multi Buildpack version 0.2.4
-----> Running buildpacks:
       https://github.com/cloudfoundry/nodejs-buildpack
       https://github.com/cloudfoundry/python-buildpack
-----> Download go 1.8.1
-----> Running go build supply
-----> Nodejs Buildpack version 1.6.3
-----> Installing binaries
       engines.npm (package.json): unspecified (use default)
       engines.node (package.json): 8.1.4
-----> Installing node 8.1.4
       Download [https://buildpacks.cloudfoundry.org/dependencies/node/node-8.1.4-linux-x64-10ae8e9e.tgz]
       Download [https://buildpacks.cloudfoundry.org/dependencies/yarn/yarn-v0.27.5-73002997.tar.gz]
       Using default npm version: 5.0.3
-----> Installing yarn 0.27.5
       Installed yarn 0.27.5
-----> Creating runtime environment
-------> Buildpack version 1.5.20
-----> Installing python-3.6.1
Downloaded [https://buildpacks.cloudfoundry.org/dependencies/python/python-3.6.1-linux-x64-d8e1dbc6.tgz]
-----> Installing Setuptools (32.1.0)
Downloaded [https://buildpacks.cloudfoundry.org/dependencies/manual-binaries/setuptools/setuptools-32.1.0-44054eaa.tar.gz]
-----> Installing Pip (9.0.1)
Downloaded [https://buildpacks.cloudfoundry.org/dependencies/manual-binaries/pip/pip-9.0.1-35f01da3.tar.gz]
-----> Installing pip-pop (0.1.1)
Downloaded [https://buildpacks.cloudfoundry.org/dependencies/manual-binaries/pip-pop/pip-pop-0.1.1-d410583a.tar.gz]
-----> Installing pipenv (4.0.1)
Downloaded [https://buildpacks.cloudfoundry.org/dependencies/manual-binaries/pipenv/pipenv-4.0.1-148f753f.tar.gz]
     $ pip install -r requirements.txt
       Collecting appdirs==1.4.3 (from -r requirements.txt (line 1))
         Downloading appdirs-1.4.3-py2.py3-none-any.whl
       Collecting astroid==1.5.3 (from -r requirements.txt (line 2))
         Downloading astroid-1.5.3-py2.py3-none-any.whl (269kB)
       Collecting colorama==0.3.9 (from -r requirements.txt (line 3))
         Downloading colorama-0.3.9-py2.py3-none-any.whl
       Collecting cycler==0.10.0 (from -r requirements.txt (line 4))
         Downloading cycler-0.10.0-py2.py3-none-any.whl
       Collecting isort==4.2.15 (from -r requirements.txt (line 5))
         Downloading isort-4.2.15-py2.py3-none-any.whl (43kB)
       Collecting Jinja2==2.9.6 (from -r requirements.txt (line 6))
         Downloading Jinja2-2.9.6-py2.py3-none-any.whl (340kB)
       Collecting lazy-object-proxy==1.3.1 (from -r requirements.txt (line 7))
         Downloading lazy_object_proxy-1.3.1-cp36-cp36m-manylinux1_x86_64.whl (55kB)
       Collecting MarkupSafe==1.0 (from -r requirements.txt (line 8))
         Downloading MarkupSafe-1.0.tar.gz
       Collecting matplotlib==2.0.2 (from -r requirements.txt (line 9))
         Downloading matplotlib-2.0.2-cp36-cp36m-manylinux1_x86_64.whl (14.6MB)
       Collecting mccabe==0.6.1 (from -r requirements.txt (line 10))
         Downloading mccabe-0.6.1-py2.py3-none-any.whl
       Collecting mpld3==0.3 (from -r requirements.txt (line 11))
         Downloading mpld3-0.3.tar.gz (788kB)
       Collecting numpy==1.13.1 (from -r requirements.txt (line 12))
         Downloading numpy-1.13.1-cp36-cp36m-manylinux1_x86_64.whl (17.0MB)
       Collecting packaging==16.8 (from -r requirements.txt (line 13))
         Downloading packaging-16.8-py2.py3-none-any.whl
       Collecting psycopg2==2.7.1 (from -r requirements.txt (line 14))
         Downloading psycopg2-2.7.1-cp36-cp36m-manylinux1_x86_64.whl (2.7MB)
       Collecting pylint==1.7.2 (from -r requirements.txt (line 15))
         Downloading pylint-1.7.2-py2.py3-none-any.whl (644kB)
       Collecting pyparsing==2.2.0 (from -r requirements.txt (line 16))
         Downloading pyparsing-2.2.0-py2.py3-none-any.whl (56kB)
       Collecting python-dateutil==2.6.0 (from -r requirements.txt (line 17))
         Downloading python_dateutil-2.6.0-py2.py3-none-any.whl (194kB)
       Collecting pytz==2017.2 (from -r requirements.txt (line 18))
         Downloading pytz-2017.2-py2.py3-none-any.whl (484kB)
       Collecting scipy==0.19.1 (from -r requirements.txt (line 19))
         Downloading scipy-0.19.1-cp36-cp36m-manylinux1_x86_64.whl (48.2MB)
       Collecting six==1.10.0 (from -r requirements.txt (line 20))
         Downloading six-1.10.0-py2.py3-none-any.whl
       Collecting wrapt==1.10.10 (from -r requirements.txt (line 21))
         Downloading wrapt-1.10.10.tar.gz
       Collecting xlrd==1.0.0 (from -r requirements.txt (line 22))
         Downloading xlrd-1.0.0-py3-none-any.whl (143kB)
       Installing collected packages: appdirs, lazy-object-proxy, wrapt, six, astroid, colorama, cycler, isort, MarkupSafe, Jinja2, python-dateutil, numpy, pyparsing, pytz, matplotlib, mccabe, mpld3, packaging, psycopg2, pylint, scipy, xlrd
         Running setup.py install for wrapt: started
           Running setup.py install for wrapt: finished with status 'done'
         Running setup.py install for MarkupSafe: started
           Running setup.py install for MarkupSafe: finished with status 'done'
         Running setup.py install for mpld3: started
           Running setup.py install for mpld3: finished with status 'done'
       Successfully installed Jinja2-2.9.6 MarkupSafe-1.0 appdirs-1.4.3 astroid-1.5.3 colorama-0.3.9 cycler-0.10.0 isort-4.2.15 lazy-object-proxy-1.3.1 matplotlib-2.0.2 mccabe-0.6.1 mpld3-0.3 numpy-1.13.1 packaging-16.8 psycopg2-2.7.1 pylint-1.7.2 pyparsing-2.2.0 python-dateutil-2.6.0 pytz-2017.2 scipy-0.19.1 six-1.10.0 wrapt-1.10.10 xlrd-1.0.0
Exit status 0
Staging complete
Uploading droplet, build artifacts cache...
Uploading build artifacts cache...
Uploading droplet...
Uploaded build artifacts cache (177.2M)
Uploaded droplet (153.5M)
Uploading complete
Destroying container
Successfully destroyed container

0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
MHarmony commented 7 years ago

Found a solution for my issue... ran the config where it installed node dependencies. I included pip install -r requirements.txt and it installed the python requirements correctly.

sclevine commented 7 years ago

Apologies for the silence here. Language modules for non-final buildpacks will eventually be installed, we just haven't reached those stories yet: https://www.pivotaltracker.com/story/show/149435525 https://www.pivotaltracker.com/story/show/149435225 https://www.pivotaltracker.com/story/show/149435387 https://www.pivotaltracker.com/story/show/149436071 https://www.pivotaltracker.com/story/show/149435613

kavithamadhavaraj commented 6 years ago

@harmonmi Can you please explain more on how you fixed that? Facing the same issue with Java & Python combination where dependencies are shown to be installed in the log but throws No Module found error.

DmytroLopushanskyy commented 5 years ago

I can't manage to do it too. After installing third-party buildpack to my Heroku app, it throws No Module found error. How do I install requirements.txt?