fix some requirements updater breakage

- remove requirements_ansible logic from the update script
- removed the need for py2-specific system dependencies
- update to the latest pip-tools and move to the new long format
  (https://github.com/jazzband/pip-tools/pull/1237)
- fixed a few busted references to receptorctl @ devel
This commit is contained in:
Ryan Petrello 2021-03-11 08:43:49 -05:00
parent e8b2072ea5
commit 588cb1e403
6 changed files with 467 additions and 207 deletions

28
docs/licenses/click.txt Normal file
View File

@ -0,0 +1,28 @@
Copyright 2014 Pallets
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,15 +1,11 @@
# Dependency Management
The `requirements.txt` and `requirements_ansible.txt` files are generated from `requirements.in` and `requirements_ansible.in`, respectively, using `pip-tools` `pip-compile`.
The `requirements.txt` file is generated from `requirements.in`, using `pip-tools` `pip-compile`.
## How To Use
Commands should be run from inside the `./requirements` directory of the awx repository.
Make sure you have `patch, awk, python3, python2, python3-venv, python2-virtualenv, pip2, pip3` installed. The development container image should have all these.
Even in the dev container, you may still have to dnf install `libpq-devel libcurl-devel`.
### Upgrading or Adding Select Libraries
If you need to add or upgrade one targeted library, then modify `requirements.in`,
@ -33,14 +29,6 @@ You can upgrade (`pip-compile --upgrade`) the dependencies by running
`./updater.sh upgrade`.
## What The Script Does
This script will:
- Update `requirements.txt` based on `requirements.in`
- Update/generate `requirements_ansible.txt` based on `requirements_ansible.in`
- including an automated patch that adds `python_version < "3"` for Python 2 backward compatibility
## Licenses and Source Files
If any library has a change to its license with the upgrade, then the license for that library
@ -129,11 +117,6 @@ This breaks a very large amount of AWX code that assumes these fields
are returned as dicts. Upgrading this library will require a refactor
to accomidate this change.
### wheel
azure-cli-core requires a version of wheel that is incompatible with
certain packages building with later versions of pip, so we override it.
### pip and setuptools
The offline installer needs to have functionality confirmed before upgrading these.

View File

@ -1,135 +1,430 @@
adal==1.2.2 # via msrestazure
aiohttp==3.6.2 # via -r /awx_devel/requirements/requirements.in
aioredis==1.3.1 # via channels-redis
# ansible-runner==1.4.7 # via -r /awx_devel/requirements/requirements.in
ansiconv==1.0.0 # via -r /awx_devel/requirements/requirements.in
asciichartpy==1.5.25 # via -r /awx_devel/requirements/requirements.in
asgiref==3.2.5 # via channels, channels-redis, daphne
async-timeout==3.0.1 # via aiohttp, aioredis
attrs==19.3.0 # via aiohttp, automat, jsonschema, service-identity, twisted
autobahn==20.12.3 # via -r /awx_devel/requirements/requirements.in, daphne
automat==20.2.0 # via twisted
azure-common==1.1.25 # via azure-keyvault
azure-keyvault==1.1.0 # via -r /awx_devel/requirements/requirements.in
azure-nspkg==3.0.2 # via azure-keyvault
cachetools==4.0.0 # via google-auth
# don't add certifi to our requirements, because we have our own specific implementation: https://github.com/ansible/system-certifi
cffi==1.14.0 # via cryptography
channels-redis==3.1.0 # via -r /awx_devel/requirements/requirements.in
channels==2.4.0 # via -r /awx_devel/requirements/requirements.in, channels-redis
chardet==3.0.4 # via aiohttp, requests
constantly==15.1.0 # via twisted
cryptography==2.9.2 # via -r /awx_devel/requirements/requirements.in, adal, autobahn, azure-keyvault, pyopenssl, service-identity, social-auth-core
daphne==2.4.1 # via -r /awx_devel/requirements/requirements.in, channels
defusedxml==0.6.0 # via python3-openid, python3-saml, social-auth-core
dictdiffer==0.8.1 # via openshift
django-auth-ldap==2.1.0 # via -r /awx_devel/requirements/requirements.in
django-cors-headers==3.2.1 # via -r /awx_devel/requirements/requirements.in
django-crum==0.7.5 # via -r /awx_devel/requirements/requirements.in
django-extensions==2.2.9 # via -r /awx_devel/requirements/requirements.in
django-guid==2.2.0 # via -r /awx_devel/requirements/requirements.in
django-jsonfield==1.2.0 # via -r /awx_devel/requirements/requirements.in
django-oauth-toolkit==1.1.3 # via -r /awx_devel/requirements/requirements.in
django-pglocks==1.0.4 # via -r /awx_devel/requirements/requirements.in
django-polymorphic==2.1.2 # via -r /awx_devel/requirements/requirements.in
django-qsstats-magic==1.1.0 # via -r /awx_devel/requirements/requirements.in
django-radius==1.3.3 # via -r /awx_devel/requirements/requirements.in
django-redis==4.5.0 # via -r /awx_devel/requirements/requirements.in
django-solo==1.1.3 # via -r /awx_devel/requirements/requirements.in
django-split-settings==1.0.0 # via -r /awx_devel/requirements/requirements.in
django-taggit==1.2.0 # via -r /awx_devel/requirements/requirements.in
django==2.2.16 # via -r /awx_devel/requirements/requirements.in, channels, django-auth-ldap, django-cors-headers, django-crum, django-guid, django-jsonfield, django-oauth-toolkit, django-polymorphic, django-taggit, djangorestframework
djangorestframework-yaml==1.0.3 # via -r /awx_devel/requirements/requirements.in
djangorestframework==3.12.1 # via -r /awx_devel/requirements/requirements.in
docutils==0.16 # via python-daemon
future==0.16.0 # via django-radius
gitdb==4.0.2 # via gitpython
gitpython==3.1.7 # via -r /awx_devel/requirements/requirements.in
google-auth==1.11.3 # via kubernetes
hiredis==1.0.1 # via aioredis
hyperlink==20.0.1 # via autobahn, twisted
idna-ssl==1.1.0 # via aiohttp
idna==2.9 # via hyperlink, idna-ssl, requests, twisted, yarl
importlib-metadata==1.5.0 # via importlib-resources, irc, jsonschema
importlib-resources==1.4.0 # via jaraco.text
incremental==17.5.0 # via twisted
irc==18.0.0 # via -r /awx_devel/requirements/requirements.in
isodate==0.6.0 # via msrest, python3-saml
jaraco.classes==3.1.0 # via jaraco.collections
jaraco.collections==3.0.0 # via irc
jaraco.functools==3.0.0 # via irc, jaraco.text, tempora
jaraco.logging==3.0.0 # via irc
jaraco.stream==3.0.0 # via irc
jaraco.text==3.2.0 # via irc, jaraco.collections
jinja2==2.11.2 # via -r /awx_devel/requirements/requirements.in, openshift
json-log-formatter==0.3.0 # via -r /awx_devel/requirements/requirements.in
jsonschema==3.2.0 # via -r /awx_devel/requirements/requirements.in
kubernetes==11.0.0 # via openshift
lockfile==0.12.2 # via python-daemon
lxml==4.5.0 # via xmlsec
markdown==3.2.1 # via -r /awx_devel/requirements/requirements.in
markupsafe==1.1.1 # via jinja2
more-itertools==8.2.0 # via irc, jaraco.classes, jaraco.functools
msgpack==1.0.0 # via channels-redis
msrest==0.6.11 # via azure-keyvault, msrestazure
msrestazure==0.6.3 # via azure-keyvault
multidict==4.7.5 # via aiohttp, yarl
netaddr==0.7.19 # via pyrad
oauthlib==3.1.0 # via django-oauth-toolkit, requests-oauthlib, social-auth-core
openshift==0.11.0 # via -r /awx_devel/requirements/requirements.in
pexpect==4.7.0 # via -r /awx_devel/requirements/requirements.in, ansible-runner
pkgconfig==1.5.1 # via xmlsec
prometheus-client==0.7.1 # via -r /awx_devel/requirements/requirements.in
psutil==5.7.0 # via ansible-runner
psycopg2==2.8.4 # via -r /awx_devel/requirements/requirements.in
ptyprocess==0.6.0 # via pexpect
pyasn1-modules==0.2.8 # via google-auth, python-ldap, service-identity
pyasn1==0.4.8 # via pyasn1-modules, python-ldap, rsa, service-identity
pycparser==2.20 # via cffi
pygerduty==0.38.2 # via -r /awx_devel/requirements/requirements.in
pyhamcrest==2.0.2 # via twisted
pyjwt==1.7.1 # via adal, social-auth-core, twilio
pyopenssl==19.1.0 # via twisted
pyparsing==2.4.6 # via -r /awx_devel/requirements/requirements.in
pyrad==2.3 # via django-radius
pyrsistent==0.15.7 # via jsonschema
python-daemon==2.2.4 # via ansible-runner
python-dateutil==2.8.1 # via adal, kubernetes
python-ldap==3.3.1 # via -r /awx_devel/requirements/requirements.in, django-auth-ldap
python-string-utils==1.0.0 # via openshift
python3-openid==3.1.0 # via social-auth-core
python3-saml==1.9.0 # via -r /awx_devel/requirements/requirements.in
pytz==2019.3 # via django, irc, tempora, twilio
pyyaml==5.4.1 # via -r /awx_devel/requirements/requirements.in, ansible-runner, djangorestframework-yaml, kubernetes
redis==3.4.1 # via -r /awx_devel/requirements/requirements.in, django-redis
requests-oauthlib==1.3.0 # via kubernetes, msrest, social-auth-core
requests==2.23.0 # via -r /awx_devel/requirements/requirements.in, adal, azure-keyvault, django-oauth-toolkit, kubernetes, msrest, requests-oauthlib, slackclient, social-auth-core, twilio
rsa==4.0 # via google-auth
ruamel.yaml.clib==0.2.0 # via ruamel.yaml
ruamel.yaml==0.16.10 # via openshift
schedule==0.6.0 # via -r /awx_devel/requirements/requirements.in
service-identity==18.1.0 # via twisted
six==1.14.0 # via ansible-runner, automat, cryptography, django-extensions, django-pglocks, google-auth, isodate, jaraco.collections, jaraco.logging, jaraco.text, jsonschema, kubernetes, openshift, pygerduty, pyopenssl, pyrad, pyrsistent, python-dateutil, slackclient, social-auth-app-django, social-auth-core, tacacs-plus, twilio, websocket-client
slackclient==1.1.2 # via -r /awx_devel/requirements/requirements.in
smmap==3.0.1 # via gitdb
social-auth-app-django==3.1.0 # via -r /awx_devel/requirements/requirements.in
social-auth-core==3.3.1 # via -r /awx_devel/requirements/requirements.in, social-auth-app-django
sqlparse==0.3.1 # via django
tacacs_plus==1.0 # via -r /awx_devel/requirements/requirements.in
tempora==2.1.0 # via irc, jaraco.logging
twilio==6.37.0 # via -r /awx_devel/requirements/requirements.in
twisted[tls]==20.3.0 # via -r /awx_devel/requirements/requirements.in, daphne
txaio==20.12.1 # via autobahn
typing-extensions==3.7.4.1 # via aiohttp
urllib3==1.25.8 # via kubernetes, requests
uwsgi==2.0.18 # via -r /awx_devel/requirements/requirements.in
uwsgitop==0.11 # via -r /awx_devel/requirements/requirements.in
websocket-client==0.57.0 # via kubernetes, slackclient
xmlsec==1.3.3 # via python3-saml
yarl==1.4.2 # via aiohttp
zipp==3.1.0 # via importlib-metadata, importlib-resources
zope.interface==5.0.0 # via twisted
adal==1.2.2
# via msrestazure
aiohttp==3.6.2
# via -r /awx_devel/requirements/requirements.in
aioredis==1.3.1
# via channels-redis
#ansible-runner==1.4.7
# via
# -r /awx_devel/requirements/requirements.in
# -r /awx_devel/requirements/requirements_git.txt
ansiconv==1.0.0
# via -r /awx_devel/requirements/requirements.in
asciichartpy==1.5.25
# via -r /awx_devel/requirements/requirements.in
asgiref==3.2.5
# via
# channels
# channels-redis
# daphne
async-timeout==3.0.1
# via
# aiohttp
# aioredis
attrs==19.3.0
# via
# aiohttp
# automat
# jsonschema
# service-identity
# twisted
autobahn==20.12.3
# via
# -r /awx_devel/requirements/requirements.in
# daphne
automat==20.2.0
# via twisted
azure-common==1.1.25
# via azure-keyvault
azure-keyvault==1.1.0
# via -r /awx_devel/requirements/requirements.in
azure-nspkg==3.0.2
# via azure-keyvault
cachetools==4.0.0
# via google-auth
# via
# -r /awx_devel/requirements/requirements_git.txt
# kubernetes
# msrest
# requests
cffi==1.14.0
# via cryptography
channels-redis==3.1.0
# via -r /awx_devel/requirements/requirements.in
channels==2.4.0
# via
# -r /awx_devel/requirements/requirements.in
# channels-redis
chardet==3.0.4
# via
# aiohttp
# requests
click==7.1.2
# via receptorctl
constantly==15.1.0
# via twisted
cryptography==2.9.2
# via
# -r /awx_devel/requirements/requirements.in
# adal
# autobahn
# azure-keyvault
# pyopenssl
# service-identity
# social-auth-core
daphne==2.4.1
# via
# -r /awx_devel/requirements/requirements.in
# channels
defusedxml==0.6.0
# via
# python3-openid
# python3-saml
# social-auth-core
dictdiffer==0.8.1
# via openshift
django-auth-ldap==2.1.0
# via -r /awx_devel/requirements/requirements.in
django-cors-headers==3.2.1
# via -r /awx_devel/requirements/requirements.in
django-crum==0.7.5
# via -r /awx_devel/requirements/requirements.in
django-extensions==2.2.9
# via -r /awx_devel/requirements/requirements.in
django-guid==2.2.0
# via -r /awx_devel/requirements/requirements.in
django-jsonfield==1.2.0
# via -r /awx_devel/requirements/requirements.in
django-oauth-toolkit==1.1.3
# via -r /awx_devel/requirements/requirements.in
django-pglocks==1.0.4
# via -r /awx_devel/requirements/requirements.in
django-polymorphic==2.1.2
# via -r /awx_devel/requirements/requirements.in
django-qsstats-magic==1.1.0
# via -r /awx_devel/requirements/requirements.in
django-radius==1.3.3
# via -r /awx_devel/requirements/requirements.in
django-redis==4.5.0
# via -r /awx_devel/requirements/requirements.in
django-solo==1.1.3
# via -r /awx_devel/requirements/requirements.in
django-split-settings==1.0.0
# via -r /awx_devel/requirements/requirements.in
django-taggit==1.2.0
# via -r /awx_devel/requirements/requirements.in
django==2.2.16
# via
# -r /awx_devel/requirements/requirements.in
# channels
# django-auth-ldap
# django-cors-headers
# django-crum
# django-guid
# django-jsonfield
# django-oauth-toolkit
# django-polymorphic
# django-taggit
# djangorestframework
djangorestframework-yaml==1.0.3
# via -r /awx_devel/requirements/requirements.in
djangorestframework==3.12.1
# via -r /awx_devel/requirements/requirements.in
docutils==0.16
# via python-daemon
future==0.16.0
# via django-radius
gitdb==4.0.2
# via gitpython
gitpython==3.1.7
# via -r /awx_devel/requirements/requirements.in
google-auth==1.11.3
# via kubernetes
hiredis==1.0.1
# via aioredis
hyperlink==20.0.1
# via
# autobahn
# twisted
idna-ssl==1.1.0
# via aiohttp
idna==2.9
# via
# hyperlink
# idna-ssl
# requests
# twisted
# yarl
importlib-metadata==1.5.0
# via
# importlib-resources
# irc
# jsonschema
importlib-resources==1.4.0
# via jaraco.text
incremental==17.5.0
# via twisted
irc==18.0.0
# via -r /awx_devel/requirements/requirements.in
isodate==0.6.0
# via
# msrest
# python3-saml
jaraco.classes==3.1.0
# via jaraco.collections
jaraco.collections==3.0.0
# via irc
jaraco.functools==3.0.0
# via
# irc
# jaraco.text
# tempora
jaraco.logging==3.0.0
# via irc
jaraco.stream==3.0.0
# via irc
jaraco.text==3.2.0
# via
# irc
# jaraco.collections
jinja2==2.11.2
# via
# -r /awx_devel/requirements/requirements.in
# openshift
json-log-formatter==0.3.0
# via -r /awx_devel/requirements/requirements.in
jsonschema==3.2.0
# via -r /awx_devel/requirements/requirements.in
kubernetes==11.0.0
# via openshift
lockfile==0.12.2
# via python-daemon
lxml==4.5.0
# via xmlsec
markdown==3.2.1
# via -r /awx_devel/requirements/requirements.in
markupsafe==1.1.1
# via jinja2
more-itertools==8.2.0
# via
# irc
# jaraco.classes
# jaraco.functools
msgpack==1.0.0
# via channels-redis
msrest==0.6.11
# via
# azure-keyvault
# msrestazure
msrestazure==0.6.3
# via azure-keyvault
multidict==4.7.5
# via
# aiohttp
# yarl
netaddr==0.7.19
# via pyrad
oauthlib==3.1.0
# via
# django-oauth-toolkit
# requests-oauthlib
# social-auth-core
openshift==0.11.0
# via -r /awx_devel/requirements/requirements.in
pexpect==4.7.0
# via
# -r /awx_devel/requirements/requirements.in
# ansible-runner
pkgconfig==1.5.1
# via xmlsec
prometheus-client==0.7.1
# via -r /awx_devel/requirements/requirements.in
psutil==5.7.0
# via ansible-runner
psycopg2==2.8.4
# via -r /awx_devel/requirements/requirements.in
ptyprocess==0.6.0
# via pexpect
pyasn1-modules==0.2.8
# via
# google-auth
# python-ldap
# service-identity
pyasn1==0.4.8
# via
# pyasn1-modules
# python-ldap
# rsa
# service-identity
pycparser==2.20
# via cffi
pygerduty==0.38.2
# via -r /awx_devel/requirements/requirements.in
pyhamcrest==2.0.2
# via twisted
pyjwt==1.7.1
# via
# adal
# social-auth-core
# twilio
pyopenssl==19.1.0
# via twisted
pyparsing==2.4.6
# via -r /awx_devel/requirements/requirements.in
pyrad==2.3
# via django-radius
pyrsistent==0.15.7
# via jsonschema
python-daemon==2.2.4
# via ansible-runner
python-dateutil==2.8.1
# via
# adal
# kubernetes
# receptorctl
python-ldap==3.3.1
# via
# -r /awx_devel/requirements/requirements.in
# django-auth-ldap
python-string-utils==1.0.0
# via openshift
python3-openid==3.1.0
# via social-auth-core
python3-saml==1.9.0
# via -r /awx_devel/requirements/requirements.in
pytz==2019.3
# via
# django
# irc
# tempora
# twilio
pyyaml==5.4.1
# via
# -r /awx_devel/requirements/requirements.in
# ansible-runner
# djangorestframework-yaml
# kubernetes
# receptorctl
# via -r /awx_devel/requirements/requirements_git.txt
redis==3.4.1
# via
# -r /awx_devel/requirements/requirements.in
# django-redis
requests-oauthlib==1.3.0
# via
# kubernetes
# msrest
# social-auth-core
requests==2.23.0
# via
# -r /awx_devel/requirements/requirements.in
# adal
# azure-keyvault
# django-oauth-toolkit
# kubernetes
# msrest
# requests-oauthlib
# slackclient
# social-auth-core
# twilio
rsa==4.0
# via google-auth
ruamel.yaml.clib==0.2.0
# via ruamel.yaml
ruamel.yaml==0.16.10
# via openshift
schedule==0.6.0
# via -r /awx_devel/requirements/requirements.in
service-identity==18.1.0
# via twisted
six==1.14.0
# via
# ansible-runner
# automat
# cryptography
# django-extensions
# django-pglocks
# google-auth
# isodate
# jaraco.collections
# jaraco.logging
# jaraco.text
# jsonschema
# kubernetes
# openshift
# pygerduty
# pyopenssl
# pyrad
# pyrsistent
# python-dateutil
# slackclient
# social-auth-app-django
# social-auth-core
# tacacs-plus
# twilio
# websocket-client
slackclient==1.1.2
# via -r /awx_devel/requirements/requirements.in
smmap==3.0.1
# via gitdb
social-auth-app-django==3.1.0
# via -r /awx_devel/requirements/requirements.in
social-auth-core==3.3.1
# via
# -r /awx_devel/requirements/requirements.in
# social-auth-app-django
sqlparse==0.3.1
# via django
tacacs_plus==1.0
# via -r /awx_devel/requirements/requirements.in
tempora==2.1.0
# via
# irc
# jaraco.logging
twilio==6.37.0
# via -r /awx_devel/requirements/requirements.in
twisted[tls]==20.3.0
# via
# -r /awx_devel/requirements/requirements.in
# daphne
txaio==20.12.1
# via autobahn
typing-extensions==3.7.4.1
# via aiohttp
urllib3==1.25.8
# via
# kubernetes
# requests
uwsgi==2.0.18
# via -r /awx_devel/requirements/requirements.in
uwsgitop==0.11
# via -r /awx_devel/requirements/requirements.in
websocket-client==0.57.0
# via
# kubernetes
# slackclient
xmlsec==1.3.3
# via python3-saml
yarl==1.4.2
# via aiohttp
zipp==3.1.0
# via
# importlib-metadata
# importlib-resources
zope.interface==5.0.0
# via twisted
# The following packages are considered to be unsafe in a requirements file:
pip==19.3.1 # via -r /awx_devel/requirements/requirements.in
setuptools==41.6.0 # via -r /awx_devel/requirements/requirements.in, asciichartpy, google-auth, jsonschema, kubernetes, markdown, python-daemon, zope.interface
pip==19.3.1
# via -r /awx_devel/requirements/requirements.in
setuptools==41.6.0
# via
# -r /awx_devel/requirements/requirements.in
# asciichartpy
# google-auth
# jsonschema
# kubernetes
# markdown
# python-daemon
# receptorctl
# zope.interface

View File

@ -1,3 +1,3 @@
git+https://github.com/ansible/system-certifi.git@devel#egg=certifi
git+git://github.com/ansible/ansible-runner@devel#egg=ansible-runner
git+https://github.com/project-receptor/receptor.git@#egg=receptorctl&subdirectory=receptorctl
git+https://github.com/project-receptor/receptor.git@0.9.6#egg=receptorctl&subdirectory=receptorctl

View File

@ -2,71 +2,32 @@
set -ue
requirements_in="$(readlink -f ./requirements.in)"
requirements_ansible_in="$(readlink -f ./requirements_ansible.in)"
requirements="$(readlink -f ./requirements.txt)"
requirements_git="$(readlink -f ./requirements_git.txt)"
requirements_ansible="$(readlink -f ./requirements_ansible.txt)"
pip_compile="pip-compile --no-header --quiet -r --allow-unsafe"
check_prerequisites() {
for thing in patch awk python3 python2 virtualenv ; do
command -v $thing >/dev/null 2>&1 || { echo "$thing not installed or available. Please fix this before running." ; exit 1 ; }
done
}
_cleanup() {
cd /
test "${KEEP_TMP:-0}" = 1 || rm -rf "${_tmp}"
}
install_deps() {
pip install pip --upgrade
pip install "pip-tools==5.4.0" # see https://github.com/jazzband/pip-tools/pull/1237
}
generate_requirements_v3() {
venv="./venv3"
python3 -m venv "${venv}"
generate_requirements() {
venv="`pwd`/venv"
echo $venv
/usr/bin/python3 -m venv "${venv}"
# shellcheck disable=SC1090
. "${venv}/bin/activate"
source ${venv}/bin/activate
install_deps
${venv}/bin/python3 -m pip install -U pip pip-tools
${pip_compile} --output-file requirements.txt "${requirements_in}" "${requirements_git}"
# consider the git requirements for purposes of resolving deps
# Then remove any git+ lines from requirements.txt
cp requirements.txt requirements_tmp.txt
grep -v "^git+" requirements_tmp.txt > requirements.txt && rm requirements_tmp.txt
${pip_compile} --output-file requirements_ansible_py3.txt "${requirements_ansible_in}"
}
generate_requirements_v2() {
venv="./venv2"
virtualenv -p python2 "${venv}"
# shellcheck disable=SC1090
PS1="" . "${venv}/bin/activate"
install_deps
${pip_compile} --output-file requirements_ansible.txt "${requirements_ansible_in}"
}
generate_patch() {
a="requirements_ansible_py3.txt"
b="requirements_ansible.txt"
replace='; python_version < "3" #'
# most elegant/quick solution I could come up for now
out="$(diff --ignore-matching-lines='^#' --unified "${a}" "${b}" | \
awk -v replace="${replace}" '{ if (/^+\w/){ $2=replace; print;} else print; }' | \
sed 's/ ;/;/g')"
test -n "${out}"
echo "${out}"
}
main() {
check_prerequisites
_tmp="$(mktemp -d --suffix .awx-requirements XXXX -p /tmp)"
trap _cleanup INT TERM EXIT
@ -74,19 +35,11 @@ main() {
pip_compile="${pip_compile} --upgrade"
fi
cp -vf requirements.txt requirements_ansible.txt "${_tmp}"
cp -vf requirements_ansible.txt "${_tmp}/requirements_ansible_py3.txt"
cp -vf requirements.txt "${_tmp}"
cd "${_tmp}"
generate_requirements_v3
generate_requirements_v2
generate_requirements
sed -i 's/^wheel==0.30.0.*/wheel==0.33.6 # via azure-cli-core (overriden, see upgrade blockers)/g' requirements_ansible.txt
sed -i 's/^wheel==0.30.0.*/wheel==0.33.6 # via azure-cli-core (overriden, see upgrade blockers)/g' requirements_ansible_py3.txt
generate_patch | patch -p4 requirements_ansible_py3.txt
cp -vf requirements_ansible_py3.txt "${requirements_ansible}"
cp -vf requirements.txt "${requirements}"
_cleanup

View File

@ -141,6 +141,7 @@ RUN dnf -y install \
strace \
vim \
nmap-ncat \
libpq-devel \
nodejs \
nss \
make \