Browse Source

OpenDingux/RetroFW build cleanup

1. Now that all the buildroots we need are open-source,
   use defconfigs that ship with them instead of rolling our own.
2. New script: Packagaging/OpenDingux/build-all.sh
3. To avoid polluting top-level home directory, buildroot location
   changed to `~/devilutionx-buildroot/$BUILDROOT_TARGET`.
4. Move OPK packaging script to its own file. This is to be able
   to make a package for devilutionX in the buildroot itself.
pull/682/head
Gleb Mazovetskiy 6 years ago committed by Anders Jenbo
parent
commit
afca5d9fef
  1. 11
      Packaging/OpenDingux/build-all.sh
  2. 74
      Packaging/OpenDingux/build.sh
  3. 43
      Packaging/OpenDingux/package-opk.sh
  4. 9
      Packaging/OpenDingux/retrofw_devilutionx_defconfig
  5. 20
      Packaging/OpenDingux/rg350_devilutionx_defconfig
  6. 25
      Packaging/OpenDingux/targets.sh

11
Packaging/OpenDingux/build-all.sh

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")/../.."
source Packaging/OpenDingux/targets.sh
for target in "${VALID_TARGETS[@]}"; do
Packaging/OpenDingux/build.sh "$target"
done

74
Packaging/OpenDingux/build.sh

