diff options
author | P. J. McDermott <pjm@nac.net> | 2012-10-08 22:20:00 (EDT) |
---|---|---|
committer | P. J. McDermott <pjm@nac.net> | 2012-10-08 22:20:00 (EDT) |
commit | fbc574413b2bbc7417d2baca1b9878916a19ed6c (patch) | |
tree | 5a7cb1c2753fe44291310542eec97629f650017d | |
parent | 07863b5998d77ba57290c42789e9e121663d8b6b (diff) |
Write a script to generate files to test opkbuild.
This temporary script can be used to make opkbuild run on any UNIX-like
system as if it was running on ProteanOS.
-rwxr-xr-x | testsetup.sh | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/testsetup.sh b/testsetup.sh new file mode 100755 index 0000000..d2e0517 --- /dev/null +++ b/testsetup.sh @@ -0,0 +1,130 @@ +#! /bin/sh +# +# opkbuild +# testsetup +# Generates configuration and data files to test opkbuild. +# +# 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 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 <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" + [ -z "${sysconfdir}" ] && sysconfdir='/etc' + + if [ ${#} -ne 2 ]; then + print_usage + exit 1 + fi + + build_arch="${1}" + build_plat="${2}" + + mkdir -p "${sysconfdir}" + echo "${build_arch}" >"${sysconfdir}/proteanos_arch" + echo "${build_plat}" >"${sysconfdir}/proteanos_plat" + + mkdir -p "${datadir}/opkbuild/archtab" + echo 'x86_64-linux-gnu x86,i386' \ + >"${datadir}/opkbuild/archtab/core-linux-eglibc" + echo 'i686-linux-gnu x86,i386' \ + >"${datadir}/opkbuild/archtab/i686-linux-eglibc" + echo 'arm-cortex_a8-linux-gnueabi arm' \ + >"${datadir}/opkbuild/archtab/cortexa8-linux-eglibc" +} + +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 +} + +main "${@}" |