From f6b228256826c1792d83f6c14e73b3b4e2f2f802 Mon Sep 17 00:00:00 2001 From: Emil Kosz Date: Thu, 23 Jul 2026 16:04:06 +0200 Subject: [PATCH] general: basic repository; patches --- .gitignore | 1 + README.md | 3 -- build.sh | 49 +++++++++++++++++ ...-cflags-suppress-stringop-truncation.patch | 30 +++++++++++ ...002-build-core-fix-ar-absolute-paths.patch | 48 +++++++++++++++++ ...-ARCH_MSM-config-and-defconfig-fixes.patch | 42 +++++++++++++++ ...-add-std-gnu++11-for-nullptr-support.patch | 17 ++++++ ...ore-combo-remove-icf-safe-for-BFD-ld.patch | 18 +++++++ ...onst-pl-fix-deprecated-defined-array.patch | 18 +++++++ ...reat-section-mismatches-as-non-fatal.patch | 19 +++++++ ...IG_OVERRIDE-ordering-and-passthrough.patch | 50 ++++++++++++++++++ shell.nix | 52 +++++++++++++++++++ 12 files changed, 344 insertions(+), 3 deletions(-) create mode 100644 .gitignore delete mode 100644 README.md create mode 100755 build.sh create mode 100644 patches/0001-host-cflags-suppress-stringop-truncation.patch create mode 100644 patches/0002-build-core-fix-ar-absolute-paths.patch create mode 100644 patches/0003-kernel-add-missing-ARCH_MSM-config-and-defconfig-fixes.patch create mode 100644 patches/0004-recovery-add-std-gnu++11-for-nullptr-support.patch create mode 100644 patches/0005-build-core-combo-remove-icf-safe-for-BFD-ld.patch create mode 100644 patches/0006-kernel-timeconst-pl-fix-deprecated-defined-array.patch create mode 100644 patches/0007-scripts-Makefile-modpost-treat-section-mismatches-as-non-fatal.patch create mode 100644 patches/0008-build-core-tasks-kernel-fix-KERNEL_CONFIG_OVERRIDE-ordering-and-passthrough.patch create mode 100644 shell.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..84c048a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/build/ diff --git a/README.md b/README.md deleted file mode 100644 index 1261b06..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# builders_rubenslte - -TWRP/ROM build scripts and NixOS development shell for SM-T365 \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..5cab436 --- /dev/null +++ b/build.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -euo pipefail + +export ALLOW_NINJA_ENV=true +export USE_CCACHE=1 +export LD_LIBRARY_PATH=/usr/lib:/usr/lib32 +export LC_ALL=C +export LANG=C +export LC_CTYPE=C + +# export LOCAL_CFLAGS=-Wno-error + +BUILD_DIR="./build" +PATCH_DIR="./patches" +MANIFEST_URL="https://github.com/minimal-manifest-twrp/platform_manifest_twrp_omni.git" +MANIFEST_BRANCH="twrp-5.1" +DEVICE_TREE_URL="https://git.cfpi-fpsi.eu:8443/rubenslte/twrp_device_samsung_rubenslte" +KERNEL_URL="https://git.cfpi-fpsi.eu:8443/rubenslte/android_kernel_samsung_rubenslte" + +if [ ! -d "${BUILD_DIR}/.repo" ]; then + echo "Creating build directory ${BUILD_DIR} and cloning manifest ${MANIFEST_URL} from branch ${MANIFEST_BRANCH}..." + mkdir -p "${BUILD_DIR}" + cd "${BUILD_DIR}" + repo init --depth 1 -u "${MANIFEST_URL}" -b "${MANIFEST_BRANCH}" +fi + +if [ ! -d "${BUILD_DIR}/device/samsung/rubenslte" ]; then + echo "Cloning device tree..." + git clone "${DEVICE_TREE_URL}" "${BUILD_DIR}/device/samsung/rubenslte" +fi + +if [ ! -d "${BUILD_DIR}/kernel/samsung/rubenslte" ]; then + echo "Cloning kernel source..." + git clone "${KERNEL_URL}" "${BUILD_DIR}/kernel/samsung/rubenslte" +fi + +for patch in "${PATCH_DIR}/*.patch"; do + echo "Applying $(basename "$patch")" + (cd "${BUILD_DIR}" && patch -p1 -N -r- < "$patch" 2>/dev/null || true) +fi + +cd "${BUILD_DIR}" +set +u +source build/envsetup.sh +lunch "omni_rubenslte-userdebug" +set -u +mka recoveryimage + +echo "Build results in ${BUILD_DIR}/out/target/product/rubenslte" diff --git a/patches/0001-host-cflags-suppress-stringop-truncation.patch b/patches/0001-host-cflags-suppress-stringop-truncation.patch new file mode 100644 index 0000000..d711363 --- /dev/null +++ b/patches/0001-host-cflags-suppress-stringop-truncation.patch @@ -0,0 +1,30 @@ +From: rubenslte-builder +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 diff --git a/patches/0002-build-core-fix-ar-absolute-paths.patch b/patches/0002-build-core-fix-ar-absolute-paths.patch new file mode 100644 index 0000000..34e644e --- /dev/null +++ b/patches/0002-build-core-fix-ar-absolute-paths.patch @@ -0,0 +1,48 @@ +From: rubenslte-builder +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 +Use $(abspath ...) for toolchain paths to survive cd in recipe +--- +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 && $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR)) x input.a; \ ++ rm -f $$ldir/input.a; \ ++ $(abspath $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR)) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \ ++ $(PRIVATE_ARFLAGS) $@ $$ldir/*.o + + endef + diff --git a/patches/0003-kernel-add-missing-ARCH_MSM-config-and-defconfig-fixes.patch b/patches/0003-kernel-add-missing-ARCH_MSM-config-and-defconfig-fixes.patch new file mode 100644 index 0000000..b6c9f2b --- /dev/null +++ b/patches/0003-kernel-add-missing-ARCH_MSM-config-and-defconfig-fixes.patch @@ -0,0 +1,42 @@ +From: rubenslte-builder +Date: Wed, 22 Jul 2026 10:30:00 +0200 +Subject: [PATCH 3/8] kernel-add-missing-ARCH_MSM-config-and-defconfig-fixes + +Add ARCH_MSM Kconfig entry and CONFIG_OF/CONFIG_ARCH_MSM to variant defconfig +--- +diff --git a/kernel/samsung/rubenslte/arch/arm/mach-msm/Kconfig b/kernel/samsung/rubenslte/arch/arm/mach-msm/Kconfig +--- a/kernel/samsung/rubenslte/arch/arm/mach-msm/Kconfig ++++ b/kernel/samsung/rubenslte/arch/arm/mach-msm/Kconfig +@@ -1,3 +1,14 @@ ++config ARCH_MSM ++ bool "Qualcomm MSM (Snapdragon)" ++ select ARM_GIC ++ select GENERIC_CLOCKEVENTS ++ select GENERIC_IRQ_CHIP ++ select ARM_HAS_SG_CHAIN ++ select SPARSE_IRQ ++ select MULTI_IRQ_HANDLER ++ select HAVE_SCHED_CLOCK ++ select CLKDEV_LOOKUP ++ + if ARCH_MSM + + menu "MSM SoC Type" +diff --git a/kernel/samsung/rubenslte/arch/arm/configs/msm8926-sec_rubenslte_defconfig b/kernel/samsung/rubenslte/arch/arm/configs/msm8926-sec_rubenslte_defconfig +--- a/kernel/samsung/rubenslte/arch/arm/configs/msm8926-sec_rubenslte_defconfig ++++ b/kernel/samsung/rubenslte/arch/arm/configs/msm8926-sec_rubenslte_defconfig +@@ -1,3 +1,6 @@ ++CONFIG_ARCH_MSM=y ++CONFIG_ARCH_MSM8226=y ++ + #variant defconfig + CONFIG_MACH_RUBENSLTE_OPEN=y + CONFIG_SEC_RUBENS_PROJECT=y +@@ -173,4 +176,6 @@ + CONFIG_CRYPTO_FIPS=y + CONFIG_CRYPTO_SHA512=y + CONFIG_LOG_BUF_SHIFT=18 ++CONFIG_OF=y ++CONFIG_OF_FLATTREE=y + # FIPS Cerified code merge - end +\ Brak znaku nowej linii na końcu pliku diff --git a/patches/0004-recovery-add-std-gnu++11-for-nullptr-support.patch b/patches/0004-recovery-add-std-gnu++11-for-nullptr-support.patch new file mode 100644 index 0000000..fda4d9f --- /dev/null +++ b/patches/0004-recovery-add-std-gnu++11-for-nullptr-support.patch @@ -0,0 +1,17 @@ +From: rubenslte-builder +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 \ diff --git a/patches/0005-build-core-combo-remove-icf-safe-for-BFD-ld.patch b/patches/0005-build-core-combo-remove-icf-safe-for-BFD-ld.patch new file mode 100644 index 0000000..4b3f513 --- /dev/null +++ b/patches/0005-build-core-combo-remove-icf-safe-for-BFD-ld.patch @@ -0,0 +1,18 @@ +From: rubenslte-builder +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 diff --git a/patches/0006-kernel-timeconst-pl-fix-deprecated-defined-array.patch b/patches/0006-kernel-timeconst-pl-fix-deprecated-defined-array.patch new file mode 100644 index 0000000..4f72f80 --- /dev/null +++ b/patches/0006-kernel-timeconst-pl-fix-deprecated-defined-array.patch @@ -0,0 +1,18 @@ +From: rubenslte-builder +Date: Wed, 22 Jul 2026 10:30:00 +0200 +Subject: [PATCH 6/8] kernel-timeconst-pl-fix-deprecated-defined-array + +Fix 'defined(@array)' deprecated warning in Perl 5.22+ by using !@val +--- +diff --git a/kernel/samsung/rubenslte/kernel/timeconst.pl b/kernel/samsung/rubenslte/kernel/timeconst.pl +--- a/kernel/samsung/rubenslte/kernel/timeconst.pl ++++ b/kernel/samsung/rubenslte/kernel/timeconst.pl +@@ -370,7 +370,7 @@ + } + + @val = @{$canned_values{$hz}}; +- if (!defined(@val)) { ++ if (!@val) { + @val = compute_values($hz); + } + output($hz, @val); diff --git a/patches/0007-scripts-Makefile-modpost-treat-section-mismatches-as-non-fatal.patch b/patches/0007-scripts-Makefile-modpost-treat-section-mismatches-as-non-fatal.patch new file mode 100644 index 0000000..5fd76a7 --- /dev/null +++ b/patches/0007-scripts-Makefile-modpost-treat-section-mismatches-as-non-fatal.patch @@ -0,0 +1,19 @@ +From: rubenslte-builder +Date: Wed, 22 Jul 2026 10:30:00 +0200 +Subject: [PATCH 7/8] scripts-Makefile-modpost-treat-section-mismatches-as-non-fatal + +Comment out -E flag in modpost invocation so section mismatches are warnings +not errors +--- +diff --git a/kernel/samsung/rubenslte/scripts/Makefile.modpost b/kernel/samsung/rubenslte/scripts/Makefile.modpost +--- a/kernel/samsung/rubenslte/scripts/Makefile.modpost ++++ b/kernel/samsung/rubenslte/scripts/Makefile.modpost +@@ -80,7 +80,7 @@ + $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \ + $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ + $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \ +- $(if $(CONFIG_NO_ERROR_ON_MISMATCH),,-E) \ ++ # $(if $(CONFIG_NO_ERROR_ON_MISMATCH),,-E) \ + $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) \ + $(if $(cross_build),-c) + diff --git a/patches/0008-build-core-tasks-kernel-fix-KERNEL_CONFIG_OVERRIDE-ordering-and-passthrough.patch b/patches/0008-build-core-tasks-kernel-fix-KERNEL_CONFIG_OVERRIDE-ordering-and-passthrough.patch new file mode 100644 index 0000000..0a4edeb --- /dev/null +++ b/patches/0008-build-core-tasks-kernel-fix-KERNEL_CONFIG_OVERRIDE-ordering-and-passthrough.patch @@ -0,0 +1,50 @@ +From: rubenslte-builder +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 diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..6681b8f --- /dev/null +++ b/shell.nix @@ -0,0 +1,52 @@ +let + pkgs = import (fetchTarball { + # An older nixpkgs version is required for old GCC and C++ + # libraries. + url = "https://github.com/NixOS/nixpkgs/archive/nixos-22.11.tar.gz"; + }) {}; + + fhs = pkgs.buildFHSUserEnv { + name = "android-env"; + + targetPkgs = pkgs: with pkgs; [ + git + gitRepo + gnupg + python2 + curl + procps + openssl + gnumake + nettools + android-tools + jdk8 + schedtool + util-linux + m4 + gperf + perl + libxml2 + zip + unzip + bison + flex + lzop + xz + python3 + ]; + + multiPkgs = pkgs: with pkgs; [ + zlib + ncurses5 + pkgsi686Linux.gcc9 + pkgsi686Linux.libstdcxx5 + ]; + + runScript = "bash"; + profile = "export ANDROID_JAVA_HOME=${pkgs.jdk8.home}"; + }; +in pkgs.stdenv.mkDerivation { + name = "android-env-shell"; + nativeBuildInputs = [ fhs ]; + shellHook = "exec android-env"; +}