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
+