#! /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 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 . 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}" printf 'Generating build system configuration...\n' mkdir -p "${sysconfdir}" || \ error 'Cannot make system configuration directory' echo "${build_arch}" >"${sysconfdir}/proteanos_arch" || \ error 'Cannot write proteanos_arch' echo "${build_plat}" >"${sysconfdir}/proteanos_plat" || \ error 'Cannot write proteanos_plat' printf 'Generating distribution architecture data...\n' mkdir -p "${datadir}/opkbuild/archtab" || \ error 'Cannot make architecture table directory' printf 'x86_64-unknown-linux-gnu\nx86, i386\n' \ >"${datadir}/opkbuild/archtab/core-linux-eglibc" || \ error 'Cannot write architecture data' printf 'i686-unknown-linux-gnu\nx86, i386\n' \ >"${datadir}/opkbuild/archtab/i686-linux-eglibc" || \ error 'Cannot write architecture data' printf 'i686-unknown-freebsd9.0\nx86, i386\n' \ >"${datadir}/opkbuild/archtab/i686-kfreebsd-eglibc" || \ error 'Cannot write architecture data' printf 'arm-cortex_a8-linux-gnueabi\narm\n' \ >"${datadir}/opkbuild/archtab/cortexa8-linux-eglibc" || \ 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 <&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 "${@}"