Skip to content

Commit

Permalink
libaal: fix build with glibc 2.26
Browse files Browse the repository at this point in the history
I have extracted this patch by Jan Engelhardt from [1] because I have not found
any direct or persistent link to it.

[1] http://tube.opensuse.org/repositories/filesystems/SLE_11_SP4/src/libaal-1.0.6-107.1.src.rpm

Tracking issue: #31696
  • Loading branch information
orivej committed Nov 16, 2017
1 parent 5018c27 commit 3835526
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 0 deletions.
4 changes: 4 additions & 0 deletions pkgs/development/libraries/libaal/default.nix
Expand Up @@ -9,10 +9,14 @@ stdenv.mkDerivation rec {
sha256 = "176f2sns6iyxv3h9zyirdinjwi05gdak48zqarhib2s38rvm98di";
};

patches = [ ./libaal-1.0.6-glibc-2.26.patch ];

preInstall = ''
substituteInPlace Makefile --replace ./run-ldconfig true
'';

enableParallelBuilding = true;

meta = {
homepage = http://www.namesys.com/;
description = "Support library for Reiser4";
Expand Down
89 changes: 89 additions & 0 deletions pkgs/development/libraries/libaal/libaal-1.0.6-glibc-2.26.patch
@@ -0,0 +1,89 @@
Date: 2017-09-02 13:03:15.353403096 +0200
From: Jan Engelhardt <jengelh@inai.de>

Stop redefining libc definitions that cause build failures under glibc-2.26.

[ 46s] In file included from /usr/include/sys/types.h:156:0,
[ 46s] from /usr/include/stdlib.h:279,
[ 46s] from malloc.c:15:
[ 46s] /usr/include/bits/stdint-intn.h:27:19: error: conflicting types for 'int64_t'
[ 46s] typedef __int64_t int64_t;
[ 46s] ^~~~~~~
[ 46s] In file included from ../include/aal/libaal.h:17:0,
[ 46s] from malloc.c:6:
[ 46s] ../include/aal/types.h:35:33: note: previous declaration of 'int64_t' was here
[ 46s] typedef long long int int64_t;


---
include/aal/types.h | 48 ++----------------------------------------------
1 file changed, 2 insertions(+), 46 deletions(-)

Index: libaal-1.0.6/include/aal/types.h
===================================================================
--- libaal-1.0.6.orig/include/aal/types.h
+++ libaal-1.0.6/include/aal/types.h
@@ -26,24 +26,7 @@
#undef ESTRUCT
#define ESTRUCT 50

-#ifndef __int8_t_defined
-#define __int8_t_defined
-typedef signed char int8_t;
-typedef short int int16_t;
-typedef int int32_t;
-__extension__
-typedef long long int int64_t;
-#endif
-
-typedef unsigned char uint8_t;
-typedef unsigned short int uint16_t;
-#ifndef __uint32_t_defined
-#define __uint32_t_defined
-typedef unsigned int uint32_t;
-__extension__
-typedef unsigned long long int uint64_t;
-#endif
-
+#include <stdint.h>
#define MAX_UINT8 ((uint8_t)~0)
#define MAX_UINT16 ((uint16_t)~0)
#define MAX_UINT32 ((uint32_t)~0)
@@ -53,36 +36,9 @@ typedef unsigned long long int uint64_t
because we don't want use gcc builtins in minimal mode for achive as small
binary size as possible. */

-#ifndef ENABLE_MINIMAL
# include <stdarg.h>
-#else
-#ifndef _VA_LIST_
-#define _VA_LIST_
-typedef char *va_list;
-#endif
-#undef va_arg
-#undef va_end
-#undef va_start
-
-#define va_end(ap) \
- do {} while(0);
-
-#define va_start(ap, p) \
- (ap = (char *)(&(p)+1))
-
-#define va_arg(ap, type) \
- ((type *)(ap += sizeof(type)))[-1]
-#endif
-
-/* As libaal may be used without any standard headers, we need to declare NULL
- macro here in order to avoid compilation errors. */
-#undef NULL

-#if defined(__cplusplus)
-# define NULL 0
-#else
-# define NULL ((void *)0)
-#endif
+#include <stdio.h>

/* Simple type for direction denoting */
enum aal_dir {

0 comments on commit 3835526

Please sign in to comment.