]> git.rmz.io Git - dotfiles.git/blob - bin/old/makepkg-ros
zsh: gpo/gpfo aliases for git push origin (--force-with-lease)
[dotfiles.git] / bin / old / makepkg-ros
1 #!/bin/bash
2
3 get_pkgbuild()
4 {
5 source $1
6 echo "pkgname=$pkgname"
7 if [[ "$2" == "ros_depends" ]]; then
8 echo "depends=( ${ros_depends[@]%%[=<>]*} ${ros_makedepends[@]%%[=<>]*} )"
9 elif [[ "$2" == "depends" ]]; then
10 echo "depends=( ${depends[@]%%[=<>]*} )"
11 else
12 echo 'get_pkgbuild() must have either "rosdepends" or "depends" as second argument' >&2
13 fi
14 }
15
16 get_version()
17 {
18 source $1
19 printf "%s-%s" "$pkgver" "$pkgrel"
20 }
21
22 get_makepkg_conf()
23 {
24 source /etc/makepkg.conf
25 echo "pkgdest=${PKGDEST-.}"
26 echo "pkgext=${PKGEXT-.pkg.tar.xz}"
27 }
28
29 msg()
30 {
31 local mesg=$1; shift
32 local ALL_OFF="$(tput sgr0)"
33 local BOLD="$(tput bold)"
34 local GREEN="${BOLD}$(tput setaf 2)"
35 printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
36 }
37
38 get_all()
39 {
40 echo $(find "$1" -name PKGBUILD)
41 }
42
43 get_from_list()
44 {
45 if [[ $# -gt 0 ]]; then
46 local pkgs=( $@ )
47 dir=${pkgs[0]#ros-}; dir=${dir%%-*}
48 local pkgnames=${pkgs[@]#ros-$dir-}
49 pkgnames=${pkgnames//-/_}
50 for pkg in ${pkgnames[@]}; do
51 echo $dir/$pkg/PKGBUILD
52 done
53 fi
54 }
55
56 get_rosdepends()
57 {
58 for pkgbuild in ${@}; do
59 source <(get_pkgbuild $pkgbuild "rosdepends")
60 for depend in ${depends[@]}; do
61 printf "%s %s\n" "$depend" "$pkgname"
62 done
63 done
64 }
65
66 get_depends()
67 {
68 for pkgbuild in ${@}; do
69 source <(get_pkgbuild $pkgbuild "depends")
70 for depend in ${depends[@]}; do
71 printf "%s %s\n" "${depend}" "$pkgname"
72 done
73 done
74 }
75
76 usage()
77 {
78 echo "usage: $(basename "$0") [option] rosdistro"
79 echo
80 echo " --force - force rebuilding all packages"
81 exit
82 }
83
84 # Argument parsing
85 packageargs=()
86 pkgargs=()
87 while [[ $1 ]]; do
88 case "$1" in
89 '--force'|'-f') force='1' ;;
90 # '--ignore') ignorearg="$2" ; PACOPTS+=("--ignore" "$2") ; shift ;;
91 # '--') shift ; packageargs+=("$@") ; break ;;
92 -*) echo "$0: Option \`$1' is not valid." ; exit 5 ;;
93 groovy*) dir="groovy" ;;
94 hydro*) dir="hydro" ;;
95 indigo*) dir="indigo" ;;
96 *) pkgargs+=($1) ;;
97 esac
98 shift
99 done
100
101 if [[ $dir ]]; then
102 pkgbuilds=( $(get_all $dir) )
103 elif [[ ${#pkgargs[@]} -gt 0 ]]; then
104 pkgbuilds=( $(get_from_list ${pkgargs[@]}) )
105 dir=${pkgbuilds[0]%%/*}
106 else
107 usage
108 fi
109
110 makepkgopts+=("--asdeps" "--noconfirm")
111 # [[ $force ]] && makepkgopts+=("--force") || makepkgopts+=("--needed")
112 [[ $force ]] || makepkgopts+=("--needed")
113
114 dependencies=( $(find "./dependencies" -name PKGBUILD) )
115 sorted_deps=( $(tsort <(get_depends ${dependencies[@]}) ) )
116
117 for dependency in ${sorted_deps[@]}; do
118 if pacman -Ssq "^$dependency$" > /dev/null; then
119 continue
120 fi
121 if ! pushd dependencies/"${dependency}" > /dev/null 2>&1 ; then
122 if [[ "$dependency" =~ "python3" ]]; then
123 dependency=${dependency/3/}
124 fi
125 if ! pushd dependencies/"${dependency}" > /dev/null 2>&1 ; then
126 echo "Could not enter dir 'dependencies/${dependency}'" >&2
127 continue
128 fi
129 fi
130 # makepkg -si "${makepkgopts[@]}"
131 retcode=$?
132 popd > /dev/null
133 [[ $retcode -ne 0 ]] && exit $retcode
134 done
135
136 exit
137
138
139 sorted=( $(tsort <(get_rosdepends ${pkgbuilds[@]}) ) )
140 source <(get_makepkg_conf)
141 for pkgname in ${sorted[@]}; do
142 pkgdir=${pkgname#ros-$dir-}
143 pkgdir=${pkgdir//-/_}
144 pushd "$dir"/$pkgdir > /dev/null
145 ver=$(get_version ./PKGBUILD)
146 retcode=0
147 if [[ ! -e ignore ]]; then
148 pkgs=( $(ls --reverse *$pkgext 2> /dev/null) )
149 makepkg -si "${makepkgopts[@]}"
150 retcode=$?
151 # remove old pkgs
152 [[ -n "${pkgs[@]:1}" ]] && rm ${pkgs[@]:1}
153 fi
154 popd > /dev/null
155 [[ $retcode -ne 0 ]] && exit $retcode
156 done