55 Commits

Author SHA1 Message Date
Zuul
ec31a52560 Merge "Update lib_install_from_git to use column format" 2017-11-21 20:04:33 +00:00
Clark Boylan
065779517f Properly get pip version
The old code was strip()ing the version string instead of split()ing the
version string so we always got the first character of the version
string. This worked fine as long as the pip version was single digit but
as soon as it rolls over to '10.stuff' we will compare:

  pip version 1 (instead of 10) > 6

Which fails bceause 1 is less than six. Instaed we really do want to
compare 10 > 6 so use split on '.' instead.

Change-Id: Ic7d0c04d7fa77774ab2d70fb9d11f182becec553
2017-10-20 12:16:32 -07:00
Monty Taylor
f0cd9a8b08 Update lib_install_from_git to use column format
The pip list command supports a --format=columns option which outputs
things in space delimited columns. Switch to using that.

Change-Id: I5140a7d83bf567b1c3c67516112eb4c57074fa53
2017-10-19 15:35:38 +11:00
Zane Bitter
9e7ead9ac2 Calculate package directory correctly in pip_install
Strip the [<extras>] string from a <package_dir>[<extras>] argument
when looking for the package directory.  Explain what the heck is
going on.

Change-Id: I79beb5c3e9e7c35c91cdd0d5a1d91532bebc4b6d
Closes-Bug: #1721638
2017-10-06 22:19:05 +11:00
Ian Wienand
ae9c6ab759 Use "pip list" in check_libs_from_git
As described in the change, "pip freeze" has issues with the way
zuulv3 clones repos without a remote.  This is an attempt to use "pip
list" to check for local install

Change-Id: I33d25f86b6afcadb4b190a0f6c53311111c64521
2017-09-29 12:55:45 +10:00
Sampath Priyankara
87d2396d22 Don't uninstall pip packages if OFFLINE=True
lib/nova does a pip re-install of libvirt-python to rebuild the python
library incase the underlying libvirt version changed during package
installs.  In offline mode, the underlying version of libvirt can't
have changed; so we have the situation that we've removed the libvirt
python bindings but can't reinstall them (because we're offline).

This fixes that particular situation, but skipping uninstalls in
offline mode seems generically OK.

Change-Id: I2b75d45d94d82f87d996c7570c125d46f5f99f6a
Closes-Bug: #1708369
2017-08-14 16:03:41 +10:00
Takashi NATSUME
fa0077707e Update URLs
Some URLs are broken, so fix them.
The others are redirect to new URLs,
so replace them with new ones.

The config options of nova serial console proxy
have been gathered in nova/conf/serial_console.py.
So the description in doc/source/guides/nova.rst
is fixed.

Change-Id: Ifd81cc09969341fbf8f135a913fc6003b94e0acc
2017-07-22 09:12:59 +09:00
Clark Boylan
f266a2dc81 Install test-requirements with main install
To reduce the total number of invocations necessary for pip which isn't
the quickest thing ever (due to needing to evaluate constraints and deps
lists and what is currently installed) combine the main installation of
software with its test-requirements.txt file which should roughly halve
our pip invocations.

Change-Id: Ibcc3264136e66d34a879ad1c90a62e1bb6a84243
2017-06-12 14:57:59 -07:00
Brian Haley
954fd1b729 Use -y with 'pip uninstall'
'pip uninstall' will hang running stack.sh if it has to
prompt the user for input, use -y.

Change-Id: Ic94639e444b87fd3538463d5a51c01a0208a2ab2
Closes-bug: #1691172
2017-05-16 12:24:45 -04:00
Sean Dague
f28e7ef6ba uninstall libvirt-python and reinstall
libvirt-python compiles against the currently installed libvirt. If
you upgrade that, it needs to rebuild, however it won't change
versions, so pip install just noops. Force an uninstall / reinstall of
it every time to handle potential upgrades of libvirt.

Change-Id: If34541b34aa6d55eedaf6c603fd1fe92eb887308
2017-05-08 07:30:20 -04:00
Armando Migliaccio
bacfb94390 Enable openSUSE to work in Python 3.x environments
Add packages required to run devstack with USE_PYTHON3=True.

