#!@@SH@@
#
# opkbuild
# src/opkbuild
# Build opkg packages.
#
# 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 .
. '@@LIBOPKBUILD@@/load.sm'
ob_use locale
ob_use output
ob_use package
ob_use metadata
export OPK_SOURCE=
export OPK_SOURCE_VERSION=
export OPK_SOURCE_VERSION_UPSTREAM=
export OPK_BINARY_VERSION=
export OPK_PACKAGES=
export OPK_BUILD_ARCH=
export OPK_BUILD_ARCH_CPU=
export OPK_BUILD_ARCH_KERNEL=
export OPK_BUILD_ARCH_LIBS=
export OPK_BUILD_PLAT=
export OPK_BUILD_ARCH_GNU=
export OPK_HOST_ARCH=
export OPK_HOST_ARCH_CPU=
export OPK_HOST_ARCH_KERNEL=
export OPK_HOST_ARCH_LIBS=
export OPK_HOST_PLAT=
export OPK_HOST_ARCH_GNU=
opt_build=
opt_target=
opt_host_arch=
opt_host_plat=
opt_check_build_deps=
opt_clean=
opt_uid0_cmd=
main()
{
ob_set_text_domain 'opkbuild'
get_options "${@}"
shift $(($OPTIND - 1))
if [ ${#} -ne 0 ]; then
usage
exit 1
fi
test_uid0_cmd
setup_arch_plat
make_work_area
setup_package
if [ "${opt_build}" = 'source' -o "${opt_build}" = 'full' ]; then
build_source
fi
if [ "${opt_build}" != 'source' ]; then
print_arch_stats
"${opt_check_build_deps}" && '@@BINDIR@@/ob-checkbuilddeps'
setup_build
build
clean
fi
}
usage()
{
printf "$(ob_get_msg 'usage')\n" 'opkbuild'
}
help()
{
usage
printf '%s\n' "$(ob_get_msg 'help')"
}
version()
{
printf "$(ob_get_msg 'version')\n" \
'opkbuild' '@@PACKAGE_NAME@@' '@@PACKAGE_VERSION@@'
}
get_options()
{
# Parse and handle command-line options.
while getopts 'bBASFT:a:P:DdCcr:hV' opt; do
case "${opt}" in
b)
if [ -n "${opt_build}" ]; then
ob_error "$(ob_get_msg 'bbasf_mutex')"
fi
opt_build='binary'
;;
B)
if [ -n "${opt_build}" ]; then
ob_error "$(ob_get_msg 'bbasf_mutex')"
fi
opt_build='binary-arch'
;;
A)
if [ -n "${opt_build}" ]; then
ob_error "$(ob_get_msg 'bbasf_mutex')"
fi
opt_build='binary-indep'
;;
S)
if [ -n "${opt_build}" ]; then
ob_error "$(ob_get_msg 'bbasf_mutex')"
fi
opt_build='source'
;;
F)
if [ -n "${opt_build}" ]; then
ob_error "$(ob_get_msg 'bbasf_mutex')"
fi
opt_build='full'
;;
T)
opt_target="${OPTARG}"
;;
a)
opt_host_arch="${OPTARG}"
;;
P)
opt_host_plat="${OPTARG}"
;;
D)
opt_check_build_deps='true'
;;
d)
opt_check_build_deps='false'
;;
C)
opt_clean='true'
;;
c)
opt_clean='false'
;;
r)
opt_uid0_cmd="${OPTARG}"
;;
h)
help
exit 0
;;
V)
version
exit 0
;;
?)
ob_error "$(ob_get_msg 'bad_opt')" "${opt}"
exit 1
;;
esac
done
# Set default option values.
[ -z "${opt_build}" ] && opt_build='full'
[ -z "${opt_check_build_deps}" ] && opt_check_build_deps='true'
[ -z "${opt_uid0_cmd}" ] && opt_uid0_cmd='fakeroot'
# Set cleaning behavior.
if [ -n "${opt_target}" ]; then
[ -z "${opt_clean}" ] && opt_clean='false'
else
[ -z "${opt_clean}" ] && opt_clean='true'
fi
}
test_uid0_cmd()
{
# Verify that the UID 0 command works.
test_uid=$("${opt_uid0_cmd}" id -u)
if [ ${?} -ne 0 ]; then
ob_error "$(ob_get_msg 'uid0_cmd_not_found')" "${opt_uid0_cmd}"
fi
if [ ${test_uid} -ne 0 ]; then
ob_error "$(ob_get_msg 'uid0_cmd_bad_uid')" "${opt_uid0_cmd}"
fi
}
setup_arch_plat()
{
ob_info "$(ob_get_msg 'setup_arch_plat')"
OPK_BUILD_ARCH="$(ob_get_system_arch)"
OPK_BUILD_PLAT="$(ob_get_system_plat)"
if [ -n "${opt_host_arch}" ]; then
OPK_HOST_ARCH="${opt_host_arch}"
else
OPK_HOST_ARCH="${OPK_BUILD_ARCH}"
fi
if [ -n "${opt_host_plat}" ]; then
OPK_HOST_PLAT="${opt_host_plat}"
else
OPK_HOST_PLAT="${OPK_BUILD_PLAT}"
fi
IFS='-' read OPK_BUILD_ARCH_CPU OPK_BUILD_ARCH_KERNEL OPK_BUILD_ARCH_LIBS \
<