Page MenuHomeFreeBSD

D6531.id16799.diff
No OneTemporary

D6531.id16799.diff

Index: Mk/Scripts/qa.sh
===================================================================
--- Mk/Scripts/qa.sh
+++ Mk/Scripts/qa.sh
@@ -313,7 +313,154 @@
return 0
}
-checks="shebang symlinks paths stripped desktopfileutils sharedmimeinfo suidfiles libtool libperl prefixvar baselibs terminfo"
+listcontains() {
+ local str lst elt
+ str=$1
+ lst=$2
+
+ for elt in ${lst} ; do
+ if [ ${elt} = ${str} ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+proxydeps_suggest_uses() {
+ local pkg=$1
+ local lib_file=$2
+
+ # miscellaneous USE clauses
+ if [ ${pkg} = 'devel/gettext-runtime' ]; then
+ warn "you need USES+=gettext"
+ elif [ ${pkg} = 'devel/glib20' ]; then
+ warn "you need USE_GNOME+=glib20"
+ elif [ ${pkg} = 'graphics/gdk-pixbuf2' ]; then
+ warn "you need USE_GNOME+=gdkpixbuf2"
+ elif [ ${pkg} = 'x11-toolkits/gtk20' ]; then
+ warn "you need USE_GNOME+=gtk20"
+ elif [ ${pkg} = 'x11-toolkits/gtk30' ]; then
+ warn "you need USE_GNOME+=gtk30"
+ elif [ ${pkg} = 'graphics/cairo' ]; then
+ warn "you need USE_GNOME+=cairo"
+ elif [ ${pkg} = 'databases/sqlite3' ]; then
+ warn "you need USES+=sqlite"
+ elif [ ${pkg} = 'databases/sqlite2' ]; then
+ warn "you need USES+=sqlite:2"
+ # sdl-related
+ elif [ ${pkg} = 'devel/sdl12' ]; then
+ warn "you need USE_SDL+=sdl"
+ elif echo ${pkg} | grep -E '/sdl_(console|gfx|image|mixer|mm|net|pango|sound|ttf)$' > /dev/null; then
+ warn "you need USE_SDL+=$(echo ${pkg} | sed -E 's|.*/sdl_||')"
+ elif [ ${pkg} = 'devel/sdl20' ]; then
+ warn "you need USE_SDL+=sdl2"
+ elif echo ${pkg} | grep -E '/sdl2_(gfx|image|mixer|net|ttf)$' > /dev/null; then
+ warn "you need USE_SDL+=$(echo ${pkg} | sed -E 's|.*/sdl2_||')2"
+ # gl-related
+ elif [ ${pkg} = 'graphics/libGL' ]; then
+ warn "you need USE_GL+=gl"
+ elif [ ${pkg} = 'graphics/gbm' ]; then
+ warn "you need USE_GL+=gbm"
+ elif [ ${pkg} = 'graphics/libglesv2' ]; then
+ warn "you need USE_GL+=glesv2"
+ elif [ ${pkg} = 'graphics/libEGL' ]; then
+ warn "you need USE_GL+=egl"
+ elif [ ${pkg} = 'graphics/glew' ]; then
+ warn "you need USE_GL+=glew"
+ elif [ ${pkg} = 'graphics/libGLU' ]; then
+ warn "you need USE_GL+=glu"
+ elif [ ${pkg} = 'graphics/libGLw' ]; then
+ warn "you need USE_GL+=glw"
+ elif [ ${pkg} = 'graphics/freeglut' ]; then
+ warn "you need USE_GL+=glut"
+ # Xorg-libraries: this should be by XORG_MODULES @ bsd.xorg.mk
+ elif echo ${pkg} | grep -E '/lib(X11|Xau|Xdmcp|Xext|SM|ICE|Xfixes|Xft|Xdamage|Xcomposite|Xcursor|Xinerama|Xmu|Xmuu|Xpm|Xt|Xtst|Xi|Xrandr|Xrender|Xres|XScrnSaver|Xv|Xxf86vm|Xxf86dga|Xxf86misc|xcb)$' > /dev/null; then
+ warn "you need USE_XORG+=$(echo ${pkg} | sed -E 's|.*/lib//' | tr '[:upper:]' '[:lower:]')"
+ elif [ ${pkg} = 'x11/pixman' ]; then
+ warn "you need USE_XORG+=pixman"
+ # Qt4
+ elif expr ${pkg} : '.*/qt4-.*' > /dev/null; then
+ warn "you need USE_QT4+=$(echo ${pkg} | sed -E 's|.*/qt4-||')"
+ # Qt5
+ elif expr ${pkg} : '.*/qt5-.*' > /dev/null; then
+ warn "you need USE_QT5+=$(echo ${pkg} | sed -E 's|.*/qt5-||')"
+ # MySQL
+ elif expr ${lib_file} : "${LOCALBASE}/lib/mysql/[^/]*$" > /dev/null; then
+ warn "you need USES+=mysql"
+ # default
+ elif expr ${lib_file} : "${LOCALBASE}/lib/[^/]*$" > /dev/null; then
+ lib_file=${lib_file#${LOCALBASE}/lib/}
+ lib_file=${lib_file%.so*}.so
+ warn "you need LIB_DEPENDS+=${lib_file}:${pkg}"
+ fi
+}
+
+subst_dep_file() {
+ local dep_file=$1
+ if expr ${dep_file} : "${LOCALBASE}/lib/libGL.so.[0-9]$" > /dev/null; then
+ if [ -f ${LOCALBASE}/lib/.mesa/libGL.so ]; then
+ echo ${LOCALBASE}/lib/.mesa/libGL.so
+ return
+ fi
+ elif expr ${dep_file} : "${LOCALBASE}/lib/libEGL.so.[0-9]$" > /dev/null; then
+ if [ -f ${LOCALBASE}/lib/.mesa/libEGL.so ]; then
+ echo ${LOCALBASE}/lib/.mesa/libEGL.so
+ return
+ fi
+ fi
+ echo ${dep_file}
+}
+
+proxydeps() {
+ local deplist="${LIB_RUN_DEPENDS}"
+
+ local file dep_file dep_file_pkg already rc
+
+ rc=0
+
+ # Check all dynamicaly linked ELF files
+ # Some .so are not executable, but we want to check them too.
+ while read file; do
+ # No results presents a blank line from heredoc.
+ [ -z "${file}" ] && continue
+ while read dep_file; do
+ # No results presents a blank line from heredoc.
+ [ -z "${dep_file}" ] && continue
+ dep_file=$(subst_dep_file ${dep_file})
+ if listcontains ${dep_file} "${already}"; then
+ continue
+ fi
+ if $(pkg which -q ${dep_file} > /dev/null 2>&1); then
+ dep_file_pkg=$(pkg which -qo ${dep_file})
+ if ! listcontains ${dep_file_pkg} "${deplist} ${PKGORIGIN}"; then
+ err "${file} is linked to ${dep_file} from ${dep_file_pkg} but it is not declared as a dependency"
+ proxydeps_suggest_uses ${dep_file_pkg} ${dep_file}
+ rc=1
+ fi
+ else
+ err "${file} is linked to ${dep_file} that does not belong to any package"
+ rc=1
+ fi
+ already="${already} ${dep_file}"
+ done <<-EOT
+ $(LD_LIBRARY_PATH=${LOCALBASE}/lib ldd -a "${STAGEDIR}${file}" | \
+ awk '\
+ BEGIN {section=0}\
+ /^\// {section++}\
+ !/^\// && section<=1 && ($3 ~ "^/usr/local" || $3 ~ "^/usr/ppp") {print $3}')
+ EOT
+ done <<-EOT
+ $(cd ${STAGEDIR} && find -s . -type f \( -perm +111 -o -name '*.so*' \) | \
+ file -F $'\1' -f - | \
+ grep -a 'ELF.*dynamically linked' | \
+ cut -f 1 -d $'\1'| \
+ sed -e 's/^\.//')
+ EOT
+
+ return ${rc}
+}
+
+checks="shebang symlinks paths stripped desktopfileutils sharedmimeinfo suidfiles libtool libperl prefixvar baselibs terminfo proxydeps"
ret=0
cd ${STAGEDIR}
Index: Mk/bsd.port.mk
===================================================================
--- Mk/bsd.port.mk
+++ Mk/bsd.port.mk
@@ -1521,7 +1521,9 @@
"STRIP=${STRIP}" \
TMPPLIST=${TMPPLIST} \
LDCONFIG_DIR="${LDCONFIG_DIR}" \
- PKGBASE=${PKGBASE}
+ PKGBASE=${PKGBASE} \
+ PKGORIGIN=${PKGORIGIN} \
+ LIB_RUN_DEPENDS='${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,}'
.if !empty(USES:Mdesktop-file-utils)
QA_ENV+= USESDESKTOPFILEUTILS=yes
.endif

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 11, 8:48 AM (17 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23570429
Default Alt Text
D6531.id16799.diff (5 KB)

Event Timeline