@ -2,48 +2,38 @@
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")/../.."
source Packaging/OpenDingux/targets.sh
source Packaging/OpenDingux/package-opk.sh
usage() {
echo "Usage: build.sh [target]"
echo " target: target platform: rg350, gkd350h, or retrofw"
echo "Usage: build.sh [target]"
usage_target
}
if [[ $# -ne 1 ]]; then
echo "Error: target is missing"
usage
exit 1
fi
if [[ $1 != rg350 ]] && [[ $1 != retrofw ]] && [[ $1 != gkd350h ]]; then
echo "Error: invalid target"
usage
exit 1
if ! check_target "$@"; then
usage
exit 64
fi
cd "$(dirname "${BASH_SOURCE[0]}")/../.."
declare -r TARGET="${1}"
declare -r TARGET="$1"
declare -r BUILD_DIR="build-${TARGET}"
declare -rA BUILDROOT_REPOS=(
[retrofw]=https://github.com/retrofw/buildroot.git
[rg350]=https://github.com/tonyjih/RG350_buildroot.git
)
declare -rA BUILDROOT_DEFCONFIGS=(
[retrofw]='RetroFW_defconfig BR2_EXTERNAL=retrofw'
[rg350]='rg350_defconfig BR2_EXTERNAL=board/opendingux'
)
declare BUILDROOT_DEFCONFIG
declare BUILDROOT_REPO
set_buildroot_vars() {
BUILDROOT_DEFCONFIG="$1_devilutionx_defconfig"
BUILDROOT_REPO="${BUILDROOT_REPOS[$1]}"
BUILDROOT="${BUILDROOT:-$HOME/buildroot-$1-devilutionx}"
}
# Use the rg350 buildroot for gkd350h because gkd350h buildroot is not open-source.
declare BUILDROOT_TARGET="$TARGET"
if [[ $TARGET == gkd350h ]]; then
set_buildroot_vars rg350
else
set_buildroot_vars "$TARGET"
# Use the rg350 buildroot for gkd350h because gkd350h buildroot is not open-source.
BUILDROOT_TARGET=rg350
fi
BUILDROOT="${BUILDROOT:-$HOME/devilutionx-buildroots/$BUILDROOT_TARGET}"
main() {
>&2 echo "Building for target ${TARGET} in ${BUILD_DIR}"
@ -51,20 +41,21 @@ main() {
prepare_buildroot
make_buildroot
build
package
package_opk
}
prepare_buildroot() {
if [[ -d $BUILDROOT ]]; then
return
fi
git clone --depth=1 "${BUILDROOT_REPOS[$TARGET]}" "$BUILDROOT"
git clone --depth=1 "${BUILDROOT_REPOS[$BUILDROOT_TARGET]}" "$BUILDROOT"
cd "$BUILDROOT"
make ${BUILDROOT_DEFCONFIGS[$BUILDROOT_TARGET]}
cd -
}
make_buildroot() {
cp "Packaging/OpenDingux/$BUILDROOT_DEFCONFIG" "$BUILDROOT/configs/"
cd "$BUILDROOT"
make "$BUILDROOT_DEFCONFIG"
BR2_JLEVEL=0 make toolchain libzip sdl sdl_mixer sdl_ttf
cd -
}
@ -79,21 +70,4 @@ build() {
cd -
}
package() {
local ext=gcw0
if [[ $TARGET == retrofw ]]; then
ext=retrofw
fi
local -r tmp="${BUILD_DIR}/opk"
rm -rf "$tmp"
mkdir -p "$tmp"
cp "Packaging/OpenDingux/${TARGET}.desktop" "${tmp}/default.${ext}.desktop"
cp "Packaging/OpenDingux/${TARGET}-manual.txt" "${tmp}/readme.${ext}.txt"
mksquashfs "${BUILD_DIR}/devilutionx" \
"${tmp}/default.${ext}.desktop" "${tmp}/readme.${ext}.txt" \
Packaging/resources/Diablo_32.png Packaging/resources/CharisSILB.ttf \
"${BUILD_DIR}/devilutionx-${TARGET}.opk" \
-all-root -no-xattrs -noappend -no-exports
}
main

43
Packaging/OpenDingux/package-opk.sh

@ -0,0 +1,43 @@
#!/usr/bin/env bash
package_opk() {
local ext
if [[ $TARGET == rg350 ]] || [[ $TARGET == gkd350h ]]; then
ext=gcw0
else
ext="$TARGET"
fi
local -r tmp="${BUILD_DIR}/opk"
set -x
rm -rf "$tmp"
mkdir -p "$tmp"
cp "Packaging/OpenDingux/${TARGET}.desktop" "${tmp}/default.${ext}.desktop"
cp "Packaging/OpenDingux/${TARGET}-manual.txt" "${tmp}/readme.${ext}.txt"
mksquashfs "${BUILD_DIR}/devilutionx" \
"${tmp}/default.${ext}.desktop" "${tmp}/readme.${ext}.txt" \
Packaging/resources/Diablo_32.png Packaging/resources/CharisSILB.ttf \
"${BUILD_DIR}/devilutionx-${TARGET}.opk" \
-all-root -no-xattrs -noappend -no-exports -no-progress
}
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")/../.."
source Packaging/OpenDingux/targets.sh
usage() {
echo "Usage: package-opk.sh [target]"
usage_target
}
if ! check_target "$@"; then
usage
exit 64
fi
declare -r TARGET="$1"
declare -r BUILD_DIR="build-${TARGET}"
package_opk
fi

9
Packaging/OpenDingux/retrofw_devilutionx_defconfig

@ -1,9 +0,0 @@
BR2_mipsel=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_SDL=y
BR2_PACKAGE_SDL_MIXER=y
BR2_PACKAGE_SDL_TTF=y
BR2_PACKAGE_LIBZIP=y
BR2_PACKAGE_LIBSODIUM=y

20
Packaging/OpenDingux/rg350_devilutionx_defconfig

@ -1,20 +0,0 @@
BR2_mipsel=y
BR2_mips_xburst=y
# BR2_MIPS_SOFT_FLOAT is not set
BR2_OPTIMIZE_2=y
BR2_KERNEL_HEADERS_3_12=y
BR2_UCLIBC_CONFIG="board/opendingux/gcw0/uclibc.config"
BR2_TOOLCHAIN_BUILDROOT_LARGEFILE=y
BR2_TOOLCHAIN_BUILDROOT_INET_IPV6=y
BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-lto"
BR2_GCC_VERSION_5_X=y
BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-lto"
BR2_TOOLCHAIN_BUILDROOT_CXX=y
BR2_PACKAGE_SDL=y
BR2_PACKAGE_SDL_MIXER=y
BR2_PACKAGE_SDL_TTF=y
BR2_PACKAGE_ETNA_VIV=y
BR2_PACKAGE_ETNA_VIV_ABIV4=y
BR2_PACKAGE_MESA3D_ETNA_VIV=y
BR2_PACKAGE_LIBZIP=y

25
Packaging/OpenDingux/targets.sh

@ -0,0 +1,25 @@
declare -ra VALID_TARGETS=(
retrofw
rg350
)
usage_target() {
echo -n " target: target platform:"
printf " %s" "${VALID_TARGETS[@]}"
echo
}
check_target() {
if [[ $# -eq 0 ]] || [[ -z $1 ]]; then
echo "Error: target is missing"
return 1
fi
for target in "${VALID_TARGETS[@]}"; do
if [[ $target == $1 ]]; then
return 0
fi
done
echo "Error: invalid target"
return 1
}
Loading…
Cancel
Save