mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-26 02:11:53 +00:00
55 lines
1.2 KiB
Bash
Executable File
55 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
cd "$(dirname "${BASH_SOURCE[0]}")"
|
|
|
|
IFS="-" read -ra FEATURES <<< "$ENVIRONMENT"
|
|
FEATURES+=("${ARCH}")
|
|
if [ "$ARCH" != "$PLATFORM" ]; then
|
|
FEATURES+=("${PLATFORM}")
|
|
fi
|
|
if [[ "$PLATFORM" =~ -nonfree$ ]]; then
|
|
FEATURES+=("nonfree")
|
|
fi
|
|
if [[ "$PLATFORM" =~ -nvidia$ ]]; then
|
|
FEATURES+=("nonfree")
|
|
FEATURES+=("nvidia")
|
|
fi
|
|
|
|
feature_file_checker='
|
|
/^#/ { next }
|
|
/^\+ [a-z0-9.-]+$/ { next }
|
|
/^- [a-z0-9.-]+$/ { next }
|
|
{ exit 1 }
|
|
'
|
|
|
|
for type in conflicts depends; do
|
|
pkgs=()
|
|
for feature in ${FEATURES[@]}; do
|
|
file="$feature.$type"
|
|
if [ -f $file ]; then
|
|
# TODO check for syntax errrors
|
|
cat $file | awk "$feature_file_checker"
|
|
for pkg in $(cat $file | awk '/^\+/ {print $2}'); do
|
|
pkgs+=($pkg)
|
|
done
|
|
fi
|
|
done
|
|
for pkg in $(cat $type); do
|
|
SKIP=
|
|
for feature in ${FEATURES[@]}; do
|
|
file="$feature.$type"
|
|
if [ -f $file ]; then
|
|
if grep "^- $pkg$" $file > /dev/null; then
|
|
SKIP=yes
|
|
fi
|
|
fi
|
|
done
|
|
if [ -z $SKIP ]; then
|
|
pkgs+=($pkg)
|
|
fi
|
|
done
|
|
(IFS=$'\n'; echo "${pkgs[*]}") | sort -u > ../lib/$type
|
|
done
|