summaryrefslogtreecommitdiffstats
path: root/plugins/url_check/main
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/url_check/main')
-rwxr-xr-xplugins/url_check/main254
1 files changed, 254 insertions, 0 deletions
diff --git a/plugins/url_check/main b/plugins/url_check/main
new file mode 100755
index 000000000..3029a30ad
--- /dev/null
+++ b/plugins/url_check/main
@@ -0,0 +1,254 @@
+#!/bin/bash
+# ----------------------------------------------------------
+#
+# Script: PTXdist URL Checker
+# Rev: 1
+# Description:
+# Written by: Bjørn Bürger <b.buerger@pengutronix.de>
+# Changed: 2006-09-21 bbu
+# Docs: inline
+# Manpage: none
+#
+# ----------------------------------------------------------
+PREFIX="`basename $0` "
+# ----------------------------------------------------------
+# Short Documentation / Comments
+# ----------------------------------------------------------
+#
+# TODO:
+# build URL_CHECKER as host-tool in ptxdist.
+# Problem -> uses python => big and fat
+# OR find a lightweight alternative.
+#
+# Please note, that wget has problems w/ ftp links.
+#
+#
+
+# ----------------------------------------------------------
+# generic script settings
+# ----------------------------------------------------------
+#
+# The script domains - chose one or more of:
+# - dumb_tool
+# - tool
+# - development
+# - system_management
+#
+# PTX_SCRIPT_DOMAINS="dumb_tool"
+
+PTX_LIB_VERSION="2"
+
+# ----------------------------------------------------------
+# Default Configuration Options
+# ----------------------------------------------------------
+
+MKTEMP="mktemp"
+WHICH="which"
+GREP="grep"
+EGREP="egrep"
+CAT="cat"
+SED="sed"
+MKDIR="mkdir"
+
+LINKCHECKER_BIN="linkchecker"
+
+URL_CHECKER="$LINKCHECKER_BIN --no-warnings"
+# URL_CHECKER="wget --spider"
+
+PTXCONFIG="ptxconfig"
+
+logdir="`dirname $0`/log"
+logfile="$logdir/url_check_log"
+
+# ----------------------------------------------------------
+# Load ptx shell library and generic ptx configuration
+# ----------------------------------------------------------
+
+PTXLIB=`dirname $0`/ptxlib.bash
+
+if [ -e "$PTXLIB" ] ; then
+ . $PTXLIB
+else
+ echo "ERROR: ptxlib not found"
+ exit 1
+fi
+
+# ==========================================================
+# Temporary files
+# ==========================================================
+
+TMPDIR="`$MKTEMP -d /tmp/url_check_plugin.XXXXXXXXXX`" || echo "could not create TMPDIR"
+
+ptx_debug "TMPDIR is $TMPDIR"
+
+# ==========================================================
+# Traps
+# ==========================================================
+
+[ -e "$TMPDIR/on_exit_reverse.sh" ] || echo "echo" > $TMPDIR/on_exit_reverse.sh
+
+if [ "$DEBUG" = "true" ]; then
+ ptx_debug "trap function: deleting temporary files..."
+ trap '[ -e "$TMPDIR/on_exit_reverse.sh" ] && sh $TMPDIR/on_exit_reverse.sh ; rm -rvf /tmp/$(basename $TMPDIR)' EXIT
+else
+ trap '[ -e "$TMPDIR/on_exit_reverse.sh" ] && sh $TMPDIR/on_exit_reverse.sh ; rm -rf /tmp/$(basename $TMPDIR)' EXIT
+fi
+
+# ----------------------------------------------------------
+# Default Dependency check
+# ----------------------------------------------------------
+
+dependency_check_dirs_depends=""
+dependency_check_files_depends="$PTXCONFIG"
+dependency_check_tools_depends="$LINKCHECKER_BIN $MKTEMP"
+
+ptx_dependency_check
+
+# ==========================================================
+# Option Parser
+# ==========================================================
+
+Usage() {
+cat <<-EOF
+
+Usage: `basename "$0"` OPTIONS
+
+ --help, -h this help
+ --check-all, -a check ALL packages
+
+$0 checks the availability of all needed source packages
+for the current project configuration. By default, packages
+will only be checked, if the corresponding switch in
+ptxdistrc is set to "y" (enabled in 'ptxdist menuconfig')
+
+EOF
+}
+
+# Parser
+# ------
+# option no argument
+# option: required argument
+# option:: optional argument
+
+TEMP=`getopt --options h,a \
+ --longoptions="help,check-all" \
+ -n "$0" -- "$@"`
+if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
+eval set -- "$TEMP"
+
+while true ; do
+ case "$1" in
+ -h|--help)
+ [ -z "$action" ]
+ action="help" ;
+ shift
+ ;;
+ -a|--check-all)
+ [ -z "$action" ]
+ action="check_all" ;
+ shift
+ ;;
+ --) shift ; break ;;
+ *) echo "Internal error!" ; exit 1 ;;
+ esac
+done
+
+# ==========================================================
+# Script Variables
+# ==========================================================
+
+# none
+
+# ==========================================================
+# Script Functions
+# ==========================================================
+
+init(){
+ # choose the right ptxdist version:
+ PTXDIST=$(echo `$GREP PTXCONF_CONFIGFILE_VERSION $PTXCONFIG` \; echo "ptxdist-\$PTXCONF_CONFIGFILE_VERSION" | sh)
+ PTXDIST_BIN="`$WHICH $PTXDIST`"
+ ptx_debug "PTXDIST is: $PTXDIST ($PTXDIST_BIN)"
+ if [ "$1" = "all" ]; then
+ # get all package labels
+ # (PACKAGES-y contains all activated packages)
+ # (PACKAGES- contains all deactivated packages)
+ YESPACKAGES=`$PTXDIST print PACKAGES-y | sed -e s/'PACKAGES-y is "'//g -e s/\"//g | tr "a-z-" "A-Z_"`
+ NOPACKAGES=`$PTXDIST print PACKAGES- | sed -e s/'PACKAGES- is "'//g -e s/\"//g | tr "a-z-" "A-Z_"`
+ else
+ # get configured package labels
+ # (PACKAGES-y contains all activated packages)
+ YESPACKAGES=`$PTXDIST print PACKAGES-y | sed -e s/'PACKAGES-y is "'//g -e s/\"//g | tr "a-z-" "A-Z_"`
+ NOPACKAGES=""
+ fi
+ PACKAGES="$YESPACKAGES $NOPACKAGES"
+}
+
+create_url_list(){
+ echo "creating list of download URLS for `echo $PACKAGES | wc -w` packages (This may take a while!)"
+ for target in $PACKAGES; do
+ $PTXDIST print ${target}_URL | $SED -e s/.*is\ \"//g -e s/\"//g >> $TMPDIR/urllist
+ echo -n "."
+ done
+ echo "done"
+}
+
+test_urls(){
+ egrep -v "^#|^$|^[[:space:]]" $TMPDIR/urllist \
+ | while read line; do
+ $URL_CHECKER $line >$TMPDIR/errormsg 2>&1
+ case $? in
+ 0)
+ echo " [ OK ] $line"
+ ;;
+ *)
+ echo ""
+ echo " [ FAIL ] $line"
+ echo ""
+ $CAT $TMPDIR/errormsg | $GREP -A 10 "Start checking at"
+ echo ""
+ ;;
+ esac
+ done
+}
+
+runner(){
+ $MKDIR -p $logdir
+ case $? in
+ 0)
+ test_urls | tee $logfile
+ echo "LOGFILE is --> $logfile"
+ ;;
+ *)
+ test_urls
+ ;;
+ esac
+}
+
+# ==========================================================
+# Script Main
+# ==========================================================
+
+case "$action" in
+ help)
+ Usage
+ ;;
+ check_all)
+ init all
+ create_url_list >&2
+ runner
+ ;;
+ *)
+ init
+ create_url_list >&2
+ runner
+ ;;
+esac
+
+# ==========================================================
+# Cleanup
+# ==========================================================
+
+# unconfigured - done by trap function
+# ----------------------------------------------------------
+# End
+# ----------------------------------------------------------