Merge tag 'v1.3' into update
erofs-utils: release 1.3
Change-Id: I4623efd3e4246d2acd2b6a1afe785321af8991b5
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..4494013
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,119 @@
+//
+// Copyright (C) 2020 Gao Xiang
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package {
+ default_applicable_licenses: ["external_erofs-utils_license"],
+}
+
+// Added automatically by a large-scale-change that took the approach of
+// 'apply every license found to every target'. While this makes sure we respect
+// every license restriction, it may not be entirely correct.
+//
+// e.g. GPL in an MIT project might only apply to the contrib/ directory.
+//
+// Please consider splitting the single license below into multiple licenses,
+// taking care not to lose any license_kind information, and overriding the
+// default license using the 'licenses: [...]' property on targets as needed.
+//
+// For unused files, consider creating a 'fileGroup' with "//visibility:private"
+// to attach the license to, and including a comment whether the files may be
+// used in the current project.
+// See: http://go/android-license-faq
+license {
+ name: "external_erofs-utils_license",
+ visibility: [":__subpackages__"],
+ license_kinds: [
+ "SPDX-license-identifier-GPL",
+ "SPDX-license-identifier-GPL-2.0",
+ "SPDX-license-identifier-LGPL",
+ ],
+ license_text: [
+ "COPYING",
+ ],
+}
+
+genrule {
+ name: "erofs-utils-version.h",
+ srcs: ["VERSION"],
+ out: ["erofs-utils-version.h"],
+ cmd: "sed -n '1p' $(in) | tr -d '\n' | sed 's/\\(.*\\)/#define PACKAGE_VERSION \"\\1\"/' > $(out)",
+}
+
+cc_defaults {
+ name: "erofs-utils_defaults",
+
+ cflags: [
+ "-Wall",
+ "-Werror",
+ "-Wno-ignored-qualifiers",
+ "-Wno-pointer-arith",
+ "-Wno-unused-parameter",
+ "-include erofs-utils-version.h",
+ "-DHAVE_FALLOCATE",
+ "-DHAVE_LINUX_TYPES_H",
+ "-DHAVE_LIBSELINUX",
+ "-DHAVE_LIBUUID",
+ "-DLZ4_ENABLED",
+ "-DLZ4HC_ENABLED",
+ "-DWITH_ANDROID",
+ ],
+ local_include_dirs: [
+ "include",
+ ],
+ include_dirs: [
+ "external/e2fsprogs/lib/",
+ ],
+ generated_headers: ["erofs-utils-version.h"],
+ shared_libs: [
+ "libcutils",
+ "libext2_uuid",
+ "libselinux",
+ ],
+ static_libs: [
+ "liblz4",
+ ],
+}
+
+cc_binary_host {
+ name: "mkfs.erofs",
+
+ defaults: ["erofs-utils_defaults"],
+
+ srcs: [
+ "lib/*.c",
+ "mkfs/*.c",
+ ],
+
+ target: {
+ darwin: {
+ enabled: false,
+ },
+ },
+}
+
+sh_binary_host {
+ name: "mkerofsimage.sh",
+ src: "mkerofsimage.sh",
+ required: [
+ "img2simg",
+ "mkfs.erofs",
+ ],
+
+ target: {
+ darwin: {
+ enabled: false,
+ },
+ },
+}
diff --git a/LICENSE b/LICENSE
new file mode 120000
index 0000000..d24842f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1 @@
+COPYING
\ No newline at end of file
diff --git a/METADATA b/METADATA
new file mode 100644
index 0000000..c4346bf
--- /dev/null
+++ b/METADATA
@@ -0,0 +1,15 @@
+name: "erofs-utils"
+description: "EROFS Utilities"
+third_party {
+ url {
+ type: GIT
+ value: "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git"
+ }
+ version: "v1.3"
+ license_type: RESTRICTED
+ last_upgrade_date {
+ year: 2021
+ month: 7
+ day: 8
+ }
+}
diff --git a/MODULE_LICENSE_GPL b/MODULE_LICENSE_GPL
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_GPL
diff --git a/mkerofsimage.sh b/mkerofsimage.sh
new file mode 100755
index 0000000..89bf40e
--- /dev/null
+++ b/mkerofsimage.sh
@@ -0,0 +1,111 @@
+#!/bin/bash
+#
+# To call this script, make sure mkfs.erofs is somewhere in PATH
+
+function usage() {
+cat<<EOT
+Usage:
+${0##*/} SRC_DIR OUTPUT_FILE [-s] [-m MOUNT_POINT] [-d PRODUCT_OUT] [-C FS_CONFIG ] [-c FILE_CONTEXTS] [-z COMPRESSOR] [-T TIMESTAMP] [-U UUID]
+EOT
+}
+
+echo "in mkerofsimage.sh PATH=$PATH"
+
+if [ $# -lt 2 ]; then
+ usage
+ exit 1
+fi
+
+SRC_DIR=$1
+if [ ! -d $SRC_DIR ]; then
+ echo "Can not find directory $SRC_DIR!"
+ exit 2
+fi
+OUTPUT_FILE=$2
+shift; shift
+
+SPARSE=false
+if [[ "$1" == "-s" ]]; then
+ SPARSE=true
+ shift;
+fi
+
+MOUNT_POINT=
+if [[ "$1" == "-m" ]]; then
+ MOUNT_POINT=$2
+ shift; shift
+fi
+
+PRODUCT_OUT=
+if [[ "$1" == "-d" ]]; then
+ PRODUCT_OUT=$2
+ shift; shift
+fi
+
+FS_CONFIG=
+if [[ "$1" == "-C" ]]; then
+ FS_CONFIG=$2
+ shift; shift
+fi
+
+FILE_CONTEXTS=
+if [[ "$1" == "-c" ]]; then
+ FILE_CONTEXTS=$2
+ shift; shift
+fi
+
+COMPRESSOR="lz4hc"
+if [[ "$1" == "-z" ]]; then
+ COMPRESSOR=$2
+ shift; shift
+fi
+
+TIMESTAMP=
+if [[ "$1" == "-T" ]]; then
+ TIMESTAMP=$2
+ shift; shift
+fi
+
+UUID=
+if [[ "$1" == "-U" ]]; then
+ UUID=$2
+ shift; shift
+fi
+
+OPT=""
+if [ -n "$MOUNT_POINT" ]; then
+ OPT="$OPT --mount-point $MOUNT_POINT"
+fi
+if [ -n "$PRODUCT_OUT" ]; then
+ OPT="$OPT --product-out $PRODUCT_OUT"
+fi
+if [ -n "$FS_CONFIG" ]; then
+ OPT="$OPT --fs-config-file $FS_CONFIG"
+fi
+if [ -n "$FILE_CONTEXTS" ]; then
+ OPT="$OPT --file-contexts $FILE_CONTEXTS"
+fi
+if [ -n "$TIMESTAMP" ]; then
+ OPT="$OPT -T $TIMESTAMP"
+fi
+if [ -n "$UUID" ]; then
+ OPT="$OPT -U $UUID"
+fi
+
+MAKE_EROFS_CMD="mkfs.erofs -z $COMPRESSOR $OPT $OUTPUT_FILE $SRC_DIR"
+echo $MAKE_EROFS_CMD
+$MAKE_EROFS_CMD
+
+if [ $? -ne 0 ]; then
+ exit 4
+fi
+
+SPARSE_SUFFIX=".sparse"
+if [ "$SPARSE" = true ]; then
+ img2simg $OUTPUT_FILE $OUTPUT_FILE$SPARSE_SUFFIX
+ if [ $? -ne 0 ]; then
+ exit 4
+ fi
+ mv $OUTPUT_FILE$SPARSE_SUFFIX $OUTPUT_FILE
+fi
+