diff options
Diffstat (limited to 'opkg')
-rwxr-xr-x | opkg | 90 |
1 files changed, 90 insertions, 0 deletions
@@ -0,0 +1,90 @@ +#!/bin/sh +# +# opkg - Multiarch support wrapper for opkg +# +# Copyright (C) 2020 Patrick 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/>. + +set -eu + +main() +{ + local first_arg= + local arch_arg= + local arg= + + first_arg=true + arch_arg='' + for arg in "${@}"; do + if ${first_arg}; then + set -- + if [ -e '/etc/opkg/opkg.conf' ]; then + set -- "${@}" --conf '/etc/opkg/opkg.conf' + fi + set -- "${@}" \ + --add-arch all:100 \ + --add-arch "$(cat /etc/proteanos_arch):50" \ + --add-arch src:100 + first_arg=false + elif [ -n "${arch_arg}" ]; then + case "${arg}" in -* | '') + printf '%s: Option "%s" requires an argument\n'\ + "${0}" "${arch_arg}" 1>&2 + return 1 + esac + set -- "${@}" --add-arch "${arg}:100" + arch_arg='' + continue + fi + case "${arg}" in + -a | --host-architecture) + arch_arg="${arg}" + continue + ;; + -a*) + arg="${arg#-a}" + set -- "${@}" --add-arch "${arg}:100" + continue + ;; + --host-architecture=*) + arch_arg="${arg%=*}" + arg="${arg#--host-architecture=}" + if [ -z "${arg}" ]; then + printf '%s: Option "%s" requires '$(: \ + )'an argument\n' \ + "${0}" "${arch_arg}" 1>&2 + return 1 + fi + set -- "${@}" --add-arch "${arg}:100" + arch_arg='' + continue + ;; + esac + set -- "${@}" "${arg}" + done + if [ -n "${arch_arg}" ]; then + printf '%s: Option "%s" requires an argument\n' \ + "${0}" "${arch_arg}" 1>&2 + return 1 + fi + + if /usr/bin/opkg-cl "${@}"; then + return 0 + else + return ${?} + fi +} + +main "${@}" |