#!/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: # | # 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: # || # 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}