diff options
-rwxr-xr-x | testsetup.sh | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/testsetup.sh b/testsetup.sh new file mode 100755 index 0000000..3c9ad59 --- /dev/null +++ b/testsetup.sh @@ -0,0 +1,169 @@ +#! /bin/sh +# +# opkhelper +# testsetup +# Generates configuration and data files to test opkhelper. +# +# Copyright (C) 2012 Patrick "P. J." McDermott +# +# 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 2 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 <http://www.gnu.org/licenses/>. + +prefix='' +datadir='' +sysconfdir='' + +long_opts_with_args=' +prefix +datadir +sysconfdir +' + +main() +{ + parse_options "${@}" + shift ${optind} + + [ -z "${prefix}" ] && prefix='/usr/local' + [ -z "${datadir}" ] && datadir="${prefix}/share" + + if [ ${#} -ne 0 ]; then + print_usage + exit 1 + fi + + printf 'Generating build system architecture data...\n' + + mkdir -p "${datadir}/opkhelper/archtab" || \ + error 'Cannot make architecture table directory' + + # core-linux-eglibc + mkdir "${datadir}/opkhelper/archtab/core-linux-eglibc" || \ + error 'Cannot make architecture table directory' + printf 'x86_64-unknown-linux-gnu\n' \ + >"${datadir}/opkhelper/archtab/core-linux-eglibc/autoconf" || \ + error 'Cannot write architecture data' + printf 'x86\ni386\n' \ + >"${datadir}/opkhelper/archtab/core-linux-eglibc/kbuild" || \ + error 'Cannot write architecture data' + + # i686-linux-eglibc + mkdir "${datadir}/opkhelper/archtab/i686-linux-eglibc" || \ + error 'Cannot make architecture table directory' + printf 'i686-unknown-linux-gnu\n' \ + >"${datadir}/opkhelper/archtab/i686-linux-eglibc/autoconf" || \ + error 'Cannot write architecture data' + printf 'x86\ni386\n' \ + >"${datadir}/opkhelper/archtab/i686-linux-eglibc/kbuild" || \ + error 'Cannot write architecture data' + + # i686-kfreebsd-eglibc + mkdir "${datadir}/opkhelper/archtab/i686-kfreebsd-eglibc" || \ + error 'Cannot make architecture table directory' + printf 'i686-unknown-freebsd9.0\n' \ + >"${datadir}/opkhelper/archtab/i686-kfreebsd-eglibc/autoconf" || \ + error 'Cannot write architecture data' + printf 'x86\ni386\n' \ + >"${datadir}/opkhelper/archtab/i686-kfreebsd-eglibc/kbuild" || \ + error 'Cannot write architecture data' + + # cortexa8-linux-eglibc + mkdir "${datadir}/opkhelper/archtab/cortexa8-linux-eglibc" || \ + error 'Cannot make architecture table directory' + printf 'arm-cortex_a8-linux-gnueabi\n' \ + >"${datadir}/opkhelper/archtab/cortexa8-linux-eglibc/autoconf" || \ + error 'Cannot write architecture data' + printf 'arm\n' \ + >"${datadir}/opkhelper/archtab/cortexa8-linux-eglibc/kbuild" || \ + error 'Cannot write architecture data' + + printf 'Done!\n' +} + +print_usage() +{ + printf 'Usage: %s [OPTION]... build-arch build-plat\n' "${0}" +} + +parse_options() +{ + optind=0 + + for _opt; do + + # Handle arguments of "--opt arg" options. + if [ -n "${_prev}" ]; then + eval "${_prev}"=\"\$\{_opt\}\" + _prev='' + continue + fi + + # Detect "--opt=arg" and "--opt arg" options. + case "${_opt}" in + *=*) + _optarg="${_opt#*=}" + _opt="${_opt%=*}" + _optarg_set='true' + ;; + *) + _optarg_set='false' + ;; + esac + + # Handle short and long options. + case "${_opt}" in + --) + break + ;; + esac + + # Anything beyond this point should be a long option. + case "${_opt}" in + --*) + _opt="${_opt#--}" + _opts="${long_opts_with_args}" + _type='option' + ;; + *) + break + ;; + esac + + grep "^${_opt}\$" >/dev/null 2>&1 <<EOF +"${_opts}" +EOF + if [ ${?} -ne 0 ]; then + printf 'invalid %s name: %s\n' "${_type}" "${_opt}" >&2 + exit 1 + fi + if ${_optarg_set}; then + _opt="$(printf '%s' "${_opt}" | tr -c '[a-z0-9]' '_')" + eval "${_opt}"=\"\$\{_optarg\}\" + else + _prev="${_opt}" + fi + + optind=$(($optind + 1)) + + done +} + +error() +{ + printf '%s: Error: ' "${0##*/}" + printf "${@}" + printf '\n' + exit 1 +} + +main "${@}" |