84 lines
2.6 KiB
Plaintext
84 lines
2.6 KiB
Plaintext
|
#!/bin/sh
|
||
|
#
|
||
|
# Entropy Server QA executable hook.
|
||
|
# This file doesn't strictly need to be a shell script, but just an executable
|
||
|
# file (r-xr-xr-x) and (mandatory) owned by root:root.
|
||
|
# Please rename this file by stripping the .example part
|
||
|
#
|
||
|
# It is used by Entropy Server QA routines to perform package metadata
|
||
|
# validation.
|
||
|
# Metadata is export in environmental variables form, and include:
|
||
|
#
|
||
|
# REPOSITORY_ID = repository identifier
|
||
|
# PKG_ID = package identifier
|
||
|
# PKG_ATOM = package atom
|
||
|
# PKG_NAME = package name
|
||
|
# PKG_VERSION = package version
|
||
|
# PKG_TAG = package version tag
|
||
|
# PKG_DESCRIPTION = package description
|
||
|
# PKG_CATEGORY = package category
|
||
|
# PKG_CHOST = package CHOST
|
||
|
# PKG_CFLAGS = package CFLAGS
|
||
|
# PKG_CXXFLAGS = package CXXFLAGS
|
||
|
# PKG_HOMEPAGE = package homepage
|
||
|
# PKG_LICENSE = package license
|
||
|
# PKG_BRANCH = package license
|
||
|
# PKG_DOWNLOAD = package relative download URL
|
||
|
# PKG_MD5 = package file md5 hash
|
||
|
# PKG_SLOT = package slot
|
||
|
# PKG_ETPAPI = package Entropy API
|
||
|
# PKG_DATE = package creation date (in unix time)
|
||
|
# PKG_SIZE = package size, in bytes
|
||
|
# PKG_REVISION = package entropy revision
|
||
|
# PKG_DEPS = list (\n separated) of package dependencies and conflicts
|
||
|
# PKG_NEEDED_LIBS = list (\n separated) of SONAMES required by package,
|
||
|
# including ELF class, so each item will look like this:
|
||
|
# <soname>|<elfclass>
|
||
|
# PKG_PROVIDED_LIBS = list (\n separated) of SONAMES provided by package,
|
||
|
# note: elf class and path are also provided,
|
||
|
# so each item will look like this:
|
||
|
# <soname>|<path of soname>|<elfclass>
|
||
|
# PKG_CONTENT = list (\n separated) of package files and dirs owned by package
|
||
|
#
|
||
|
# The executable must return 0 for success, 1 for warning, 2 for critical error
|
||
|
|
||
|
EXIT_STATUS=0
|
||
|
|
||
|
function dep_getkey() {
|
||
|
echo -n $(python -c "import sys, entropy.dep; sys.stdout.write(entropy.dep.dep_getkey(\"${1}\"))")
|
||
|
}
|
||
|
|
||
|
function check_unwanted_deps() {
|
||
|
# Check against forbidden dependencies, those we consider meta packages, placeholders
|
||
|
# just to keep Gentoo compatibility, which, if listed as dep in, would cause the
|
||
|
# whole world to be pulled in.
|
||
|
local unwanted_deps="app-admin/packagekit
|
||
|
app-text/poppler
|
||
|
kde-base/kde-l10n
|
||
|
net-dns/avahi
|
||
|
net-p2p/transmission"
|
||
|
|
||
|
for dep in ${PKG_DEPS}; do
|
||
|
# here we have plain deps, not conditional
|
||
|
for unwanted_dep in ${unwanted_deps}; do
|
||
|
dep_key=$(dep_getkey "${dep}")
|
||
|
if [ "${unwanted_dep}" = "${dep_key}" ]; then
|
||
|
echo
|
||
|
echo "ATTENTION ATTENTION ATTENTION"
|
||
|
echo "${PKG_ATOM} contains forbidden dependency against ${dep}"
|
||
|
echo "ATTENTION ATTENTION ATTENTION"
|
||
|
echo
|
||
|
EXIT_STATUS=1
|
||
|
fi
|
||
|
done
|
||
|
done
|
||
|
}
|
||
|
|
||
|
#
|
||
|
# Main execution
|
||
|
#
|
||
|
|
||
|
check_unwanted_deps
|
||
|
|
||
|
exit ${EXIT_STATUS}
|