include $(INCLUDE_DIR)/feeds.mk
endif
-# invoke ipkg-build with some default options
-IPKG_BUILD:= \
- $(SCRIPT_DIR)/ipkg-build -c -o 0 -g 0
-
IPKG_REMOVE:= \
$(SCRIPT_DIR)/ipkg-remove
endif
$(INSTALL_DIR) $$(PDIR_$(1))
- $(IPKG_BUILD) $$(IDIR_$(1)) $$(PDIR_$(1))
+ $(FAKEROOT) $(SCRIPT_DIR)/ipkg-build -m "$(PKG_FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1))
@[ -f $$(IPKG_$(1)) ]
$(1)-clean:
###
# ipkg-build "main"
###
-ogargs=""
-noclean=0
-usage="Usage: $0 [-c] [-C] [-o owner] [-g group] <pkg_directory> [<destination_directory>]"
-while getopts "cg:ho:v" opt; do
+file_modes=""
+usage="Usage: $0 [-v] [-h] [-m] <pkg_directory> [<destination_directory>]"
+while getopts "hvm:" opt; do
case $opt in
- o ) owner=$OPTARG
- ogargs="--owner=$owner"
- ;;
- g ) group=$OPTARG
- ogargs="$ogargs --group=$group"
- ;;
- c ) ;;
- C ) noclean=1;;
v ) echo $version
exit 0
;;
h ) echo $usage >&2 ;;
+ m ) file_modes=$OPTARG ;;
\? ) echo $usage >&2
esac
done
mkdir $tmp_dir
echo $CONTROL > $tmp_dir/tarX
-# Preserve permissions (-p) when creating data.tar.gz as non-root user
-( cd $pkg_dir && $TAR $ogargs -X $tmp_dir/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/data.tar.gz )
+cd $pkg_dir
+for file_mode in $file_modes; do
+ case $file_mode in
+ /*:*:*:*)
+ ;;
+ *)
+ echo "ERROR: file modes must use absolute path and contain user:group:mode"
+ echo "$file_mode"
+ 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"
+ 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
installed_size=`stat -c "%s" $tmp_dir/data.tar.gz`
sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \
$pkg_dir/$CONTROL/control
-( cd $pkg_dir/$CONTROL && $TAR $ogargs --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/control.tar.gz )
+( cd $pkg_dir/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/control.tar.gz )
rm $tmp_dir/tarX
echo "2.0" > $tmp_dir/debian-binary
pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
rm -f $pkg_file
-( cd $tmp_dir && $TAR $ogargs --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | $GZIP -n - > $pkg_file )
+( cd $tmp_dir && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | $GZIP -n - > $pkg_file )
rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz
rmdir $tmp_dir