#!/bin/bash # --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: lib/sde-config/pkgsel2awk.sh # Copyright (C) 2006 - 2007 The OpenSDE Project # Copyright (C) 2004 - 2006 The T2 SDE Project # Copyright (C) 1998 - 2003 Clifford Wolf # # 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 as published by # the Free Software Foundation; version 2 of the License. A copy of the # GNU General Public License can be found in the file COPYING. # --- SDE-COPYRIGHT-NOTE-END --- # Convert a pkg selection rule into awk format # # Example: # pkgsel X python # Result: ( / [^/]*\/python / ) { $1="X"; } # pkgsel "O perl/*" # Result: ( / perl\/[^/]* / ) { $1="O"; } # pkgsel_parse < config/${config}/pkgsel # Result: creates pkgsel.awk output # pkgsel include file # Result: continues processing file specified pkgsel_pattern() { local pattern= xpattern= local address= for xpattern; do pattern="${xpattern#\!}" [ "$pattern" = "$xpattern" ]; neg=$? [ "${pattern}" = "${pattern//\//}" ] && pattern="*/$pattern" pattern="$( echo "$pattern" | sed \ -e 's,[^a-zA-Z0-9_/\*+\-\[\]],,g' \ -e 's,[/\.\+],\\\\&,g' \ -e 's,\*,[^/]*,g' )" [ -z "$address" ] || address="$address &&" if [ $neg -eq 0 ]; then address="$address( \$5 ~ \"^${pattern}\$\" )" else address="$address( \$5 !~ \"^${pattern}\$\" )" fi done echo "$address" } pkgsel_parse() { local action patterlist local address first others sed -e '/^#/d;' -e '/^[ \t]*$/d;' "$@" | while read action patternlist ; do case "$action" in [xX]) action='$1="X"' ;; [oO]) action='$1="O"' ;; -) action='next' ;; =) action='$1=def' ;; include) pkgsel_parse $patternlist continue ;; *) echo '{ exit; }' continue ;; esac address=$( pkgsel_pattern "$patternlist" ) echo "{ if ( $address ) { $action; } }" done } cat <