GZIP="$(command -v gzip)"
# try to use fixed source epoch
-if [ -n "$SOURCE_DATE_EPOCH" ]; then
+if [ -n "$PKG_SOURCE_DATE_EPOCH" ]; then
+ TIMESTAMP=$(date --date="@$PKG_SOURCE_DATE_EPOCH")
+elif [ -n "$SOURCE_DATE_EPOCH" ]; then
TIMESTAMP=$(date --date="@$SOURCE_DATE_EPOCH")
-
-# look up date of last commit
-elif [ -d "$TOPDIR/.git" ]; then
- GIT="$(command -v git)"
- TIMESTAMP=$(cd $TOPDIR; $GIT log -1 -s --format=%ci)
-elif [ -d "$TOPDIR/.svn" ]; then
- SVN="$(command -v svn)"
- TIMESTAMP=$($SVN info "$TOPDIR" | sed -n "s/^Last Changed Date: \(.*\)/\1/p")
else
TIMESTAMP=$(date)
fi
return $PKG_ERROR
}
+resolve_file_mode_id() {
+ local var=$1 type=$2 name=$3 id
+
+ case "$name" in
+ root)
+ id=0
+ ;;
+ *[!0-9]*)
+ id=$(sed -ne "s#^$type $name \\([0-9]\\+\\)\\b.*\$#\\1#p" "$TOPDIR/tmp/.packageusergroup" 2>/dev/null)
+ ;;
+ *)
+ id=$name
+ ;;
+ esac
+
+ export "$var=$id"
+
+ [ -n "$id" ]
+}
+
###
# ipkg-build "main"
###
;;
*)
echo $usage >&2
- exit 1
+ exit 1
;;
esac
exit 1
;;
esac
- path=$(echo "$file_mode" | cut -d ':' -f 1)
- user_group=$(echo "$file_mode" | cut -d ':' -f 2-3)
- mode=$(echo "$file_mode" | cut -d ':' -f 4)
- chown "$user_group" "$pkg_dir/$path"
+ mode=${file_mode##*:}; path=${file_mode%:*}
+ group=${path##*:}; path=${path%:*}
+ user=${path##*:}; path=${path%:*}
+
+ if ! resolve_file_mode_id uid user "$user"; then
+ echo "ERROR: unable to resolve uid of $user" >&2
+ exit 1
+ fi
+
+ if ! resolve_file_mode_id gid group "$group"; then
+ echo "ERROR: unable to resolve gid of $group" >&2
+ exit 1
+ fi
+
+ chown "$uid:$gid" "$pkg_dir/$path"
chmod "$mode" "$pkg_dir/$path"
done
$TAR -X $tmp_dir/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/data.tar.gz