summaryrefslogtreecommitdiff
path: root/common/pkg
diff options
context:
space:
mode:
authorParménides GV <parmegv@sdf.org>2015-07-31 08:57:57 +0200
committerKali Kaneko <kali@leap.se>2015-08-03 16:02:22 -0400
commit0d8455007283fba00fa1747a30974de12fbe251c (patch)
tree5dd63683f6e59e6b75cc667820c332471d4243b3 /common/pkg
parente6c89cab3d0660756524d3fe631d4b1f96834b54 (diff)
[feat] use wheels to install dependencies
generate_wheels uses $WHEELHOUSE to generate and store the wheels for requirements.pip and requirements-testing.pip (if it exists). pip_install_requirements.sh installs requirements.pip from them if possible (if not, then it fetches them from pypi) or, if passed the --testing flag, it installs requirements-testing.pip. Related: #7327
Diffstat (limited to 'common/pkg')
-rwxr-xr-xcommon/pkg/generate_wheels.sh13
-rwxr-xr-xcommon/pkg/pip_install_requirements.sh71
2 files changed, 80 insertions, 4 deletions
diff --git a/common/pkg/generate_wheels.sh b/common/pkg/generate_wheels.sh
new file mode 100755
index 00000000..e29c327e
--- /dev/null
+++ b/common/pkg/generate_wheels.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Generate wheels for dependencies
+# Use at your own risk.
+
+if [ "$WHEELHOUSE" = "" ]; then
+ WHEELHOUSE=$HOME/wheelhouse
+fi
+
+pip wheel --wheel-dir $WHEELHOUSE pip
+pip wheel --wheel-dir $WHEELHOUSE --allow-external u1db --allow-unverified u1db --allow-external dirspec --allow-unverified dirspec -r pkg/requirements.pip
+if [ -f pkg/requirements-testing.pip ]; then
+ pip wheel --wheel-dir $WHEELHOUSE -r pkg/requirements-testing.pip
+fi
diff --git a/common/pkg/pip_install_requirements.sh b/common/pkg/pip_install_requirements.sh
index 71adebc7..c9dc3198 100755
--- a/common/pkg/pip_install_requirements.sh
+++ b/common/pkg/pip_install_requirements.sh
@@ -1,6 +1,69 @@
#!/bin/sh
-# Update pip and install LEAP base requirements.
-# For convenience, u1db and dirspec are allowed with insecure flags enabled.
+# Update pip and install LEAP base/testing requirements.
+# For convenience, $insecure_packages are allowed with insecure flags enabled.
# Use at your own risk.
-pip install -U pip
-pip install --allow-external u1db --allow-unverified u1db --allow-external dirspec --allow-unverified dirspec -r pkg/requirements.pip
+# See $usage for help
+
+insecure_packages="u1db dirspec"
+
+return_wheelhouse() {
+ if [ "$WHEELHOUSE" = "" ]; then
+ WHEELHOUSE=$HOME/wheelhouse
+ fi
+
+ if [ ! -d "$WHEELHOUSE" ]; then
+ mkdir $WHEELHOUSE
+ fi
+
+ echo "$WHEELHOUSE"
+}
+
+show_help() {
+ usage="Usage: $0 [--testing]\n --testing\tInstall dependencies from requirements-testing.pip\n
+\t\tOtherwise, it will install requirements.pip"
+ echo $usage
+
+ exit 1
+}
+
+process_arguments() {
+ testing=false
+ while [ "$#" -gt 0 ]; do
+ # From http://stackoverflow.com/a/31443098
+ case "$1" in
+ --help) show_help;;
+ --testing) testing=true; shift 1;;
+
+ -h) show_help;;
+ -*) echo "unknown option: $1" >&2; exit 1;;
+ esac
+ done
+}
+
+return_insecure_flags() {
+ for insecure_package in $insecure_packages; do
+ flags="$flags --allow-external $insecure_package --allow-unverified $insecure_package"
+ done
+
+ echo $flags
+}
+
+return_packages() {
+ if $testing ; then
+ packages="-r pkg/requirements-testing.pip"
+ else
+ packages="-r pkg/requirements.pip"
+ fi
+
+ echo $packages
+}
+
+process_arguments $@
+wheelhouse=`return_wheelhouse`
+install_options="-U --find-links=$wheelhouse"
+insecure_flags=`return_insecure_flags`
+packages=`return_packages`
+
+pip install -U wheel
+pip install $install_options pip
+pip install $install_options $insecure_flags $packages