Browse Source

Merge pull request #5909 from lucize/ddrescue

gddrescue: add ddrescue a data recovery tool
lilik-openwrt-22.03
Rosen Penev 5 years ago
committed by GitHub
parent
commit
199f0b5c51
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 79 additions and 0 deletions
  1. +51
    -0
      utils/gddrescue/Makefile
  2. +28
    -0
      utils/gddrescue/patches/001-fix_uclibc.patch

+ 51
- 0
utils/gddrescue/Makefile View File

@ -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 <lucian.cristian@gmail.com>
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))

+ 28
- 0
utils/gddrescue/patches/001-fix_uclibc.patch View File

@ -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 <algorithm>
#include <cerrno>
+#include <cctype>
#include <climits>
#include <cstdio>
#include <cstdlib>

Loading…
Cancel
Save