summaryrefslogtreecommitdiff
path: root/src/stage4/prepare_deptree.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/stage4/prepare_deptree.sh')
-rw-r--r--src/stage4/prepare_deptree.sh49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/stage4/prepare_deptree.sh b/src/stage4/prepare_deptree.sh
new file mode 100644
index 0000000..d5f512a
--- /dev/null
+++ b/src/stage4/prepare_deptree.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+ ##############################################################################
+ # parabola-riscv64-bootstrap #
+ # #
+ # Copyright (C) 2018 Andreas Grapentin #
+ # #
+ # This program is free software: you can redistribute it and/or modify #
+ # it under the terms of the GNU General Public License as published by #
+ # the Free Software Foundation, either version 3 of the License, or #
+ # (at your option) any later version. #
+ # #
+ # This program is distributed in the hope that it will be useful, #
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of #
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+ # GNU General Public License for more details. #
+ # #
+ # You should have received a copy of the GNU General Public License #
+ # along with this program. If not, see <http://www.gnu.org/licenses/>. #
+ ##############################################################################
+
+set -euo pipefail
+
+msg "preparing transitive dependency tree for $_groups (Stage 4)"
+
+echo -n "checking for complete deptree ... "
+[ -f "$_deptree".FULL ] && _have_deptree=yes || _have_deptree=no
+echo $_have_deptree
+
+if [ "x$_have_deptree" == "xno" ]; then
+ truncate -s0 "$_deptree".FULL
+
+ for _group in $_groups; do
+ for _pkg in $(pacman -Sg $_group | awk '{print $2}'); do
+ _realpkg=$(pacman --noconfirm -Sddw "$_pkg" | grep '^Packages' | awk '{print $3}')
+ _realpkg="${_realpkg%-*-*}"
+ if ! grep -q "^$_realpkg :" "$_deptree".FULL; then
+ echo "$_realpkg : [ ] # $_group" >> "$_deptree".FULL
+ else
+ sed -i "s/^$_realpkg : \[.*/&, $_group/" "$_deptree".FULL
+ fi
+ done
+ done
+fi
+
+[ -f "$_deptree" ] || cp "$_deptree"{.FULL,}
+chown $SUDO_USER "$_deptree"
+
+echo " total pkges: $(cat "$_deptree".FULL | wc -l)"
+echo " remaining pkges: $(cat "$_deptree" | wc -l)"