#!/usr/bin/env bash # # --- T2-COPYRIGHT-NOTE-BEGIN --- # T2 SDE: scripts/Check-Deps-1 # Copyright (C) 2004 - 2023 The T2 SDE Project # Copyright (C) 1998 - 2003 ROCK Linux Project # # This Copyright note is generated by scripts/Create-CopyPatch, # more information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # --- T2-COPYRIGHT-NOTE-END --- gawk ' function check_package() { split(pkgline, a); dep=a[2]; if (! index(a[2], stagelevel)) return; repository = a[4]; package = a[5]; present = present " " package " "; if (stagelevel < 2) return; depfile = depfile_tpl; gsub("", stagelevel, depfile); gsub("", repository, depfile); gsub("", package, depfile); firstent=1; gsub(" \\[.\\]:" repository "/" package ":[^ ]*", "", errors); while ((getline depline < depfile) > 0) { split(depline, a); if (a[1] != "[DEP]") continue; for (c=2; a[c] != ""; c++) { if (a[c] == package) continue; if (! index(present, " " a[c] " ")) { if (firstent) errors = errors " [" stagelevel "]:" \ repository "/" package ":"; errors = errors ":" a[c]; firstent=0; } } } close(depfile); } BEGIN { present=""; errors=""; system("mkdir -p src; scripts/Create-PkgList x86 > src/pkg_list"); depfile_tpl = "package///.cache"; for (stagelevel=0; stagelevel<9; stagelevel++) { while ((getline pkgline < "src/pkg_list") > 0) { check_package(); } close("src/pkg_list"); } system("rm -f src/pkg_list"); if (errors != "") { print "\nThe following packages have dependencies which"; print "are not solved before stage 9:\n"; print "Stage Package Dependencies"; gsub(" ", "\n", errors); gsub("::", "\t", errors); gsub(":", " ", errors); print errors | "expand -t30"; } }'