|
|
@ -0,0 +1,153 @@ |
|
|
|
#!/bin/bash |
|
|
|
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
|
|
# |
|
|
|
# Filename: lib/sde-config/pkgseldir_compile.sh |
|
|
|
# Copyright (C) 2008 The OpenSDE Project |
|
|
|
# |
|
|
|
# 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 --- |
|
|
|
|
|
|
|
PKGSEL_LIST_VAR="$1" |
|
|
|
VAR_PREFIX="$2" |
|
|
|
OUT_PREFIX="$3" |
|
|
|
|
|
|
|
shift 3 |
|
|
|
|
|
|
|
OUT_CONFIG="${OUT_PREFIX}config.in" |
|
|
|
OUT_PKGSEL="${OUT_PREFIX}pkgsel.in" |
|
|
|
OUT_PKGSELAWK="${OUT_PREFIX}pkgsel.awk" |
|
|
|
|
|
|
|
trap ' ' INT |
|
|
|
|
|
|
|
module_get_var() |
|
|
|
{ |
|
|
|
echo "${VAR_PREFIX}${1}" | tr ' a-z-' '_A-Z_' |
|
|
|
} |
|
|
|
|
|
|
|
module_get_description() |
|
|
|
{ |
|
|
|
sed -n -e 's/^# Description: \(.*\)/\1/p' "$1" |
|
|
|
} |
|
|
|
|
|
|
|
module_get_default() |
|
|
|
{ |
|
|
|
sed -n -e 's/^# Default: \(.*\)/\1/p' "$1" |
|
|
|
} |
|
|
|
|
|
|
|
module_render() |
|
|
|
{ |
|
|
|
local pkgseldir="$1" module_dir="$2" module_filename="$3" module_name="$4" module_type="$5" |
|
|
|
local file= var= desc= default= |
|
|
|
|
|
|
|
# recompose the full path to the module file |
|
|
|
file="$pkgseldir${module_dir:+/$module_dir}/$module_filename" |
|
|
|
var="$( module_get_var "$module_name" )" |
|
|
|
|
|
|
|
# print headers |
|
|
|
cat <<-EOT | tee -a "$OUT_CONFIG.$$" >> "$OUT_PKGSEL.$$" |
|
|
|
# BEGIN:$var ($module_filename) |
|
|
|
# |
|
|
|
EOT |
|
|
|
|
|
|
|
case "$module_type" in |
|
|
|
auto) |
|
|
|
cat <<-EOT >> "$OUT_PKGSEL.$$" |
|
|
|
$PKGSEL_LIST_VAR="\$$PKGSEL_LIST_VAR $file" |
|
|
|
EOT |
|
|
|
;; |
|
|
|
boolean) |
|
|
|
desc="$( module_get_description "$file" )" |
|
|
|
default="$( module_get_default "$file" )" |
|
|
|
|
|
|
|
cat <<-EOT >> "$OUT_CONFIG.$$" |
|
|
|
bool '${desc:-${module_name//_/ }}' $var ${default:-0} |
|
|
|
EOT |
|
|
|
|
|
|
|
cat <<-EOT >> "$OUT_PKGSEL.$$" |
|
|
|
if [ "\$$var" = 1 ]; then |
|
|
|
$PKGSEL_LIST_VAR="\$$PKGSEL_LIST_VAR $file" |
|
|
|
fi |
|
|
|
EOT |
|
|
|
;; |
|
|
|
esac |
|
|
|
|
|
|
|
# print footers |
|
|
|
cat <<-EOT | tee -a "$OUT_CONFIG.$$" >> "$OUT_PKGSEL.$$" |
|
|
|
# END:$var |
|
|
|
|
|
|
|
EOT |
|
|
|
} |
|
|
|
|
|
|
|
cat <<-EOT | tee "$OUT_CONFIG.$$" > "$OUT_PKGSEL.$$" |
|
|
|
# Generated by $0 |
|
|
|
# ($( date )) |
|
|
|
# using: $@ |
|
|
|
|
|
|
|
EOT |
|
|
|
|
|
|
|
for pkgseldir; do |
|
|
|
if [ ! -d "$pkgseldir" ]; then |
|
|
|
echo "$pkgseldir: Invalid pkgseldir." >&2 |
|
|
|
continue |
|
|
|
else |
|
|
|
pkgseldir=$( cd "$pkgseldir"; pwd -P ) |
|
|
|
fi |
|
|
|
|
|
|
|
bin/find "$pkgseldir" -name '*.all' -o -name '*.ask' | sort | while read module; do |
|
|
|
# simple parsing |
|
|
|
# |
|
|
|
module_dir="${module%/*}" |
|
|
|
module_filename="${module##*/}" |
|
|
|
module_file_ext="${module##*.}" |
|
|
|
|
|
|
|
case "$module_file_ext" in |
|
|
|
all) module_type=auto |
|
|
|
;; |
|
|
|
ask) module_type=boolean |
|
|
|
;; |
|
|
|
*) # not a module |
|
|
|
continue |
|
|
|
;; |
|
|
|
esac |
|
|
|
|
|
|
|
# make $module_dir $pkgseldir relative |
|
|
|
if [ "$module_dir" = "$pkgseldir" ]; then |
|
|
|
module_dir= |
|
|
|
else |
|
|
|
module_dir="${module_dir#$pkgseldir/}" |
|
|
|
fi |
|
|
|
|
|
|
|
module_name="$( echo "${module_filename%.*}" | sed -e 's/^[0-9][0-9]-//' )" |
|
|
|
|
|
|
|
module_render "$pkgseldir" "$module_dir" "$module_filename" "$module_name" "$module_type" |
|
|
|
done |
|
|
|
done |
|
|
|
|
|
|
|
cat <<EOT >> "$OUT_PKGSEL.$$" |
|
|
|
|
|
|
|
# Update .awk file only if needed |
|
|
|
# |
|
|
|
if [ ! -s "$OUT_PKGSELAWK" -o "\$( cat "$OUT_PKGSELAWK.cache" 2> /dev/null)" != "\$$PKGSEL_LIST_VAR" ]; then |
|
|
|
echo "\$$PKGSEL_LIST_VAR" > $OUT_PKGSELAWK.cache |
|
|
|
|
|
|
|
cat <<-EOF > "$OUT_PKGSELAWK.\$\$" |
|
|
|
# Generated by \$0 |
|
|
|
# \$( date ) |
|
|
|
# using: \$$PKGSEL_LIST_VAR |
|
|
|
|
|
|
|
EOF |
|
|
|
|
|
|
|
lib/sde-config/pkgsel2awk.sh \$$PKGSEL_LIST_VAR >> "$OUT_PKGSELAWK.\$\$" |
|
|
|
mv "$OUT_PKGSELAWK.\$\$" "$OUT_PKGSELAWK" |
|
|
|
fi |
|
|
|
EOT |
|
|
|
|
|
|
|
for x in $OUT_CONFIG $OUT_PKGSEL; do |
|
|
|
mv "$x.$$" "$x" |
|
|
|
done |