Author SHA1 Message Date
emil 34043ac550 build: add support for eng userimages 2026-09-26 16:41:08 +02:00
emil 8de8fe75ab manifest: msm8226-common vendor no longer a stub 2026-09-25 20:56:30 +02:00
emil a25a1df62e build: fix sse42 being used (and I have an ancient CPU) 2026-09-25 11:36:14 +02:00
emil 909faea05a build: remove patch unnecessary on los-16.0 2026-09-22 22:16:15 +02:00
emil 31065b3ef7 manifest: msm8226 vendor stub 2026-09-22 21:27:59 +02:00
emil c0fb85702c manifest: bring back some repos I removed 2026-09-22 16:44:15 +02:00
emil ff85dde782 build: add git-lfs to packages 2026-09-22 15:38:45 +02:00
emil dc43354950 manifest: chromium prebuilts still broken 2026-09-22 15:36:05 +02:00
emil 35dd0dcb07 manifest: some packages now pulled by lineage.dependencies 2026-09-22 15:09:09 +02:00
emil 0583a5542e general: changes for 16.0 build 2026-09-22 15:02:06 +02:00
emil f77f6d83b0 general: update manifest branch; move build directory 2026-09-22 14:16:02 +02:00
emil a8c41a24bc manifest: expand with twrp dependencies 2026-09-21 11:01:07 +02:00
emil 1b3699807a build: add twrp and twrp usage 2026-09-21 08:33:39 +02:00
emil 09e49af018 manifest: bump twrp version 2026-09-21 08:24:31 +02:00
emil 51b734de69 manifest: add samsung hardware 2026-09-21 08:09:49 +02:00
emil dbf9ecbe06 general: add support for twrp using los device tree 2026-09-21 08:01:56 +02:00
emil 7acccdbc37 patch: fix 0001 2026-09-18 20:42:33 +02:00
emil 0c89915970 Merge branch 'twrp-3.7.0_9-0' into lineage-14.1 2026-09-13 23:04:49 +02:00
emil 272215db61 build: add BUILD variable 2026-09-13 23:00:48 +02:00
emil 966bb92a06 docs: update readme after branchout 2026-09-13 22:43:14 +02:00
emil 2a15723455 general: restructuring after branchout 2026-09-13 22:40:19 +02:00
9 changed files with 74 additions and 204 deletions
@@ -1,30 +0,0 @@
From: rubenslte-builder <builder@rubenslte>
Date: Wed, 22 Jul 2026 10:30:00 +0200
Subject: [PATCH 1/8] host-cflags-suppress-stringop-truncation
Suppress -Werror=stringop-truncation for GCC >= 8 host builds
---
diff --git a/build/core/combo/HOST_linux-x86.mk b/build/core/combo/HOST_linux-x86.mk
--- a/build/core/combo/HOST_linux-x86.mk
+++ b/build/core/combo/HOST_linux-x86.mk
@@ -50,6 +50,9 @@
# See bug 12708004.
$(combo_2nd_arch_prefix)HOST_GLOBAL_CFLAGS += -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS
+# Suppress warnings treated as errors with GCC >= 8
+$(combo_2nd_arch_prefix)HOST_GLOBAL_CFLAGS += -Wno-error=stringop-truncation
+
$(combo_2nd_arch_prefix)HOST_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
diff --git a/build/core/combo/HOST_linux-x86_64.mk b/build/core/combo/HOST_linux-x86_64.mk
--- a/build/core/combo/HOST_linux-x86_64.mk
+++ b/build/core/combo/HOST_linux-x86_64.mk
@@ -50,4 +50,7 @@
# See bug 12708004.
HOST_GLOBAL_CFLAGS += -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS
+# Suppress warnings treated as errors with GCC >= 8
+HOST_GLOBAL_CFLAGS += -Wno-error=stringop-truncation
+
HOST_NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined
@@ -1,51 +0,0 @@
From: rubenslte-builder <builder@rubenslte>
Date: Wed, 22 Jul 2026 10:30:00 +0200
Subject: [PATCH 2/8] build-core-fix-ar-absolute-paths
Fix ar absolute path issues by extracting to temp dir instead of per-member piping.
$(abspath ...) is only safe for TARGET_AR, which is a relative prebuilt path used
after `cd $$ldir`; HOST_AR is bare `ar` (GNU make built-in AR via combo/select.mk)
and is resolved through PATH, so it must NOT be abspath'd (abspath of `ar` yields
$TREE/ar, which does not exist).
---
diff --git a/build/core/definitions.mk b/build/core/definitions.mk
--- a/build/core/definitions.mk
+++ b/build/core/definitions.mk
@@ -1180,13 +1180,11 @@ define _extract-and-include-single-target-whole-static-lib
$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\
rm -rf $$ldir; \
mkdir -p $$ldir; \
- filelist=; \
- for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) t $(1)`; do \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) p $(1) $$f > $$ldir/$$f; \
- filelist="$$filelist $$ldir/$$f"; \
- done ; \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \
- $(PRIVATE_ARFLAGS) $@ $$filelist
+ cp $(1) $$ldir/input.a; \
+ cd $$ldir && $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR)) x input.a; \
+ rm -f $$ldir/input.a; \
+ $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR)) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \
+ $(PRIVATE_ARFLAGS) $@ $$ldir/*.o
endef
@@ -1217,13 +1215,11 @@ define _extract-and-include-single-host-whole-static-lib
$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\
rm -rf $$ldir; \
mkdir -p $$ldir; \
- filelist=; \
- for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) t $(1) | \grep '\.o$$'`; do \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) p $(1) $$f > $$ldir/$$f; \
- filelist="$$filelist $$ldir/$$f"; \
- done ; \
- $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \
- $(PRIVATE_ARFLAGS) $@ $$filelist
+ cp $(1) $$ldir/input.a; \
+ cd $$ldir && $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) x input.a; \
+ rm -f $$ldir/input.a; \
+ $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \
+ $(PRIVATE_ARFLAGS) $@ $$ldir/*.o
endef
@@ -1,17 +0,0 @@
From: rubenslte-builder <builder@rubenslte>
Date: Wed, 22 Jul 2026 10:30:00 +0200
Subject: [PATCH 4/8] recovery-add-std-gnu++11-for-nullptr-support
Add -std=gnu++11 to recovery LOCAL_CPPFLAGS for Clang nullptr support
---
diff --git a/bootable/recovery/Android.mk b/bootable/recovery/Android.mk
--- a/bootable/recovery/Android.mk
+++ b/bootable/recovery/Android.mk
@@ -97,6 +97,7 @@
LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION)
LOCAL_CFLAGS += -Wno-unused-parameter
LOCAL_CLANG := true
+LOCAL_CPPFLAGS += -std=gnu++11
#LOCAL_STATIC_LIBRARIES := \
# libext4_utils_static \
@@ -1,18 +0,0 @@
From: rubenslte-builder <builder@rubenslte>
Date: Wed, 22 Jul 2026 10:30:00 +0200
Subject: [PATCH 5/8] build-core-combo-remove-icf-safe-for-BFD-ld
Comment out -Wl,--icf=safe (gold-only flag, unsupported by BFD ld)
---
diff --git a/build/core/combo/TARGET_linux-arm.mk b/build/core/combo/TARGET_linux-arm.mk
--- a/build/core/combo/TARGET_linux-arm.mk
+++ b/build/core/combo/TARGET_linux-arm.mk
@@ -143,7 +143,7 @@
-Wl,-z,now \
-Wl,--warn-shared-textrel \
-Wl,--fatal-warnings \
- -Wl,--icf=safe \
+ # -Wl,--icf=safe (unsupported by BFD ld) \
$(arch_variant_ldflags)
$(combo_2nd_arch_prefix)TARGET_GLOBAL_CFLAGS += -mthumb-interwork
@@ -1,50 +0,0 @@
From: rubenslte-builder <builder@rubenslte>
Date: Wed, 22 Jul 2026 10:30:00 +0200
Subject: [PATCH 8/8] build-core-tasks-kernel-fix-KERNEL_CONFIG_OVERRIDE-ordering-and-passthrough
Reorder KERNEL_ADDITIONAL_CONFIG before KERNEL_CONFIG_OVERRIDE, remove
oldconfig after override, pass override on kernel build command line
---
diff --git a/build/core/tasks/kernel.mk b/build/core/tasks/kernel.mk
--- a/build/core/tasks/kernel.mk
+++ b/build/core/tasks/kernel.mk
@@ -209,17 +209,16 @@
$(KERNEL_CONFIG): $(KERNEL_OUT)
$(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG)
- $(hide) if [ ! -z "$(KERNEL_CONFIG_OVERRIDE)" ]; then \
- echo "Overriding kernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \
- echo $(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; \
- $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi
$(hide) if [ ! -z "$(KERNEL_ADDITIONAL_CONFIG)" ]; then \
echo "Using additional config '$(KERNEL_ADDITIONAL_CONFIG)'"; \
cat $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG) >> $(KERNEL_OUT)/.config; \
$(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi
+ $(hide) if [ ! -z "$(KERNEL_CONFIG_OVERRIDE)" ]; then \
+ echo "Overriding kernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \
+ echo $(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; fi
TARGET_KERNEL_BINARIES: $(KERNEL_OUT) $(KERNEL_CONFIG) $(KERNEL_HEADERS_INSTALL)
- $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(TARGET_PREBUILT_INT_KERNEL_TYPE)
+ $(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CONFIG_OVERRIDE) $(TARGET_PREBUILT_INT_KERNEL_TYPE)
-$(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) dtbs
-$(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) modules
-$(MAKE) $(MAKE_FLAGS) -C $(KERNEL_SRC) O=$(KERNEL_OUT) INSTALL_MOD_PATH=../../$(KERNEL_MODULES_INSTALL) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) modules_install
@@ -241,14 +240,13 @@
echo "Used a different defconfig for header generation"; \
rm -f ../$(KERNEL_CONFIG); \
$(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG); fi
- $(hide) if [ ! -z "$(KERNEL_CONFIG_OVERRIDE)" ]; then \
- echo "Overriding kernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \
- echo $(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; \
- $(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi
$(hide) if [ ! -z "$(KERNEL_ADDITIONAL_CONFIG)" ]; then \
echo "Using additional config '$(KERNEL_ADDITIONAL_CONFIG)'"; \
cat $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG) >> $(KERNEL_OUT)/.config; \
$(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) oldconfig; fi
+ $(hide) if [ ! -z "$(KERNEL_CONFIG_OVERRIDE)" ]; then \
+ echo "Overriding kernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \
+ echo $(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; fi
kerneltags: $(KERNEL_OUT) $(KERNEL_CONFIG)
$(MAKE) -C $(KERNEL_SRC) O=$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) tags
+2 -2
View File
@@ -1,9 +1,9 @@
# builders\_rubenslte
Build scripts and utilities for rubenslte TWRP builds.
Build scripts and utilities for rubenslte LineageOS 16.0 builds.
## Quick start
Requirements: either a NixOS system (or Nix), or a set up on some
other distro with all required packages. First (if on Nix), run
nix-shell. Then, run `./build.sh -h` to figure out how to build.
`nix-shell`. Then, run `./build.sh -h` to figure out how to build.
+40 -34
View File
@@ -3,11 +3,10 @@ set -euo pipefail
readonly ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$ROOT"
readonly BUILD="$ROOT/build-twrp"
readonly BUILD="$ROOT/build-lineage-16.0"
readonly MANIFEST_URL="https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git"
readonly MANIFEST_BRANCH="twrp-5.1"
readonly RECOVERY_BUDGET=10485248
readonly MANIFEST_URL="https://github.com/LineageOS/android.git"
readonly MANIFEST_BRANCH="lineage-16.0"
rlte_print() { printf '\033[34m[%s] %s\033[0m\n' "$0" "$*" ; }
rlte_error() { printf '\033[31m[%s] error: %s\033[0m\n' "$0" "$*" >&2 ; exit 1; }
@@ -15,16 +14,19 @@ rlte_ok() { printf '\033[32m[%s] ok: %s\033[0m\n' "$0" "$*" ; exit 0; }
usage() {
cat <<EOF
usage: $0 [-hn] [build|clean|prune]
usage: $0 [-hne] [bootimage|twrp|bacon|clean|prune]
flags:
-h show this help
-n don't sync
-e build an engineering image
commands:
build build recovery.img (must be explicit)
clean remove "$BUILD"/out and recovery.img
prune remove all of "$BUILD" and recovery.img
bootimage build boot.img (kernel + dt.img + ramdisk, fast gate)
twrp build TWRP recovery.img
bacon full build -> lineage_rubenslte-*.zip
clean mka clean
prune remove all of "$BUILD"
EOF
}
@@ -35,8 +37,8 @@ do_build() {
if [ ! -d .repo ]; then
rlte_print "Setting up repo"
repo init --depth 1 -u "$MANIFEST_URL" -b "$MANIFEST_BRANCH"
mkdir -p .repo/local_manifests
cp "$ROOT/manifest.xml" .repo/local_manifests/
mkdir -p .repo/local_manifests
cp "$ROOT/manifest.xml" .repo/local_manifests/
fi
if [ ! -v "NO_SYNC" ]; then
@@ -44,42 +46,47 @@ do_build() {
repo sync -c -j"$(nproc)"
fi
rlte_print "Applying patches"
for p in "$ROOT"/*.patch; do
[ -e "$p" ] || continue
patch -p1 --forward --batch --dry-run < "$p" || continue
patch -p1 --batch < "$p"
done
export LC_ALL=C LANG=C USE_CCACHE=1 CCACHE_DIR="$ROOT/.ccache" \
JACK_SERVER=false JACK_NO_SERVER=1 \
JACK_REPOSITORY="$ROOT/.jack-repository" TOP="$PWD" \
ANDROID_BUILD_TOP="$PWD" CPU_SSE42=false
export LC_ALL=C LANG=C LC_CTYPE=C TOP="$PWD"
set +u
mkdir -p "$ROOT/.jack-repository"
cp -n "$TOP"/prebuilts/sdk/tools/jacks/jack-*.jar "$ROOT/.jack-repository"
cp -n "$TOP"/prebuilts/sdk/tools/jills/jill-*.jar "$ROOT/.jack-repository"
set +eu
source build/envsetup.sh
lunch omni_rubenslte-userdebug
set -u
rlte_print "Commencing TWRP build"
mka recoveryimage
if [ -v "ENG_IMG" ]; then
lunch lineage_rubenslte-eng
else
lunch lineage_rubenslte-userdebug
fi
set -e
if [ ! -f out/target/product/rubenslte/recovery.img ]; then
rlte_error "Build did not produce recovery.img"
if [ -z "${TARGET_PRODUCT:-}" ]; then
rlte_error "lunch failed - TARGET_PRODUCT not set"
exit 1
fi
cp out/target/product/rubenslte/recovery.img "$ROOT/recovery.img"
rlte_print "Commencing build (command: $CMD)"
if [ "$(stat -c%s "$ROOT/recovery.img")" -gt "$RECOVERY_BUDGET" ]; then
rlte_error "$ROOT/recovery.img exceeds the recovery partition budget"
exit 1
if [ "$CMD" = "twrp" ]; then
WITH_TWRP=true mka recoveryimage
else
mka "$CMD"
fi
rlte_ok "Image at: $ROOT/recovery.img"
rlte_ok "Done."
}
while getopts ":hn" opt; do
while getopts ":hne" opt; do
case "$opt" in
h) usage; exit 0 ;;
n) NO_SYNC=1 ;;
e) ENG_IMG=1 ;;
*) usage; exit 1 ;;
esac
done
@@ -87,8 +94,7 @@ done
shift $((OPTIND - 1))
case "${1:-}" in
build) do_build ;;
clean) rm -rf "$BUILD"/out recovery.img ;;
prune) rm -rf "$BUILD" recovery.img ;;
bootimage|twrp|bacon|clean) CMD="${1:-}"; do_build ;;
prune) rm -rf "$BUILD" ;;
*) usage; exit 1 ;;
esac
+31 -2
View File
@@ -1,11 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="gitea" fetch="https://git.cfpi-fpsi.eu/rubenslte" />
<remote name="los" fetch="https://github.com/LineageOS" />
<project path="hardware/samsung"
name="android_hardware_samsung"
remote="los" revision="lineage-16.0" />
<project path="device/samsung/qcom-common"
name="android_device_samsung_qcom-common"
remote="los" revision="lineage-16.0" />
<project path="device/samsung/msm8226-common"
name="android_device_samsung_msm8226-common"
remote="los" revision="lineage-16.0" />
<project path="device/samsung/rubenslte"
name="twrp_device_samsung_rubenslte"
name="android_device_samsung_rubenslte"
remote="gitea" revision="main" />
<project path="kernel/samsung/rubenslte"
name="android_kernel_samsung_msm8226-rubenslte"
remote="gitea" revision="lineage-14.1-rubenslte" />
remote="gitea" revision="lineage-16.0-rubenslte" />
<project path="vendor/samsung/msm8226-common"
name="android_vendor_samsung_msm8226-common"
remote="gitea" revision="main" />
<project path="vendor/samsung/rubenslte"
name="android_vendor_samsung_rubenslte"
remote="gitea" revision="main" />
<!-- LineageOS Chromium prebuilts are broken. We pull from AOSP
instead. -->
<project path="external/chromium-webview"
name="platform/external/chromium-webview"
remote="aosp" revision="pie-qpr3-s1-release" />
<remove-project name="LineageOS/android_external_chromium-webview_prebuilt_arm" />
<remove-project name="LineageOS/android_external_chromium-webview_prebuilt_arm64" />
<remove-project name="LineageOS/android_external_chromium-webview_prebuilt_x86" />
<remove-project name="LineageOS/android_external_chromium-webview_prebuilt_x86_64" />
</manifest>
+1
View File
@@ -13,6 +13,7 @@ let
curl
flex
git
git-lfs
gitRepo
gnumake
gnupg