#!/bin/bash # pkgbuild-check-nonfree # 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 . 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 } 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" } 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 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