Change-Id: Iee43c9335bd82c10cfaeffb02d1d99290c34bb83
2017-03-20 22:33:56 -07:00
Jenkins
6523d6e097 Merge "Make declared variables global" 2017-03-08 13:31:57 +00:00
Sean Dague
afef8bf097 Make declared variables global
When variables use the 'declare' directive, it is by default a local
variable. While other variables have global scope.

For example:
   declare -A AN_ARRAY   # local in scope
   foo=1                 # global in scope

This causes errors to occur as some of the variables will be local only
and others will be global.

Update the code, as appropriate, so that variables using the 'declare'
directive also include the '-g' flag to have them also be global. Not
every instance of a declared variable has been updated.

Closes-Bug: #1669509
Co-Authored-By: John L. Villalovos <john.l.villalovos@intel.com>
Change-Id: I2180b68fe861ad19c6d4ec0df0f9f8a528347862
2017-03-07 22:07:29 -08:00
Jenkins
0e1e78117e Merge "install LIBS_FROM_GIT using python 2 and 3 where appropriate" 2017-02-28 16:37:49 +00:00
Jenkins
259c5e19a7 Merge "allow config to manage python3 use explicitly" 2017-02-28 16:37:20 +00:00
Sean Dague
f80e2cfee8 add install_devstack_tools
An initial install for devstack-tools, this will need to use all the
fun pip extra variables for installation, however the current
pip_install always prefers python2, and we only want to do python3
here.

Change-Id: I3dcdb35130f76fad81cb7b0d4001b7e96efbbd84
2017-01-18 15:42:53 -05:00
Doug Hellmann
a2eb89417f install LIBS_FROM_GIT using python 2 and 3 where appropriate
When installing a library from source and python 3 is enabled, first run
the installation process with python 2 enabled to ensure the library is
also installed under python 2 for any services not yet running under
3. The python 3 version is installed second so that command line tools
installed with libraries are installed under python 3 when python 3 is
enabled.

Change-Id: Ibb0f7a68d21081bf7652a0c1515080c0c54888ca
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2017-01-10 16:08:43 +00:00
Doug Hellmann
94129c7d02 allow config to manage python3 use explicitly
Add variables ENABLED_PYTHON3_PACKAGES and DISABLED_PYTHON3_PACKAGES to
work like ENABLED_SERVICES and DISABLED_SERVICES and to manage which
packages are installed using Python 3. Move the list of whitelisted
packages in pip_install to the default for ENABLED_PYTHON3_PACKAGES,
except swift which is not enabled by default for now.

Add enable_python3_package and disable_python3_package functions to make
editing the variables from local.conf easier.

Add python3_enabled_for and python3_disabled_for functions to check the
settings against packages being installed by pip.

Update pip_install to check if python3 is disabled for a service, then
see if it is explicitly enabled, and only then fall back to looking at
the classifiers in the packaging metadata.

Update pip_install messages to give more detail about why the choice
between python 2 and 3 is being made for a given package.

Change-Id: I69857d4e11f4767928614a3b637c894bcd03491f
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2017-01-10 16:08:14 +00:00
Mehdi Abaakouk
52b1074615 cinder: configure dlm when this one is zookeeper
Previous this was set the zake, but that was revert to missing
dependencies issue and because zake is a test fixture and not somthing
to deploy.

This change configures the Cinder dlm with this one is zookeeper.
And it installs tooz and the extra dependencies needed for the
zookeeper driver.

To do it, this commit have to introduce a new method for package
installation: 'pip_install_gr_extras package extra1,extra2'.

Change-Id: Idca310c08e345db59840eb31434c6cb1f849fa70
2017-01-04 10:21:29 +01:00
Davanum Srinivas
0c0d848b8c Add swift and uwsgi to py35 whitelist
Really close to getting swift and keystone under uwsgi working, so
let's white list them. Won't affect any existing jobs, so we should
be good.

