#!/bin/busybox 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 . set -eu BB='/bin/busybox' BIN='/var/lib/opkg/bin' save_bb() { local file= local link= local name= local prio= "${BB}" mkdir "${BIN}" 2>/dev/null || : "${BB}" cp -p "${BB}" "${BIN}/busybox" while read file; do case "${file}" in /bin/busybox) ;; /bin/?* | /sbin/?* | /usr/bin/?* | /usr/sbin/?*) "${BB}" ln -sf 'busybox' "${BIN}/${file##*/}" ;; esac done 0<<-EOF $(/usr/bin/opkg-cl files busybox) EOF while read link name prio; do "${BB}" ln -sf 'busybox' "${BIN}/${link##*/}" done 0&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 save_bb if /usr/bin/opkg-cl "${@}"; then unsave_bb return 0 else es=${?} unsave_bb return ${es} fi } main "${@}"