From: Samir Benmendil Date: Sun, 14 May 2017 20:03:41 +0000 (+0100) Subject: bin: add old/makepkg-ros X-Git-Url: https://git.rmz.io/dotfiles.git/commitdiff_plain/5af490ff6936cd2979773a0e53c1c43d04147648 bin: add old/makepkg-ros --- diff --git a/bin/old/makepkg-ros b/bin/old/makepkg-ros new file mode 100755 index 0000000..2bd59a0 --- /dev/null +++ b/bin/old/makepkg-ros @@ -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