Change-Id: I51d56d16a5b175bd45dee09edc0b2748d72a5d06
2017-01-03 08:52:28 -05:00
Davanum Srinivas
afa8a00c14 Switch to python 3.5
Use trueorfalse to normalize the values for USE_PYTHON3

Install 3.5 instead of 3.4 When USE_PYTHON3 is specified.
Also, since not many packages are classified correctly, fallback
to looking for just "Programming Language :: Python :: 3" and
log a message for the package to highlight the problem.

Also special case some services that are *almost* ready

Depends-On: Id48e1b328230fcdf97ed1cb4b97f4c3f9cf6eb8a
Depends-On: Ib7d9aa0e0b74a936002e0eea0b3af05102b06a62
Change-Id: I243ea4b76f0d5ef57a03b5b0798a05468ee6de9b
2016-12-23 13:15:03 -05:00
Lubosz "diltram" Kosnik
0a099763b0 Change python version to 3.5
On Ubuntu Xenial there is no way to install python3.4
Use value specified in PYTHON3_VERSION

Change-Id: Ibc69b1c8270bdd240c82cf2acfdfd0730ef0f182
2016-08-03 10:21:41 -05:00
Spyros Trigazis
88ccd47c88 Keep old behavior of setuptools for editable installs
In the 25.0.0 release [1] of setuptools during any install
operation the package in not overwritten. If a package is
installed from another requirement via pip and then it is
installed again from git, it is not updated causing
check_libs_from_git to fail.

[1] https://setuptools.readthedocs.io/en/latest/history.html#v25-0-0

Change-Id: Ibaa1d4157816ea649f4452756fbde25951347001
Closes-Bug: #1605998
2016-07-25 14:31:51 +02:00
Marc Koderer
46f8cb7f20 Add option to download all libs from git
For client debugging that invokes multiple libs it can be useful
to have all libs directly in git and not listing all of them
in LIBS_FROM_GIT.

TrivialFix

Change-Id: Ie631cc4045231ebbe8177d2d113e47e4bf83f61c
2016-05-17 08:57:39 +02:00
YAMAMOTO Takashi
c8c1c615f2 Normalize path for upper-constraints
It seems pip distinguishes paths with .. or extra / for constraints.
For example, the following directories are considered different.

    /path/to/dir
    /path/to//dir
    /path/to/dir/subdir/..

This commit tries to normalize the given directory name to avoid
"Could not satisfy constraints for 'xxxx': installation from path
or url cannot be constrained to a version" error due to directory
name mismatch.

Reference: https://github.com/pypa/pip/pull/3582
Closes-Bug: #1542545
Change-Id: Iae9d58c27d3b10bca16e4a471507c4d5c16439a0
2016-03-22 21:23:23 +09:00
Jenkins
c615993fe1 Merge "Support extra dependencies when setup_develop" 2016-01-06 20:17:12 +00:00
Brant Knudson
0842b8147f Support extra dependencies when setup_develop
Recent pip supports using [extras] to install extra dependencies
from the project setup.cfg. Add support so that projects can take
advantage of it.

For example, if devstack is configured to use ldap, install the
extra ldap dependencies using:

 setup_develop $KEYSTONE_DIR ldap

Partial-Bug: 1479962
Change-Id: Ic13d95b99aaa4d3854b2723343e90f5de6b98aa2
2016-01-05 07:41:19 -05:00
Federico Ressi
e208d060e1 Preserve result returned by apt-get and pip
Change I855ffe9c7a75e9943106af0f70cf715c34ae25c5 and
I368fec44858bd97fc6a314fb20eed2b10932cbb1 added timing
infrastructure which hides the return value of
the main commands.  Restore the prior behaviour.

Change-Id: I4a536abefa7824ac6d42e7bbbf1079d9cc055984
Closes-Bug: #1518545
2016-01-05 08:21:05 +00:00
Doug Hellmann
ddc3839bdc Enable optional Python 3 support
Add USE_PYTHON3 and PYTHON3_VERSION variables to allow services to use
python 3 if they indicate support in their python package metadata.

