summaryrefslogtreecommitdiff
path: root/pkgbuild-check-nonfree
diff options
context:
space:
mode:
Diffstat (limited to 'pkgbuild-check-nonfree')
-rwxr-xr-xpkgbuild-check-nonfree147
1 files changed, 82 insertions, 65 deletions
diff --git a/pkgbuild-check-nonfree b/pkgbuild-check-nonfree
index e947a39..21842ac 100755
--- a/pkgbuild-check-nonfree
+++ b/pkgbuild-check-nonfree
@@ -3,79 +3,96 @@
# Copyright 2010 Joshua Ismael Haase Hernández, Joseph Graham
# ---------- GNU General Public License 3 ----------
-
-# This file is part of Parabola.
-
-# Parabola 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, either version 3 of the License, or
-# (at your option) any later version.
-
-# Parabola is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with Parabola. If not, see <http://www.gnu.org/licenses/>.
-source /etc/libretools.conf
-[[ -f $XDG_CONFIG_HOME/libretools/libretools.conf ]] && \
- source $XDG_CONFIG_HOME/libretools/libretools.conf
+# This file is part of Parabola.
+
+# Parabola 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, either version 3 of the License, or
+# (at your option) any later version.
-mkdir -p $XDG_CONFIG_HOME/libretools
-pushd $XDG_CONFIG_HOME/libretools/ >/dev/null
+# Parabola is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
-# This is the exit status.
-ev=0
+# You should have received a copy of the GNU General Public License
+# along with Parabola. If not, see <http://www.gnu.org/licenses/>.
-# Check if the blacklist variable is empty, and if so error.
-[[ ${#BLACKLIST} -eq 0 ]] && {
- error "BLACKLIST variable is not set your libretools.conf file"
- exit 1
+function in_array { # usage : in_array( $needle, $haystack )
+
+ [[ $2 ]] || return 1 # Not found
+ local needle=$1; shift
+ local item
+ for item in "$@"; do
+ [[ ${item#@} = $needle ]] && return 0 # Found
+ done
+ return 1 # Not Found
}
-# Download the blacklist.
-msg "Downloading the blacklist of proprietary software packages."
-wget -N -q -O blacklist.txt "${BLACKLIST}" 2>/dev/null || {
- error "Download failed, exiting"
- [ -e $XDG_CONFIG_HOME/libretools/blacklist.txt ] || exit 1
+
+function get_blacklist { # Download the blacklist.
+
+ msg "Downloading the blacklist of proprietary software packages."
+ wget -N -q -O blacklist.txt "${BLACKLIST}" 2>/dev/null || {
+ [ -e $XDG_CONFIG_HOME/libretools/blacklist.txt ] || {
+ error "Download failed, exiting"
+ exit 1
+ }
+ warning "Using local copy of blacklist"
}
-# Get everything before the `:' in the blacklist (that's the names of the
-# packages).
-unfree=($(cut -d: -f1 blacklist.txt))
-freerep=($(cut -d: -f2 blacklist.txt))
-
-popd >/dev/null
-
-source /etc/rc.d/functions # We want the `in_array' function.
-source ./PKGBUILD
-
-# The following piece of code will check whether a package is, or depends on;
-# any non free package(s).
-
-# The `pkgname', `depends', `makedepends' arrays have been sourced from
-# ./PKGBUILD.
-msg "Looking for unfree dependencies"
-for item in ${pkgname[@]} ${depends[@]} ${makedepends[@]} ; do
-# We cycle through all of the programs in the array (if any), and check if
-# they are in the `unfree' array.
- if in_array $item ${unfree[@]} ; then
-# If the package has a replacement of the same name, skip
- if in_array $item ${freerep[@]} ; then
- warning "$item is repackaged with the same name."
- ev=0
- continue
-# if item has a free replacement, use error 16.
- elif in_array $item-libre ${freerep[@]} ; then
- warning "$item -> $item-libre"
- ev=16
- else
- ev=15
- msg2 "found $item"
+function check_deps { # Check wheter a package depends on non-free
+
+ pushd $XDG_CONFIG_HOME/libretools/ >/dev/null
+ local unfree=($(cut -d: -f1 blacklist.txt)) # pkgname:free-replacement:comments
+ local freerep=($(cut -d: -f2 blacklist.txt)) # pkgname:free-replacement:comments
+ popd >/dev/null
+
+ msg "Looking for unfree dependencies"
+ for item in ${pkgname[@]} ${depends[@]} ${makedepends[@]} ; do
+
+ if in_array $item ${unfree[@]} ; then
+
+ if in_array $item ${freerep[@]} ; then
+ warning "$item is repackaged with the same name."
+ continue
+
+ elif in_array $item-libre ${freerep[@]} ; then
+ warning "$item -> $item-libre"
+ continue
+ else
+ ev=15
+ msg2 "found $item"
+ fi
fi
- fi
-done
+ done
+}
+
+source /etc/libretools.conf
+
+if [ -z $XDG_CONFIG_HOME ]; then # Avoid /libretools dir doesn't exist errors
+ error "There's no XDG_CONFIG_HOME var set"; exit 1
+elif [ -e $XDG_CONFIG_HOME/libretools/libretools.conf ]; then
+ source $XDG_CONFIG_HOME/libretools/libretools.conf
+fi
+
+if [ -z "${BLACKLIST}" ]; then
+ error "BLACKLIST variable is not set your libretools.conf file"; exit 1
+fi
+
+if [ -r PKGBUILD ]; then
+ source PKGBUILD
+else
+ error "There is no PKGBUILD in dir"; exit 1
+fi
+
+if [ ! -d "$XDG_CONFIG_HOME/libretools" ]; then
+ mkdir -p $XDG_CONFIG_HOME/libretools
+fi
+
+get_blacklist
+
+check_deps
exit $ev