webOS: patch IPK so it can be installed onto webOS menu (#19074)

This commit is contained in:
Craig authored and GitHub committed 2026-05-29 14:14:49 +02:00
1 parent a1ff8fbde8
commit 2e1a830183
2 files changed
+52 -3

No files matched your search

+11 -3
View File
@@ -22,6 +22,7 @@ SDL2_PREBUILT_ARCHIVE ?= https://github.com/webosbrew/SDL-webOS/releases/downloa
64TO32_BRIDGE_DIR ?= /media/developer/apps/usr/palm/applications/org.webosbrew.bridge-64to32
ELF_INTERPRETER_BIN ?= /lib/ld-linux-aarch64.so.1
SET_ELF_INTERPRETER ?= 0
REPACK_64_IPK_FOR_MENU ?= 0
SET_BUILD_ID ?= 0
#########################
@@ -159,9 +160,11 @@ DEF_FLAGS += -Wall -Wno-unused-variable
LIBS := -ldl -lz -lrt -pthread
ifeq ($(findstring arm64,$(ARCH)),arm64)
ARCHFLAGS := -mcpu=cortex-a53
IPK_ARCH := aarch64
else
ARCHFLAGS := -mcpu=cortex-a9 -mtune=cortex-a53 -mfloat-abi=softfp
HAVE_NEON = 1
IPK_ARCH := arm
endif
CFLAGS := $(ARCHFLAGS)
CFLAGS += -DWEBOS_APP_ID=\"$(APP_PACKAGE_NAME)\"
@@ -377,6 +380,9 @@ endif
ipk: prebuild $(TARGET) sdl2
rm -rf webos/dist
mkdir -p webos/dist/lib
ifeq ($(SET_ELF_INTERPRETER), 1)
patchelf --set-interpreter $(ELF_INTERPRETER) $(TARGET)
endif
echo "$$APPINFO" > webos/dist/appinfo.json
cp -t webos/dist -vf $(TARGET) webos/icon160.png
cp -t webos/dist/lib -vf $(WEBOS_USR_LIB_DIR)/libstdc++.so.6
@@ -389,11 +395,13 @@ ifeq ($(ADD_SDL2_LIB), 1)
endif
ifneq ($(DEBUG), 1)
$(STRIP) webos/dist/$(TARGET)
endif
ifeq ($(SET_ELF_INTERPRETER), 1)
patchelf --set-interpreter $(ELF_INTERPRETER) $(TARGET)
endif
cd webos && ares-package dist
ifeq ($(REPACK_64_IPK_FOR_MENU), 1)
./webos/patch-aarch64-in-ipk.sh webos/$(APP_PACKAGE_NAME)_$(IPK_VERSION)_$(IPK_ARCH).ipk
rm webos/$(APP_PACKAGE_NAME)_$(IPK_VERSION)_$(IPK_ARCH).ipk
mv webos/$(APP_PACKAGE_NAME)_$(IPK_VERSION)_$(IPK_ARCH)-patched.ipk webos/$(APP_PACKAGE_NAME)_$(IPK_VERSION)_$(IPK_ARCH).ipk
endif
install: ipk
ares-install webos/$(APP_PACKAGE_NAME)_$(IPK_VERSION)_$(ARCH).ipk
+41
View File
@@ -0,0 +1,41 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <package.ipk>"
exit 1
fi
IPK="$1"
IPK="$(realpath "$IPK")"
IPK_DIR="$(dirname "$IPK")"
IPK_BASE="$(basename "$IPK")"
OUTNAME="${IPK_BASE%.ipk}-patched.ipk"
WORKDIR=$(mktemp -d)
echo "[*] Working in: $WORKDIR"
cp "$IPK" "$WORKDIR/"
cd "$WORKDIR"
echo "[*] Extracting IPK..."
ar x "$IPK_BASE"
echo "[*] Extracting control..."
mkdir control
tar -xf control.tar.gz -C control
echo "[*] Patching Architecture field..."
sed -i 's/^Architecture: *aarch64/Architecture: arm/' control/control
echo "[*] Rebuilding control..."
tar -czf control.tar.gz -C control control
echo "[*] Repacking..."
ar rcs "$OUTNAME" debian-binary control.tar.gz data.tar.gz
echo "[*] Copying result back..."
mv "$OUTNAME" "$IPK_DIR/"
echo "[+] Done: $IPK_DIR/$OUTNAME"