diff --git a/.gitignore b/.gitignore index 6fe13d0..26f7f0a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ swh-*/ packages/* snippets/ !packages/README -!packages/keys/ \ No newline at end of file +!packages/keys/ + +.venv diff --git a/bin/pip-install-deps b/bin/pip-install-deps deleted file mode 100755 index 806ffec..0000000 --- a/bin/pip-install-deps +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -LS_DEPS="bin/pip-ls-deps" -if ! [ -x "$LS_DEPS" ] ; then - echo "pip-install-deps should be run from the root of swh-environment. Bye." - exit 2 -fi - -if [ "$1" = '-h' -o "$1" = '--help' ] ; then - echo "Usage: bin/pip-install-deps [PIP3_INSTALL_OPTION]..." - echo - echo "Tip: you can use bin/pip-ls-deps to list the dependencies that will be installed." - exit 2 -fi - -set -x - -requirements=$(mktemp tmp.swh-requirements.txt.XXXXXXXXXX) -trap "rm -f ${requirements}" EXIT -"$LS_DEPS" > "$requirements" - -pip3 install --requirement "$requirements" "$@" diff --git a/bin/pip-swh-packages b/bin/pip-swh-packages new file mode 100755 index 0000000..6a52b3b --- /dev/null +++ b/bin/pip-swh-packages @@ -0,0 +1,10 @@ +#!/bin/bash + +./bin/py-depgraph | + grep -- '->' | + sed -e 's/[";]//g' -e 's/->//g' | + tsort | + tac | + grep '^swh\.' | + sed 's:\.:-:g' | + sed 's:^:-e :' diff --git a/bin/py-depgraph b/bin/py-depgraph index 5e39faa..7429e4a 100755 --- a/bin/py-depgraph +++ b/bin/py-depgraph @@ -1,59 +1,62 @@ #!/bin/bash # generate dependency graph (in DOT(1) format) for all known python modules # # include by default both internal and external dependencies, but can asked to # include either or none of them (see --help) internal_modules=1 external_modules=1 while [ -n "$1" ] ; do if [ "$1" = "--no-internal" ] ; then internal_modules=0 elif [ "$1" = "--no-external" ] ; then external_modules=0 elif [ "$1" = "--help" -o "$1" = "-h" ] ; then echo "Usage: bin/py-depgraph [--no-internal] [--no-external] > FILE.dot" exit 1 fi shift 1 done pyrepos=$(bin/ls-py-modules) # available python repositories (with '-') declare -A pymods # available python modules (with '.') for repo in $pyrepos ; do pymod=${repo//-/.} pymods[$pymod]=1 done echo "digraph swh_py_deps {" for pymod in ${!pymods[@]} ; do echo -e "\t\"$pymod\" ;" done getdeps() { - grep -E -v '(^#|^[[:space:]]*$)' "$1" | cut -f 1 -d ' ' | tr 'A-Z' 'a-z' + grep -E -v '(^#|^[[:space:]]*$)' "$1" | + cut -f 1 -d ' ' | + tr 'A-Z' 'a-z' | + sed -E 's/\[\w+\]//' } for repo in $pyrepos ; do pymod=${repo//-/.} reqs_int="${repo}/requirements-swh.txt" reqs_ext="${repo}/requirements.txt" if [ "$internal_modules" -eq 1 -a -f "$reqs_int" ]; then for dep in $( getdeps "$reqs_int" ) ; do echo -e "\t\"${pymod}\" -> \"${dep}\" ;" done fi if [ "$external_modules" -eq 1 -a -f "$reqs_ext" ]; then for dep in $( getdeps "$reqs_ext" ) ; do echo -e "\t\"${dep}\" [style=dashed] ;" echo -e "\t\"${pymod}\" -> \"${dep}\" ;" done fi done | sort -u echo "}"