]> git.rmz.io Git - dotfiles.git/commitdiff
bin: add old/makepkg-ros
authorSamir Benmendil <me@rmz.io>
Sun, 14 May 2017 20:03:41 +0000 (21:03 +0100)
committerSamir Benmendil <me@rmz.io>
Sun, 14 May 2017 20:03:41 +0000 (21:03 +0100)
bin/old/makepkg-ros [new file with mode: 0755]

diff --git a/bin/old/makepkg-ros b/bin/old/makepkg-ros
new file mode 100755 (executable)
index 0000000..2bd59a0
--- /dev/null
@@ -0,0 +1,156 @@
+#!/bin/bash
+
+get_pkgbuild()
+{
+    source $1
+    echo "pkgname=$pkgname"
+    if [[ "$2" == "ros_depends" ]]; then
+        echo "depends=( ${ros_depends[@]%%[=<>]*} ${ros_makedepends[@]%%[=<>]*} )"
+    elif [[ "$2" == "depends" ]]; then
+        echo "depends=( ${depends[@]%%[=<>]*} )"
+    else
+        echo 'get_pkgbuild() must have either "rosdepends" or "depends" as second argument' >&2
+    fi
+}
+
+get_version()
+{
+    source $1
+    printf "%s-%s" "$pkgver" "$pkgrel"
+}
+
+get_makepkg_conf()
+{
+    source /etc/makepkg.conf
+    echo "pkgdest=${PKGDEST-.}"
+    echo "pkgext=${PKGEXT-.pkg.tar.xz}"
+}
+
+msg()
+{
+    local mesg=$1; shift
+    local ALL_OFF="$(tput sgr0)"
+    local BOLD="$(tput bold)"
+    local GREEN="${BOLD}$(tput setaf 2)"
+    printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
+}
+
+get_all()
+{
+    echo $(find "$1" -name PKGBUILD)
+}
+
+get_from_list()
+{
+    if [[ $# -gt 0 ]]; then
+        local pkgs=( $@ )
+        dir=${pkgs[0]#ros-}; dir=${dir%%-*}
+        local pkgnames=${pkgs[@]#ros-$dir-}
+        pkgnames=${pkgnames//-/_}
+        for pkg in ${pkgnames[@]}; do
+            echo $dir/$pkg/PKGBUILD
+        done
+    fi
+}
+
+get_rosdepends()
+{
+    for pkgbuild in ${@}; do
+        source <(get_pkgbuild $pkgbuild "rosdepends")
+        for depend in ${depends[@]}; do
+            printf "%s %s\n" "$depend" "$pkgname"
+        done
+    done
+}
+
+get_depends()
+{
+    for pkgbuild in ${@}; do
+        source <(get_pkgbuild $pkgbuild "depends")
+        for depend in ${depends[@]}; do
+            printf "%s %s\n" "${depend}" "$pkgname"
+        done
+    done
+}
+
+usage()
+{
+    echo "usage: $(basename "$0") [option] rosdistro"
+    echo
+    echo "    --force - force rebuilding all packages"
+    exit
+}
+
+# Argument parsing
+packageargs=()
+pkgargs=()
+while [[ $1 ]]; do
+    case "$1" in
+        '--force'|'-f') force='1' ;;
+        # '--ignore') ignorearg="$2" ; PACOPTS+=("--ignore" "$2") ; shift ;;
+        # '--') shift ; packageargs+=("$@") ; break ;;
+        -*) echo "$0: Option \`$1' is not valid." ; exit 5 ;;
+        groovy*) dir="groovy" ;;
+        hydro*)  dir="hydro"  ;;
+        indigo*) dir="indigo" ;;
+        *) pkgargs+=($1) ;;
+    esac
+    shift
+done
+
+if [[ $dir ]]; then
+    pkgbuilds=( $(get_all $dir) )
+elif [[ ${#pkgargs[@]} -gt 0 ]]; then
+    pkgbuilds=( $(get_from_list ${pkgargs[@]}) )
+    dir=${pkgbuilds[0]%%/*}
+else
+    usage
+fi
+
+makepkgopts+=("--asdeps" "--noconfirm")
+# [[ $force ]] && makepkgopts+=("--force") || makepkgopts+=("--needed")
+[[ $force ]] || makepkgopts+=("--needed")
+
+dependencies=( $(find "./dependencies" -name PKGBUILD) )
+sorted_deps=( $(tsort <(get_depends ${dependencies[@]}) ) )
+
+for dependency in ${sorted_deps[@]}; do
+    if pacman -Ssq "^$dependency$" > /dev/null; then
+        continue
+    fi
+    if ! pushd dependencies/"${dependency}" > /dev/null 2>&1 ; then
+        if [[ "$dependency" =~ "python3" ]]; then
+            dependency=${dependency/3/}
+        fi
+        if ! pushd dependencies/"${dependency}" > /dev/null 2>&1 ; then
+            echo "Could not enter dir 'dependencies/${dependency}'" >&2
+            continue
+        fi
+    fi
+    # makepkg -si "${makepkgopts[@]}"
+    retcode=$?
+    popd > /dev/null
+    [[ $retcode -ne 0 ]] && exit $retcode
+done
+
+exit
+
+
+sorted=( $(tsort <(get_rosdepends ${pkgbuilds[@]}) ) )
+source <(get_makepkg_conf)
+for pkgname in ${sorted[@]}; do
+    pkgdir=${pkgname#ros-$dir-}
+    pkgdir=${pkgdir//-/_}
+    pushd "$dir"/$pkgdir > /dev/null
+    ver=$(get_version ./PKGBUILD)
+    retcode=0
+    if [[ ! -e ignore ]]; then
+        pkgs=( $(ls --reverse *$pkgext 2> /dev/null) )
+        makepkg -si "${makepkgopts[@]}"
+        retcode=$?
+        # remove old pkgs
+        [[ -n "${pkgs[@]:1}" ]] && rm ${pkgs[@]:1}
+    fi
+    popd > /dev/null
+    [[ $retcode -ne 0 ]] && exit $retcode
+done