| #!/bin/bash | |
| # Script that checks against build infrastructure mistakes in the examples. | |
| # Copyright (C) 2018 Free Software Foundation, Inc. | |
| # | |
| # This program 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. | |
| # | |
| # This program 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 this program. If not, see <https://www.gnu.org/licenses/>. | |
| # func_init sample | |
| # sets environment variables for building and running the given sample. | |
| func_init () | |
| { | |
| case "$1" in | |
| hello-objc-gnustep) . /usr/share/GNUstep/Makefiles/GNUstep.sh ;; | |
| esac | |
| } | |
| # func_autogen sample | |
| # adds generated build infrastructure files to the given sample. | |
| func_autogen () | |
| { | |
| case "$1" in | |
| hello-objc-gnustep) | |
| (func_init "$1"; cd "$1" && ./autogen.sh) | |
| ;; | |
| *) | |
| (cd "$1" && ./autogen.sh) | |
| ;; | |
| esac | |
| } | |
| # func_autoclean sample | |
| # removes generated build infrastructure files from the given sample. | |
| func_autoclean () | |
| { | |
| case "$1" in | |
| hello-objc-gnustep) | |
| (func_init "$1"; cd "$1" && ./autoclean.sh) | |
| ;; | |
| *) | |
| (cd "$1" && ./autoclean.sh) | |
| ;; | |
| esac | |
| } | |
| # func_configure sample [builddir] | |
| # runs configure for the given sample, optionally in a VPATH build. | |
| func_configure () | |
| { | |
| case "$1" in | |
| hello-objc-gnustep) ;; | |
| *) | |
| if test -n "$2"; then | |
| (cd "$1" | |
| mkdir "$2" | |
| (cd "$2" && ../configure) | |
| ) | |
| else | |
| (cd "$1" && ./configure) | |
| fi | |
| ;; | |
| esac | |
| } | |
| # func_distclean sample [builddir] | |
| # undoes the effects of func_configure sample [builddir]. | |
| func_distclean () | |
| { | |
| case "$1" in | |
| hello-objc-gnustep) ;; | |
| *) | |
| if test -n "$2"; then | |
| (cd "$1/$2" && make distclean) | |
| else | |
| (cd "$1" && make distclean) | |
| fi | |
| ;; | |
| esac | |
| } | |
| # func_maintainerclean sample [builddir] | |
| # also removes files that are expensive to rebuild. | |
| func_maintainerclean () | |
| { | |
| case "$1" in | |
| hello-objc-gnustep) | |
| (func_init "$1"; cd "$1" && make distclean) | |
| ;; | |
| *) | |
| if test -n "$2"; then | |
| (cd "$1/$2" && make maintainer-clean) | |
| else | |
| (cd "$1" && make maintainer-clean) | |
| fi | |
| ;; | |
| esac | |
| } | |
| # func_check_autoclean sample | |
| # checks whether the autoclean.sh script is complete. | |
| func_check_autoclean () | |
| { | |
| sample="$1" | |
| rm -rf "$sample.bak" | |
| cp -a "$sample" "$sample.bak" | |
| func_autogen "$sample" | |
| func_autoclean "$sample" | |
| LC_ALL=C diff -r -q "$sample.bak" "$sample" | sed -n -e 's/^Only in //p' | sed -e 's|: |/|' > "$sample.out" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| rm -rf "$sample.bak" | |
| } | |
| func_check_autoclean_all () | |
| { | |
| rm -f hello-*.out | |
| func_check_autoclean hello-c | |
| func_check_autoclean hello-c-gnome | |
| func_check_autoclean hello-c-gnome3 | |
| func_check_autoclean hello-c++ | |
| func_check_autoclean hello-c++-qt | |
| func_check_autoclean hello-c++-kde | |
| func_check_autoclean hello-c++-gnome | |
| func_check_autoclean hello-c++-wxwidgets | |
| func_check_autoclean hello-objc | |
| func_check_autoclean hello-objc-gnustep | |
| func_check_autoclean hello-objc-gnome | |
| func_check_autoclean hello-sh | |
| func_check_autoclean hello-python | |
| func_check_autoclean hello-clisp | |
| func_check_autoclean hello-librep | |
| func_check_autoclean hello-guile | |
| func_check_autoclean hello-smalltalk | |
| func_check_autoclean hello-java | |
| func_check_autoclean hello-java-awt | |
| func_check_autoclean hello-java-swing | |
| func_check_autoclean hello-java-qtjambi | |
| func_check_autoclean hello-csharp | |
| func_check_autoclean hello-csharp-forms | |
| func_check_autoclean hello-gawk | |
| func_check_autoclean hello-pascal | |
| func_check_autoclean hello-ycp | |
| func_check_autoclean hello-tcl | |
| func_check_autoclean hello-tcl-tk | |
| func_check_autoclean hello-perl | |
| func_check_autoclean hello-php | |
| if (shopt -s failglob; echo hello-*.out) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_autoclean error: Leftover files:" | |
| cat hello-*.out | |
| rm -f hello-*.out | |
| exit 1 | |
| fi | |
| } | |
| # Known configure failures: | |
| # hello-c-gnome: error: Could not find the gnomeConf.sh file that is generated by gnome-libs install | |
| # hello-c-gnome3: error: can't find gtk+-3.0 >= 3.10 | |
| # hello-c++-qt: error: cannot find correct Qt headers! | |
| # hello-c++-kde: configure: error: Qt (>= Qt 3.1.0) (headers and libraries) not found. Please check your installation! | |
| # hello-c++-gnome: error: Could not find the gnomeConf.sh file that is generated by gnome-libs install | |
| # hello-objc-gnome: error: Could not find the gnomeConf.sh file that is generated by gnome-libs install | |
| # hello-ycp: *** Essential program y2base not found | |
| # func_check_distclean sample | |
| # checks 'make distclean' directly after 'configure'. | |
| func_check_distclean () | |
| { | |
| sample="$1" | |
| rm -rf "$sample.bak" | |
| func_autogen "$sample" | |
| cp -a "$sample" "$sample.bak" | |
| if func_configure "$sample" > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| func_distclean "$sample" | |
| LC_ALL=C diff -r -q "$sample.bak" "$sample" | sed -n -e 's/^Only in //p' | sed -e 's|: |/|' > "$sample.out" | |
| fi | |
| func_autoclean "$sample" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| rm -rf "$sample.bak" | |
| } | |
| func_check_distclean_all () | |
| { | |
| rm -f hello-*.log hello-*.out | |
| func_check_distclean hello-c | |
| #func_check_distclean hello-c-gnome | |
| #func_check_distclean hello-c-gnome3 | |
| func_check_distclean hello-c++ | |
| #func_check_distclean hello-c++-qt | |
| #func_check_distclean hello-c++-kde | |
| #func_check_distclean hello-c++-gnome | |
| func_check_distclean hello-c++-wxwidgets | |
| func_check_distclean hello-objc | |
| func_check_distclean hello-objc-gnustep | |
| #func_check_distclean hello-objc-gnome | |
| func_check_distclean hello-sh | |
| func_check_distclean hello-python | |
| func_check_distclean hello-clisp | |
| func_check_distclean hello-librep | |
| func_check_distclean hello-guile | |
| func_check_distclean hello-smalltalk | |
| func_check_distclean hello-java | |
| func_check_distclean hello-java-awt | |
| func_check_distclean hello-java-swing | |
| func_check_distclean hello-java-qtjambi | |
| func_check_distclean hello-csharp | |
| func_check_distclean hello-csharp-forms | |
| func_check_distclean hello-gawk | |
| func_check_distclean hello-pascal | |
| #func_check_distclean hello-ycp | |
| func_check_distclean hello-tcl | |
| func_check_distclean hello-tcl-tk | |
| func_check_distclean hello-perl | |
| func_check_distclean hello-php | |
| if (shopt -s failglob; echo hello-*.log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_distclean error: 'configure' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| if (shopt -s failglob; echo hello-*.out) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_distclean error: incomplete 'make distclean'" | |
| echo hello-*.out | |
| exit 1 | |
| fi | |
| } | |
| # Known make failures: | |
| # hello-java-qtjambi: error: package com.trolltech.qt.core does not exist | |
| # func_check_maintainerclean sample | |
| # checks 'make distclean' after 'configure; make'. | |
| func_check_maintainerclean () | |
| { | |
| sample="$1" | |
| rm -rf "$sample.bak" | |
| func_autogen "$sample" | |
| cp -a "$sample" "$sample.bak" | |
| if func_configure "$sample"; then | |
| if (func_init "$sample"; cd "$sample" && make) > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| fi | |
| fi | |
| func_maintainerclean "$sample" | |
| # TODO: Remove .pot files workaround after next release. | |
| # TODO: Remove .po~ files workaround. | |
| LC_ALL=C diff -r -q "$sample.bak" "$sample" | sed -n -e 's/^Only in //p' | sed -e 's|: |/|' | grep "^${sample}/" | { if test -f "$sample"/po/Makevars || test "$sample" = hello-objc-gnustep; then grep -v '\.pot$'; else cat; fi; } | grep -v '\.po~$' > "$sample.out" | |
| func_autoclean "$sample" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| rm -rf "$sample.bak" | |
| } | |
| func_check_maintainerclean_all () | |
| { | |
| rm -f hello-*.log hello-*.out | |
| func_check_maintainerclean hello-c | |
| #func_check_maintainerclean hello-c-gnome | |
| #func_check_maintainerclean hello-c-gnome3 | |
| func_check_maintainerclean hello-c++ | |
| #func_check_maintainerclean hello-c++-qt | |
| #func_check_maintainerclean hello-c++-kde | |
| #func_check_maintainerclean hello-c++-gnome | |
| func_check_maintainerclean hello-c++-wxwidgets | |
| func_check_maintainerclean hello-objc | |
| func_check_maintainerclean hello-objc-gnustep | |
| #func_check_maintainerclean hello-objc-gnome | |
| func_check_maintainerclean hello-sh | |
| func_check_maintainerclean hello-python | |
| func_check_maintainerclean hello-clisp | |
| func_check_maintainerclean hello-librep | |
| func_check_maintainerclean hello-guile | |
| func_check_maintainerclean hello-smalltalk | |
| func_check_maintainerclean hello-java | |
| func_check_maintainerclean hello-java-awt | |
| func_check_maintainerclean hello-java-swing | |
| #func_check_maintainerclean hello-java-qtjambi | |
| func_check_maintainerclean hello-csharp | |
| func_check_maintainerclean hello-csharp-forms | |
| func_check_maintainerclean hello-gawk | |
| func_check_maintainerclean hello-pascal | |
| #func_check_maintainerclean hello-ycp | |
| func_check_maintainerclean hello-tcl | |
| func_check_maintainerclean hello-tcl-tk | |
| func_check_maintainerclean hello-perl | |
| func_check_maintainerclean hello-php | |
| if (shopt -s failglob; echo hello-*log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_maintainerclean error: 'make' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| if (shopt -s failglob; echo hello-*.out) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_maintainerclean error: incomplete 'make maintainer-clean'" | |
| echo hello-*.out | |
| exit 1 | |
| fi | |
| } | |
| # func_check_maintainerclean_vpath sample | |
| # checks 'make distclean' after 'configure; make' with a VPATH build. | |
| func_check_maintainerclean_vpath () | |
| { | |
| sample="$1" | |
| case "$sample" in | |
| hello-objc-gnustep) ;; | |
| *) | |
| rm -rf "$sample.bak" | |
| func_autogen "$sample" | |
| cp -a "$sample" "$sample.bak" | |
| if func_configure "$sample" build; then | |
| if (func_init "$sample"; cd "$sample"/build && make) > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| fi | |
| fi | |
| func_maintainerclean "$sample" build | |
| # TODO: Remove .pot files workaround after next release. | |
| # TODO: Remove .po~ files workaround. | |
| find "$sample"/build -type f | LC_ALL=C sort | { if test -f "$sample"/po/Makevars; then grep -v '\.pot$'; else cat; fi; } | grep -v '\.po~$' > "$sample.out" | |
| rm -rf "$sample"/build | |
| func_autoclean "$sample" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| rm -rf "$sample.bak" | |
| ;; | |
| esac | |
| } | |
| func_check_maintainerclean_vpath_all () | |
| { | |
| rm -f hello-*.log hello-*.out | |
| func_check_maintainerclean_vpath hello-c | |
| #func_check_maintainerclean_vpath hello-c-gnome | |
| #func_check_maintainerclean_vpath hello-c-gnome3 | |
| func_check_maintainerclean_vpath hello-c++ | |
| #func_check_maintainerclean_vpath hello-c++-qt | |
| #func_check_maintainerclean_vpath hello-c++-kde | |
| #func_check_maintainerclean_vpath hello-c++-gnome | |
| func_check_maintainerclean_vpath hello-c++-wxwidgets | |
| func_check_maintainerclean_vpath hello-objc | |
| func_check_maintainerclean_vpath hello-objc-gnustep | |
| #func_check_maintainerclean_vpath hello-objc-gnome | |
| func_check_maintainerclean_vpath hello-sh | |
| func_check_maintainerclean_vpath hello-python | |
| func_check_maintainerclean_vpath hello-clisp | |
| func_check_maintainerclean_vpath hello-librep | |
| func_check_maintainerclean_vpath hello-guile | |
| func_check_maintainerclean_vpath hello-smalltalk | |
| func_check_maintainerclean_vpath hello-java | |
| func_check_maintainerclean_vpath hello-java-awt | |
| func_check_maintainerclean_vpath hello-java-swing | |
| #func_check_maintainerclean_vpath hello-java-qtjambi | |
| func_check_maintainerclean_vpath hello-csharp | |
| func_check_maintainerclean_vpath hello-csharp-forms | |
| func_check_maintainerclean_vpath hello-gawk | |
| func_check_maintainerclean_vpath hello-pascal | |
| #func_check_maintainerclean_vpath hello-ycp | |
| func_check_maintainerclean_vpath hello-tcl | |
| func_check_maintainerclean_vpath hello-tcl-tk | |
| func_check_maintainerclean_vpath hello-perl | |
| func_check_maintainerclean_vpath hello-php | |
| if (shopt -s failglob; echo hello-*log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_maintainerclean_vpath error: 'make' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| if (shopt -s failglob; echo hello-*.out) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_maintainerclean_vpath error: incomplete 'make maintainer-clean'" | |
| echo hello-*.out | |
| exit 1 | |
| fi | |
| } | |
| # func_check_dist sample | |
| # checks 'make dist' after 'configure; make'. | |
| func_check_dist () | |
| { | |
| sample="$1" | |
| case "$sample" in | |
| hello-objc-gnustep) ;; | |
| *) | |
| func_autogen "$sample" | |
| if func_configure "$sample"; then | |
| if (func_init "$sample"; cd "$sample" && make); then | |
| if (func_init "$sample"; cd "$sample" && make dist) > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| (func_init "$sample"; cd "$sample" && make distclean) | |
| rm -f `find "$sample" -name '*~'` `find "$sample" -name '*.orig'` | |
| rm -rf "$sample/autom4te.cache" | |
| if test -f "$sample/$sample-0.tar.gz"; then | |
| (cd "$sample" && tar xfz "$sample-0.tar.gz") | |
| LC_ALL=C diff -r -q "$sample" "$sample/$sample-0" | grep -v "^Only in $sample: $sample-0$" | grep -v "^Only in $sample: $sample-0.tar.gz$" | grep -v "^Only in $sample: BUGS$" > "$sample.out" | |
| else | |
| echo "$sample-0.tar.gz was not created" > "$sample.out" | |
| fi | |
| fi | |
| rm -rf "$sample/$sample-0" | |
| rm -f "$sample/$sample-0.tar.gz" | |
| fi | |
| fi | |
| func_configure "$sample" | |
| func_maintainerclean "$sample" | |
| func_autoclean "$sample" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| ;; | |
| esac | |
| } | |
| func_check_dist_all () | |
| { | |
| rm -f hello-*.log hello-*.out | |
| func_check_dist hello-c | |
| #func_check_dist hello-c-gnome | |
| #func_check_dist hello-c-gnome3 | |
| func_check_dist hello-c++ | |
| #func_check_dist hello-c++-qt | |
| #func_check_dist hello-c++-kde | |
| #func_check_dist hello-c++-gnome | |
| func_check_dist hello-c++-wxwidgets | |
| func_check_dist hello-objc | |
| func_check_dist hello-objc-gnustep | |
| #func_check_dist hello-objc-gnome | |
| func_check_dist hello-sh | |
| func_check_dist hello-python | |
| func_check_dist hello-clisp | |
| func_check_dist hello-librep | |
| func_check_dist hello-guile | |
| func_check_dist hello-smalltalk | |
| func_check_dist hello-java | |
| func_check_dist hello-java-awt | |
| func_check_dist hello-java-swing | |
| #func_check_dist hello-java-qtjambi | |
| func_check_dist hello-csharp | |
| func_check_dist hello-csharp-forms | |
| func_check_dist hello-gawk | |
| func_check_dist hello-pascal | |
| #func_check_dist hello-ycp | |
| func_check_dist hello-tcl | |
| func_check_dist hello-tcl-tk | |
| func_check_dist hello-perl | |
| func_check_dist hello-php | |
| if (shopt -s failglob; echo hello-*log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_dist error: 'make dist' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| if (shopt -s failglob; echo hello-*.out) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_dist error: tarball created by 'make dist' does not contain the expected files" | |
| echo hello-*.out | |
| exit 1 | |
| fi | |
| } | |
| # func_check_dist_vpath sample | |
| # checks 'make dist' after 'configure; make' with a VPATH build | |
| func_check_dist_vpath () | |
| { | |
| sample="$1" | |
| case "$sample" in | |
| hello-objc-gnustep) ;; | |
| *) | |
| func_autogen "$sample" | |
| if func_configure "$sample" build; then | |
| if (func_init "$sample"; cd "$sample"/build && make); then | |
| if (func_init "$sample"; cd "$sample"/build && make dist) > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| (func_init "$sample"; cd "$sample"/build && make distclean) | |
| rm -f `find "$sample" -name '*~'` `find "$sample" -name '*.orig'` | |
| rm -rf "$sample/autom4te.cache" | |
| if test -f "$sample/build/$sample-0.tar.gz"; then | |
| (cd "$sample"/build && tar xfz "$sample-0.tar.gz") | |
| # TODO: Remove stamp-po workaround after next release. | |
| LC_ALL=C diff -r -q "$sample" "$sample/build/$sample-0" | grep -v "^Only in $sample: build$" | grep -v "^Only in $sample: BUGS$" | { if test -f "$sample"/po/Makevars; then grep -v "^Only in $sample/build/$sample-0/po: stamp-po$"; else cat; fi; } > "$sample.out" | |
| else | |
| echo "$sample-0.tar.gz was not created" > "$sample.out" | |
| fi | |
| fi | |
| rm -rf "$sample/build/$sample-0" | |
| rm -f "$sample/build/$sample-0.tar.gz" | |
| fi | |
| fi | |
| rm -rf "$sample"/build | |
| func_autoclean "$sample" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| ;; | |
| esac | |
| } | |
| func_check_dist_vpath_all () | |
| { | |
| rm -f hello-*.log hello-*.out | |
| func_check_dist_vpath hello-c | |
| #func_check_dist_vpath hello-c-gnome | |
| #func_check_dist_vpath hello-c-gnome3 | |
| func_check_dist_vpath hello-c++ | |
| #func_check_dist_vpath hello-c++-qt | |
| #func_check_dist_vpath hello-c++-kde | |
| #func_check_dist_vpath hello-c++-gnome | |
| func_check_dist_vpath hello-c++-wxwidgets | |
| func_check_dist_vpath hello-objc | |
| func_check_dist_vpath hello-objc-gnustep | |
| #func_check_dist_vpath hello-objc-gnome | |
| func_check_dist_vpath hello-sh | |
| func_check_dist_vpath hello-python | |
| func_check_dist_vpath hello-clisp | |
| func_check_dist_vpath hello-librep | |
| func_check_dist_vpath hello-guile | |
| func_check_dist_vpath hello-smalltalk | |
| func_check_dist_vpath hello-java | |
| func_check_dist_vpath hello-java-awt | |
| func_check_dist_vpath hello-java-swing | |
| #func_check_dist_vpath hello-java-qtjambi | |
| func_check_dist_vpath hello-csharp | |
| func_check_dist_vpath hello-csharp-forms | |
| func_check_dist_vpath hello-gawk | |
| func_check_dist_vpath hello-pascal | |
| #func_check_dist_vpath hello-ycp | |
| func_check_dist_vpath hello-tcl | |
| func_check_dist_vpath hello-tcl-tk | |
| func_check_dist_vpath hello-perl | |
| func_check_dist_vpath hello-php | |
| if (shopt -s failglob; echo hello-*log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_dist_vpath error: 'make dist' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| if (shopt -s failglob; echo hello-*.out) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_dist_vpath error: tarball created by 'make dist' does not contain the expected files" | |
| echo hello-*.out | |
| exit 1 | |
| fi | |
| } | |
| # Base installation directory for all samples. | |
| instdir=/tmp/gtexinst | |
| # func_check_install sample | |
| # checks 'make install' after 'configure; make'. | |
| # You need to check afterwards whether the installed binaries work. | |
| func_check_install () | |
| { | |
| sample="$1" | |
| case "$sample" in | |
| hello-objc-gnustep) | |
| # In this sample, you have to check the uninstalled binaries (see the INSTALL file). | |
| ;; | |
| *) | |
| func_autogen "$sample" | |
| if (cd "$sample" && ./configure --prefix="$instdir/$sample"); then | |
| if (func_init "$sample"; cd "$sample" && make); then | |
| if (func_init "$sample"; cd "$sample" && make install) > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| fi | |
| fi | |
| fi | |
| func_maintainerclean "$sample" | |
| func_autoclean "$sample" | |
| ;; | |
| esac | |
| } | |
| func_check_install_all () | |
| { | |
| rm -f hello-*.log | |
| rm -rf "$instdir/hello-*" | |
| func_check_install hello-c | |
| #func_check_install hello-c-gnome | |
| #func_check_install hello-c-gnome3 | |
| func_check_install hello-c++ | |
| #func_check_install hello-c++-qt | |
| #func_check_install hello-c++-kde | |
| #func_check_install hello-c++-gnome | |
| func_check_install hello-c++-wxwidgets | |
| func_check_install hello-objc | |
| func_check_install hello-objc-gnustep | |
| #func_check_install hello-objc-gnome | |
| func_check_install hello-sh | |
| func_check_install hello-python | |
| func_check_install hello-clisp | |
| func_check_install hello-librep | |
| func_check_install hello-guile | |
| func_check_install hello-smalltalk | |
| func_check_install hello-java | |
| func_check_install hello-java-awt | |
| func_check_install hello-java-swing | |
| #func_check_install hello-java-qtjambi | |
| func_check_install hello-csharp | |
| func_check_install hello-csharp-forms | |
| func_check_install hello-gawk | |
| func_check_install hello-pascal | |
| #func_check_install hello-ycp | |
| func_check_install hello-tcl | |
| func_check_install hello-tcl-tk | |
| func_check_install hello-perl | |
| func_check_install hello-php | |
| if (shopt -s failglob; echo hello-*log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_install error: 'make install' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| } | |
| # func_check_uninstall sample | |
| # checks 'make uninstall' after 'configure; make; make install'. | |
| func_check_uninstall () | |
| { | |
| sample="$1" | |
| case "$sample" in | |
| hello-objc-gnustep) | |
| # In this sample, you have to check the uninstalled binaries (see the INSTALL file). | |
| ;; | |
| *) | |
| func_autogen "$sample" | |
| if (cd "$sample" && ./configure --prefix="$instdir/$sample"); then | |
| if (func_init "$sample"; cd "$sample" && make); then | |
| if (func_init "$sample"; cd "$sample" && make install); then | |
| if (func_init "$sample"; cd "$sample" && make uninstall) > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| (cd "$instdir" && find "$sample" -type f | LC_ALL=C sort) > "$sample.out" | |
| fi | |
| fi | |
| fi | |
| fi | |
| func_maintainerclean "$sample" | |
| func_autoclean "$sample" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| ;; | |
| esac | |
| } | |
| func_check_uninstall_all () | |
| { | |
| rm -f hello-*.log hello-*.out | |
| rm -rf "$instdir/hello-*" | |
| func_check_uninstall hello-c | |
| #func_check_uninstall hello-c-gnome | |
| #func_check_uninstall hello-c-gnome3 | |
| func_check_uninstall hello-c++ | |
| #func_check_uninstall hello-c++-qt | |
| #func_check_uninstall hello-c++-kde | |
| #func_check_uninstall hello-c++-gnome | |
| func_check_uninstall hello-c++-wxwidgets | |
| func_check_uninstall hello-objc | |
| func_check_uninstall hello-objc-gnustep | |
| #func_check_uninstall hello-objc-gnome | |
| func_check_uninstall hello-sh | |
| func_check_uninstall hello-python | |
| func_check_uninstall hello-clisp | |
| func_check_uninstall hello-librep | |
| func_check_uninstall hello-guile | |
| func_check_uninstall hello-smalltalk | |
| func_check_uninstall hello-java | |
| func_check_uninstall hello-java-awt | |
| func_check_uninstall hello-java-swing | |
| #func_check_uninstall hello-java-qtjambi | |
| func_check_uninstall hello-csharp | |
| func_check_uninstall hello-csharp-forms | |
| func_check_uninstall hello-gawk | |
| func_check_uninstall hello-pascal | |
| #func_check_uninstall hello-ycp | |
| func_check_uninstall hello-tcl | |
| func_check_uninstall hello-tcl-tk | |
| func_check_uninstall hello-perl | |
| func_check_uninstall hello-php | |
| if (shopt -s failglob; echo hello-*log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_uninstall error: 'make uninstall' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| if (shopt -s failglob; echo hello-*.out) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_uninstall error: left-over files" | |
| echo hello-*.out | |
| exit 1 | |
| fi | |
| } | |
| # func_check_distcheck sample | |
| # checks 'make distcheck' after 'configure; make'. | |
| func_check_distcheck () | |
| { | |
| sample="$1" | |
| case "$sample" in | |
| hello-objc-gnustep) ;; | |
| *) | |
| func_autogen "$sample" | |
| if func_configure "$sample"; then | |
| if (func_init "$sample"; cd "$sample" && make); then | |
| if (func_init "$sample"; cd "$sample" && make distcheck) > "$sample.log" 2>&1; then | |
| rm -f "$sample.log" | |
| fi | |
| if test -d "$sample/$sample-0"; then chmod -R u+w "$sample/$sample-0"; fi | |
| rm -rf "$sample/$sample-0" | |
| rm -f "$sample/$sample-0.tar.gz" | |
| fi | |
| fi | |
| func_maintainerclean "$sample" | |
| func_autoclean "$sample" | |
| if ! test -s "$sample.out"; then | |
| rm -f "$sample.out" | |
| fi | |
| ;; | |
| esac | |
| } | |
| func_check_distcheck_all () | |
| { | |
| rm -f hello-*.log | |
| func_check_distcheck hello-c | |
| #func_check_distcheck hello-c-gnome | |
| #func_check_distcheck hello-c-gnome3 | |
| func_check_distcheck hello-c++ | |
| #func_check_distcheck hello-c++-qt | |
| #func_check_distcheck hello-c++-kde | |
| #func_check_distcheck hello-c++-gnome | |
| func_check_distcheck hello-c++-wxwidgets | |
| func_check_distcheck hello-objc | |
| func_check_distcheck hello-objc-gnustep | |
| #func_check_distcheck hello-objc-gnome | |
| func_check_distcheck hello-sh | |
| func_check_distcheck hello-python | |
| func_check_distcheck hello-clisp | |
| func_check_distcheck hello-librep | |
| func_check_distcheck hello-guile | |
| func_check_distcheck hello-smalltalk | |
| func_check_distcheck hello-java | |
| func_check_distcheck hello-java-awt | |
| func_check_distcheck hello-java-swing | |
| #func_check_distcheck hello-java-qtjambi | |
| func_check_distcheck hello-csharp | |
| func_check_distcheck hello-csharp-forms | |
| func_check_distcheck hello-gawk | |
| func_check_distcheck hello-pascal | |
| #func_check_distcheck hello-ycp | |
| func_check_distcheck hello-tcl | |
| func_check_distcheck hello-tcl-tk | |
| func_check_distcheck hello-perl | |
| func_check_distcheck hello-php | |
| if (shopt -s failglob; echo hello-*log) >/dev/null 2>/dev/null; then | |
| echo "*** func_check_distcheck error: 'make distcheck' failures" | |
| echo hello-*.log | |
| exit 1 | |
| fi | |
| } | |
| # If you want to extend this script: | |
| # A dummy check function. | |
| func_check () | |
| { | |
| : | |
| } | |
| # Complete list of samples. | |
| func_check_all () | |
| { | |
| func_check hello-c | |
| func_check hello-c-gnome | |
| func_check hello-c-gnome3 | |
| func_check hello-c++ | |
| func_check hello-c++-qt | |
| func_check hello-c++-kde | |
| func_check hello-c++-gnome | |
| func_check hello-c++-wxwidgets | |
| func_check hello-objc | |
| func_check hello-objc-gnustep | |
| func_check hello-objc-gnome | |
| func_check hello-sh | |
| func_check hello-python | |
| func_check hello-clisp | |
| func_check hello-librep | |
| func_check hello-guile | |
| func_check hello-smalltalk | |
| func_check hello-java | |
| func_check hello-java-awt | |
| func_check hello-java-swing | |
| func_check hello-java-qtjambi | |
| func_check hello-csharp | |
| func_check hello-csharp-forms | |
| func_check hello-gawk | |
| func_check hello-pascal | |
| func_check hello-ycp | |
| func_check hello-tcl | |
| func_check hello-tcl-tk | |
| func_check hello-perl | |
| func_check hello-php | |
| } | |
| # Top-level code. | |
| func_check_autoclean_all | |
| func_check_distclean_all | |
| func_check_maintainerclean_all | |
| func_check_maintainerclean_vpath_all | |
| func_check_dist_all | |
| func_check_dist_vpath_all | |
| func_check_install_all | |
| func_check_uninstall_all | |
| func_check_distcheck_all |