Tested in Heat here -> I837c2fba682ab430d50e9f43913f2fed20325a7a.
Project config change to add a dedicated job to Heat is here -> I0837e62d6ccc66397a5e409f0961edd4be31f467

Change-Id: I079e18b58b214bf8362945c253d6d894ca8b1a6b
2015-12-01 14:52:35 -05:00
Atsushi SAKAI
5509ed5797 Fix comment typos in inc/ and tests/ directories
valu3 => value3
enviromnet => environment
direcotry => directory
virualenv => virtualenv
editiable => editable
envirnment => environment

Change-Id: I97fb2d44a37b16d02d4fbdb08bfa33414349f651
2015-11-30 20:25:17 +09:00
Jenkins
d111182f21 Merge "Don't mix declaration and set of locals" 2015-10-14 02:43:52 +00:00
Sean Dague
cb658fab15 add pip install timing
Change-Id: I368fec44858bd97fc6a314fb20eed2b10932cbb1
2015-10-12 23:10:09 +00:00
Ian Wienand
ada886dd43 Don't mix declaration and set of locals
Ia0957b47187c3dcadd46154b17022c4213781112 proposes to have bashate
find instances of setting a local value.  The issue is that "local"
always returns 0, thus hiding any failure in the commands running to
set the variable.

This is an automated replacement of such instances

Depends-On: I676c805e8f0401f75cc5367eee83b3d880cdef81
Change-Id: I9c8912a8fd596535589b207d7fc553b9d951d3fe
2015-10-07 17:03:32 +11:00
Ian Wienand
433a9b10dd Don't set xtrace directly in local call
Ia0957b47187c3dcadd46154b17022c4213781112 detects setting local
variables with subshell commands.

Although this is a particuarly benign case, it trips the test.  Rather
than putting in an ignore for this, we can easily change it to make
the test pass.  This seems better than putting in special work-arounds
to bashate, etc.

Change-Id: I37c3967c0f2d780a636a7d26cda83755085c5c69
2015-10-07 16:54:29 +11:00
Sirushti Murugesan
713fd2f6c6 Additionally install test-requirements with pip_install
When moving to Python 3, we also need to install test-requriements
to allow projects to install any python 3 test dependencies they
might be missing otherwise.

Change-Id: I2d19aa2f7ec8de869a82aa7764ab72cc8693101f
2015-09-30 15:24:59 +05:30
Sean Dague
c71973eb04 check LIBS_FROM_GIT
after the glance_store vs. upper-constraints bug, it's probably worth
actually enforcing and sanity checking that devstack is doing what
it's being asked of with LIBS_FROM_GIT. This will hopefully reduce
user generated error.

This *might* not work with the current oslo naming, we'll have to test
and normalize that.

Change-Id: Iffef2007f99a0e932b68c4c897ebbfb748cac2b4
2015-09-11 07:01:02 -04:00
Clark Boylan
05aa3846a0 Just use constraints everywhere
Having behavior on your laptop diverge from behavior in the gate is
confusing. Just use constraints on every devstack run to be consistent.
Users of devstack can edit the requirements repo in order to change
these constraints locally if necessary.

Change-Id: I843208e2e982eb04931b76f5cb4bd219fbcd70de
2015-08-18 09:39:04 -07:00
Jenkins
2d25c9290d Merge "Fixed detection of a project in projects.txt" 2015-07-06 18:22:33 +00:00
Robert Collins
7c838616c9 Fix library runs.
Libraries were resulting in two edit-constraints runs:
 - one for the library, which adds a non-editable file path
 - then one for the editable servers, but that fails becuse
   pkg-resources couldn't parse the prior entry.

This is fixed in two parts: the dependent patch which supports parsing
file urls that have egg names, and this patch which changes from a
file path to a file url with an egg name.

Change-Id: I0f07858e96ea3baf46f8a453e253b9ed29c7f7e2
2015-07-04 09:55:56 +12:00
Robert Collins
635a5ba992 constraints file support for devstack.
Constraints files allow a global view of dependencies for devstack
without the side effect that requirements files have of installing
everything everytime. This is part of the cross project
requirements-management spec.

