Browse Source

gddrescue: Add uClibc-ng support

It turns out, this breaks only when compiling with both uClibc-ng and
uClibc++. If the libc or libc++ gets swapped out, it compiles fine.

libstdcpp is fine because it already undefs these macros. The actual
bug is probably in uClibc-ng but this is a fine workaround.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
lilik-openwrt-22.03
Rosen Penev 5 years ago
parent
commit
d6af6a4d75
No known key found for this signature in database GPG Key ID: 36D31CFA845F0E3B
2 changed files with 104 additions and 2 deletions
  1. +2
    -2
      utils/gddrescue/Makefile
  2. +102
    -0
      utils/gddrescue/patches/010-fix-uclibcxx.patch

+ 2
- 2
utils/gddrescue/Makefile View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=gddrescue PKG_NAME:=gddrescue
PKG_VERSION:=1.23 PKG_VERSION:=1.23
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.xz PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.xz
PKG_SOURCE_URL:=http://http.debian.net/debian/pool/main/g/$(PKG_NAME) PKG_SOURCE_URL:=http://http.debian.net/debian/pool/main/g/$(PKG_NAME)
@ -27,7 +27,7 @@ define Package/gddrescue
CATEGORY:=Utilities CATEGORY:=Utilities
TITLE:=Data recovery tool TITLE:=Data recovery tool
URL:=https://www.gnu.org/software/ddrescue/ URL:=https://www.gnu.org/software/ddrescue/
DEPENDS:=$(CXX_DEPENDS) @!USE_UCLIBC
DEPENDS:=$(CXX_DEPENDS)
endef endef
define Package/gddrescue/description define Package/gddrescue/description


+ 102
- 0
utils/gddrescue/patches/010-fix-uclibcxx.patch View File

@ -0,0 +1,102 @@
--- a/fillbook.cc
+++ b/fillbook.cc
@@ -31,6 +31,9 @@
#include "block.h"
#include "mapbook.h"
+#ifdef __UCLIBCXX_MAJOR__
+#undef fputc
+#endif
// Return values: 1 write error, 0 OK.
//
--- a/genbook.cc
+++ b/genbook.cc
@@ -31,6 +31,9 @@
#include "block.h"
#include "mapbook.h"
+#ifdef __UCLIBCXX_MAJOR__
+#undef fputc
+#endif
const char * format_time( const long t, const bool low_prec )
{
--- a/loggers.cc
+++ b/loggers.cc
@@ -25,6 +25,9 @@
#include "block.h"
#include "loggers.h"
+#ifdef __UCLIBCXX_MAJOR__
+#undef fputc
+#endif
namespace {
--- a/main.cc
+++ b/main.cc
@@ -46,6 +46,11 @@
#include "non_posix.h"
#include "rescuebook.h"
+#ifdef __UCLIBCXX_MAJOR__
+#undef fgetc
+#undef fputc
+#endif
+
#ifndef O_BINARY
#define O_BINARY 0
#endif
--- a/main_common.cc
+++ b/main_common.cc
@@ -15,6 +15,10 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifdef __UCLIBCXX_MAJOR__
+#undef fputc
+#endif
+
int verbosity = 0;
namespace {
--- a/mapbook.cc
+++ b/mapbook.cc
@@ -32,6 +32,10 @@
#include "block.h"
#include "mapbook.h"
+#ifdef __UCLIBCXX_MAJOR__
+#undef fgetc
+#undef fputc
+#endif
namespace {
--- a/mapfile.cc
+++ b/mapfile.cc
@@ -29,6 +29,11 @@
#include "block.h"
+#ifdef __UCLIBCXX_MAJOR__
+#undef fgetc
+#undef ferror
+#undef feof
+#endif
namespace {
--- a/rescuebook.cc
+++ b/rescuebook.cc
@@ -36,6 +36,9 @@
#include "mapbook.h"
#include "rescuebook.h"
+#ifdef __UCLIBCXX_MAJOR__
+#undef fputc
+#endif
namespace {

Loading…
Cancel
Save