Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/ash
- outfile=~/testcat.in
- #cat_file=/usr/local/petget/categories.dat
- cat_file=~/cat_test_cat.dat
- . ~/build_cannonical
- awk -v PKGOS="$distro" -v PKGOSVER="$distro_ver" -v CATFILE="$cat_file" -v ALIASFILE="$alias_file" \
- 'function fixdepends(s, p,a,sout) {
- split(s,a,",")
- for (p in a) {
- sout = sout ",+" a[p]
- }
- sub(/^,/,"",sout) ; return sout;
- }
- function parse_pkg_name(s, txz_split,arch_build){
- match(s,/^([^\-]*)(\-.*)(\.([^\-]+))$/,txz_split)
- PKG=txz_split[1]
- split(txz_split[2],ver_arch_build,"-")
- PKGVER=ver_arch_build[2]
- len=length(ver_arch_build)
- if (len == 4){
- BUILD_NO=ver_arch_build[4]
- ARCH=ver_arch_build[3]
- }
- else if(len == 3){
- if (ver_arch_build[len-1] ~ /^[0-9]+$/){
- BUILD_NO=ver_arch_build[2]
- }
- else{
- ARCH=ver_arch_build[3]
- }
- }
- }
- function maybe_parse_dec(s, line_split){
- if( PARSE_DEC_FLAG == 1){
- match($0,/(\S+):\s+(.*)$/,line_split)
- if(length(line_split) > 0){
- if (line_split[1] == PKG){
- PKGINFO=substr(line_split[2],1,200)
- PARSE_DEC_FLAG=0
- }
- }
- }
- }
- function cat_fallback(s){
- switch(s){
- case /vcs.*/:
- return "Utility;development"
- break
- case /doc.*/:
- return "Help"
- break
- case /admin.*/:
- return "Setup"
- break
- case /games.*/:
- return "Fun"
- break
- case /.{7,}/:
- return "science"
- break
- default:
- return "BuildingBlock"
- break
- }
- }
- function parse_cats(s){
- i=index(s,"=")
- if (i>0){
- #catagory=( package1 package2 ... packageN)
- category=substr(s,i-1)
- sub(/PKGCAT_/,"",category) #e.g. category=PKGCAT_Utility => category=Utility
- sub(/_/,";",category) #e.g. category=Filesystem_filemanager => category=Filesystem;filemanager
- #e.g catagory=( package1 package2 ... packageN) => package1 package2 ... packageN
- gensub(/^([^=]+="\s)(.*)(\s*"\s*)$/,"\\2","g",s)
- split(s,pkg_names" ")
- for (pkg in pkg_names){
- pkg_categories[pkg]=category
- }
- }
- }'\
- "$ALIAS_FNS"\
- 'BEGIN { init_CANONICAL_ARY() #MAPS a PKG NAME to a canonical name
- }
- FILENAME = ALIASFILE {
- FILENAME = CATFILE {parse_cats($0)
- next} #https://www3.physnet.uni-hamburg.de/physnet/Tru64-Unix/HTML/APS32DTE/WKXXXXXX.HTM
- /^PACKAGE NAME:/ { sub(/^PACKAGE NAME:\s*/,""); PKGFILE=$0; parse_pkg_name($0); }
- /^PACKAGE LOCATION:/ { sub(/^PACKAGE LOCATION:\s*/,""); sub(/^(.\/)?/,""); PKGPATH=$0; }
- /^PACKAGE SIZE \(uncompressed\):/ { sub(/^PACKAGE SIZE \(uncompressed\):\s*/,""); sub(/\s/,""); PKGSIZE=$0; }
- /^PACKAGE DESCRIPTION:/ { PARSE_DEC_FLAG=1}
- /^PACKAGE REQUIRED:/ { sub(/^PACKAGE REQUIRED:\s*/,""); PKGDEP=fixdepends($0); }
- {maybe_parse_dec($0)}
- /^$/ {
- if (length(PKG)>1){
- print PKG "_" PKGVER "|" PKG "|" PKGVER "|" BUILD_NO "|" PKGSECTION "|" PKGSIZE "|" PKGPATH "|" PKGFILE "|" PKGDEP "|" PKGINFO "|" PKGOS "|" PKGOSVER "|"
- };
- PKG=""; PKGVER=""; PKGSECTION="CATEGORY"; PKGSIZE=""; PKGFILE=""; PKGPATH=""; PKGDEP=""; PKGINFO=""; PKGPRIO=""; BUILD_NO=""; ARCH=""; PARSE_DEC_FLAG=0; }
- ' "$alias_file" "$cat_file"
- #cat "$cat_file"
Advertisement
Add Comment
Please, Sign In to add comment