Change-Id: If089d30146629e6cf817edd634e5c2b80f1366dd
2015-07-02 11:37:22 +12:00
Ihar Hrachyshka
2ba4a7214c Fixed detection of a project in projects.txt
Before the fix, requirements soft-update was used for projects that are
in the file.

Change-Id: I095d42521f54b45a6b13837e2f8375fa04532faa
Closes-Bug: #1469067
2015-07-01 13:42:14 +00:00
Sean Dague
7af8a1b9b3 only soft enforce requirements not in projects.txt
We're adding the ability to have devstack plugins, which should be
much more free to require new things not in global requirements. Our
old thinking of locking down all the requirements doesn't really work
in a plugin model.

Instead, if the project is in projects.txt, continue with the old
behavior. If it is not, do a soft update (update all the requirements
we know about, leave the ones we don't). This was previously the SOFT
requirements update mode, but now it will just be the default.

Change-Id: Ic0c6e01a6d7613d712ac9e7e4a378cc3a8ce75e6
2015-06-24 05:55:02 -04:00
Robert Collins
40f3e33f73 Put requirements repo in a venv.
This is to prevent any possible contamination of test results from its
presence.

Change-Id: I5a929854745650cc6a182ffc4d15c50caabdd727
2015-06-19 08:04:00 +12:00
Amrith Kumar
9860876f5d perform install_infra sooner in stack.sh
The install_infra() call needs to be done earlier since
pip_install_gr() depends on it. Also the fact that python module names
are supposed to be lower case but some use camel case is a problem
(for example with XenAPI).

Change-Id: I7012d77134fa0d9c746d87e837934e7dcb337e5c
Closes-Bug: #1441820
2015-04-08 16:28:34 -04:00
Sean Dague
60996b1b60 introduce pip_install_gr
This creates a new pip_install_gr that installs from global
requirements allowed versions. Now that stable branches are getting
capped all of devstack needs to be fixed to do things like this.

Change-Id: I8fd0ef2bfc544ca2576fab09d3018f760b8848fe
2015-04-08 10:28:17 -04:00
Dean Troyer
41d6f858be Clean up additional INSTALL_TESTONLY_PACKAGES bits
The original removal is in https://review.openstack.org/#/c/167669/

Change-Id: I3c59f040523d2cd1453465e80280955218880634
2015-03-26 15:36:23 -05:00
Chris Dent
ebdd9ac5b4 Provide an option to force pip --upgrade
Make it possible for someone to config

  PIP_UPGRADE=True

in local.conf and thus force pip_install calls to upgrade. In
automated testing this is probably a bad idea, but in manual testing
or situations where devstack is being used to spin up proof of
concepts having the option to use the latest and greatest Python
modules is a useful way of exploring the health of the ecosystem.

To help with visibility of the setting, and section has been added
in configuration.rst near other similar settings.

Change-Id: I484c954f1e1f05ed02c0b08e8e4a9c18558c05ef
2015-03-26 14:27:54 +00:00
Sean Dague
eeb7bda510 eliminate TEST_ONLY differentiation
devstack is a development and test environment, but by default we were
only installing the runtime dependencies. We should install all the
testing required packages as well.

Change-Id: I7c95927b9daad15766aac9d1276b10ca62efb24c
2015-03-25 11:55:32 -04:00
Eli Qiao
6a83c423fc Fix pip install error
If we set mutiple proxy (ip or url), pip install will
treat the second proxy as a command.
Add quotation marks around proxy.
expecially for no_proxy

Change-Id: I38ad3f083ba5155cda0e5e2b8f5df64492b7fecd
2015-03-17 17:03:29 +08:00
Joe Gordon
cd8824ac04 Pass PIP_FIND_LINKS through sudo to pip
We weren't actually using the wheels since PIP_FIND_LINKS environmental
variable was getting lost during the sudo

Change-Id: I4a89a70df63772a16ee5a8c3f1cd86e9c7bb5242
2015-03-06 01:33:31 +00:00