diff --git a/utils/gddrescue/Makefile b/utils/gddrescue/Makefile new file mode 100644 index 0000000000..230a1feebb --- /dev/null +++ b/utils/gddrescue/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (C) 2018 Lucian Cristian +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=gddrescue +PKG_VERSION:=1.23 +PKG_RELEASE:=1 + +PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.xz +PKG_SOURCE_URL:=http://http.debian.net/debian/pool/main/g/$(PKG_NAME) +PKG_HASH:=5831d7e24070bc700d8f22deaeec56af1149392ce30ae67254096eaf8c9169ab +PKG_MAINTAINER:=Lucian Cristian + +PKG_LICENSE:=GPL-2.0 +PKG_LICENSE_FILES:=LICENSE + +PKG_INSTALL:=1 +PKG_BUILD_PARALLEL:=1 + +include $(INCLUDE_DIR)/uclibc++.mk +include $(INCLUDE_DIR)/package.mk + +define Package/gddrescue + SECTION:=utils + CATEGORY:=Utilities + TITLE:=Data recovery tool + URL:=https://www.gnu.org/software/ddrescue/ + DEPENDS:=$(CXX_DEPENDS) +endef + +define Package/gddrescue/description + GNU ddrescue is a data recovery tool. It copies data from one file + or block device (hard disc, cdrom, etc) to another, trying to rescue + the good parts first in case of read errors. +endef + +CONFIGURE_ARGS += \ + CXX="$(TARGET_CXX)" \ + CPPFLAGS="$(TARGET_CPPFLAGS)" \ + CXXFLAGS="$(TARGET_CXXFLAGS)" \ + LDFLAGS="$(TARGET_LDFLAGS)" + +define Package/gddrescue/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ddrescue $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/ddrescuelog $(1)/usr/sbin/ +endef + +$(eval $(call BuildPackage,gddrescue)) diff --git a/utils/gddrescue/patches/001-fix_uclibc.patch b/utils/gddrescue/patches/001-fix_uclibc.patch new file mode 100644 index 0000000000..05113a82cc --- /dev/null +++ b/utils/gddrescue/patches/001-fix_uclibc.patch @@ -0,0 +1,28 @@ +--- a/block.h ++++ b/block.h +@@ -34,6 +34,7 @@ class Block + { if( size_ < 0 || size_ > LLONG_MAX - pos_ ) size_ = LLONG_MAX - pos_; } + + public: ++ Block() {} // default constructor + Block( const long long p, const long long s ) : pos_( p ), size_( s ) + { if( p < 0 ) { pos_ = 0; if( s > 0 ) size_ -= std::min( s, -p ); } + fix_size(); } +@@ -102,6 +103,7 @@ private: + Status status_; + + public: ++ Sblock() {} // default constructor + Sblock( const Block & b, const Status st ) + : Block( b ), status_( st ) {} + Sblock( const long long p, const long long s, const Status st ) +--- a/mapbook.cc ++++ b/mapbook.cc +@@ -19,6 +19,7 @@ + + #include + #include ++#include + #include + #include + #include \ No newline at end of file