]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
libarchive & contrib: Build as static binary for the Android recovery 2805/head
authorAlfred Neumayer <dev.beidl@gmail.com>
Thu, 27 Nov 2025 04:10:33 +0000 (05:10 +0100)
committerAlfred Neumayer <dev.beidl@gmail.com>
Thu, 4 Dec 2025 05:34:21 +0000 (06:34 +0100)
Adds a 'bsdtar-recovery' Android build target for use in Android recoveries
as a static binary, and fixes some build failures on the get-go.

Tested on halium-7.1, halium-9.0 & halium-13.0.

Change-Id: I9b656e7016d4bf21517e2edb18f2a7733edc6982

contrib/android/Android.mk
contrib/android/config/android.h
libarchive/archive_read_support_format_cab.c
libarchive/archive_read_support_format_lha.c

index 2e9d9a399ad8b2fa292920a81a181bac84ff279f..20e46a699643aee601806c91cf613842c41d85e6 100644 (file)
@@ -26,6 +26,8 @@ LOCAL_PATH := $(subst /contrib/android,,$(call my-dir))
 libarchive_target_config := contrib/android/config/android.h
 
 libarchive_src_files := libarchive/archive_acl.c \
+                                               libarchive/archive_blake2s_ref.c \
+                                               libarchive/archive_blake2sp_ref.c \
                                                libarchive/archive_check_magic.c \
                                                libarchive/archive_cmdline.c \
                                                libarchive/archive_cryptor.c \
@@ -44,6 +46,7 @@ libarchive_src_files := libarchive/archive_acl.c \
                                                libarchive/archive_parse_date.c \
                                                libarchive/archive_pathmatch.c \
                                                libarchive/archive_ppmd7.c \
+                                               libarchive/archive_ppmd8.c \
                                                libarchive/archive_random.c \
                                                libarchive/archive_rb.c \
                                                libarchive/archive_read.c \
@@ -86,6 +89,7 @@ libarchive_src_files := libarchive/archive_acl.c \
                                                libarchive/archive_read_support_format_lha.c \
                                                libarchive/archive_read_support_format_mtree.c \
                                                libarchive/archive_read_support_format_rar.c \
+                                               libarchive/archive_read_support_format_rar5.c \
                                                libarchive/archive_read_support_format_raw.c \
                                                libarchive/archive_read_support_format_tar.c \
                                                libarchive/archive_read_support_format_warc.c \
@@ -93,6 +97,7 @@ libarchive_src_files := libarchive/archive_acl.c \
                                                libarchive/archive_read_support_format_zip.c \
                                                libarchive/archive_string.c \
                                                libarchive/archive_string_sprintf.c \
+                                               libarchive/archive_time.c \
                                                libarchive/archive_util.c \
                                                libarchive/archive_version_details.c \
                                                libarchive/archive_virtual.c \
@@ -123,7 +128,9 @@ libarchive_src_files := libarchive/archive_acl.c \
                                                libarchive/archive_write_set_format_ar.c \
                                                libarchive/archive_write_set_format_by_name.c \
                                                libarchive/archive_write_set_format_cpio.c \
+                                               libarchive/archive_write_set_format_cpio_binary.c \
                                                libarchive/archive_write_set_format_cpio_newc.c \
+                                               libarchive/archive_write_set_format_cpio_odc.c \
                                                libarchive/archive_write_set_format_iso9660.c \
                                                libarchive/archive_write_set_format_mtree.c \
                                                libarchive/archive_write_set_format_pax.c \
@@ -305,4 +312,17 @@ LOCAL_SRC_FILES := $(bsdcat_src_files)
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/libarchive $(LOCAL_PATH)/libarchive_fe $(LOCAL_PATH)/contrib/android/include
 include $(BUILD_EXECUTABLE)
 
+include $(CLEAR_VARS)
+LOCAL_MODULE := bsdtar-recovery
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_STEM := bsdtar
+LOCAL_CFLAGS :=  -DBSDTAR_VERSION_STRING=ARCHIVE_VERSION_ONLY_STRING -DPLATFORM_CONFIG_H=\"$(libarchive_target_config)\"
+LOCAL_STATIC_LIBRARIES := libarchive libarchive_fe libz
+LOCAL_SRC_FILES := $(bsdtar_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/libarchive $(LOCAL_PATH)/libarchive_fe $(LOCAL_PATH)/contrib/android/include
+LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
+LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
+LOCAL_FORCE_STATIC_EXECUTABLE := true
+include $(BUILD_EXECUTABLE)
+
 endif
index 0a273be235b7444d6469ea389a7f2f82ef43316a..3fd6806d5f1c6a1fb33f1a4d847e294330350dd7 100644 (file)
@@ -26,6 +26,8 @@
 #ifndef ARCHIVE_PLATFORM_H_ANDROID_INCLUDED
 #define        ARCHIVE_PLATFORM_H_ANDROID_INCLUDED
 
+#define __LIBARCHIVE_CONFIG_H_INCLUDED 1
+
 #include <android/api-level.h>
 #ifdef __ANDROID_API__
 #if __ANDROID_API__ > 20
@@ -40,8 +42,8 @@
 
 #define HAVE_CHOWN 1
 #define HAVE_CHROOT 1
-#define HAVE_CLOSEFROM 1
-#define HAVE_CLOSE_RANGE 1
+#define HAVE_CLOSEFROM 0
+#define HAVE_CLOSE_RANGE 0
 #define HAVE_CTIME_R 1
 #define HAVE_CTYPE_H 1
 #define HAVE_DECL_EXTATTR_NAMESPACE_USER 0
@@ -55,6 +57,8 @@
 #define HAVE_DECL_UINTMAX_MAX 1
 #define HAVE_DECL_UINT32_MAX 1
 #define HAVE_DECL_UINT64_MAX 1
+#define HAVE_DECL_INT32_MAX 1
+#define HAVE_DECL_INT32_MIN 1
 #define HAVE_DIRENT_H 1
 #define HAVE_DIRFD 1
 #define HAVE_DLFCN_H 1
 #define HAVE_STRING_H 1
 #define HAVE_STRRCHR 1
 #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
-#define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#define HAVE_STRUCT_STAT_ST_MTIME_NSEC 0
 #define HAVE_STRUCT_TM_TM_GMTOFF 1
 #define HAVE_SYMLINK 1
 #define HAVE_SYS_CDEFS_H 1
index a96f7d3139519e6800f4ecf7d11166bdb1e82dd2..63755ef9e579fc6e113825a9b2db41fea0b15872 100644 (file)
@@ -2813,7 +2813,7 @@ lzx_decode_blocks(struct lzx_stream *strm, int last)
                                              lzx_br_bits(&bre, mt_max_bits));
                                        lzx_br_consume(&bre, mt_bitlen[c]);
                                }
-                               if (c > UCHAR_MAX)
+                               if ((unsigned int)c > UCHAR_MAX)
                                        break;
                                /*
                                 * 'c' is exactly literal code.
index abf8b8799636258655c6716b24d6fafbe743d38a..cf6a147abda6c3638fbd6c062c0f976f3989445f 100644 (file)
@@ -2374,7 +2374,7 @@ lzh_decode_blocks(struct lzh_stream *strm, int last)
                                        lzh_br_consume(&bre, lt_bitlen[c]);
                                }
                                blocks_avail--;
-                               if (c > UCHAR_MAX)
+                               if ((unsigned int)c > UCHAR_MAX)
                                        /* Current block is a match data. */
                                        break;
                                /*