From c5e9dd9b6872feb2b71f033caba7339fb3468e36 Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Fri, 10 Jan 2020 18:38:07 +0100 Subject: [PATCH] Fix btrfs_shell build The hacks to still use actual system headers for zlib didn't quite work. - Define Z_SOLO, which makes zlib build without any system include - Remove use of std::max and #include from AVLTree - Do not include DebugSupport.h because it uses system headers - Do not include uuid.h and define just what we need Now it's possible to compile the btrfs_shell on Linux. Change-Id: I74a14b5f6804db45ab5a9f582ab493d696376fd3 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2098 Reviewed-by: Adrien Destugues --- headers/private/kernel/util/AVLTreeBase.h | 1 - .../kernel/file_systems/btrfs/BTree.cpp | 2 -- .../file_systems/btrfs/ExtentAllocator.h | 9 ++++++++- .../kernel/file_systems/btrfs/Volume.cpp | 6 +++++- .../file_systems/btrfs/kernel_interface.cpp | 14 +++++++++++-- .../file_systems/btrfs/system_dependencies.h | 20 +++++++++++++------ src/system/kernel/util/AVLTreeBase.cpp | 2 +- .../file_systems/btrfs/btrfs_shell/Jamfile | 1 + 8 files changed, 41 insertions(+), 14 deletions(-) diff --git a/headers/private/kernel/util/AVLTreeBase.h b/headers/private/kernel/util/AVLTreeBase.h index 6e5cfac325..ea9c91de5e 100644 --- a/headers/private/kernel/util/AVLTreeBase.h +++ b/headers/private/kernel/util/AVLTreeBase.h @@ -9,7 +9,6 @@ #ifndef FS_SHELL # include #else -# include # include "fssh_api_wrapper.h" #endif diff --git a/src/add-ons/kernel/file_systems/btrfs/BTree.cpp b/src/add-ons/kernel/file_systems/btrfs/BTree.cpp index f1e6021755..20e8a59d48 100644 --- a/src/add-ons/kernel/file_systems/btrfs/BTree.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/BTree.cpp @@ -12,8 +12,6 @@ #include "BTree.h" #include "Journal.h" -#include - //#define TRACE_BTRFS #ifdef TRACE_BTRFS diff --git a/src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h b/src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h index a660dd360e..f17edefc8b 100644 --- a/src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h +++ b/src/add-ons/kernel/file_systems/btrfs/ExtentAllocator.h @@ -6,10 +6,17 @@ #define EXTENT_ALLOCATOR_H -#include "Volume.h" #include "BTree.h" +#include "Volume.h" +#include "system_dependencies.h" + + +#ifdef FS_SHELL +#define ERROR(x...) TRACE(x) +#else #include +#endif //#define TRACE_BTRFS diff --git a/src/add-ons/kernel/file_systems/btrfs/Volume.cpp b/src/add-ons/kernel/file_systems/btrfs/Volume.cpp index fd180878be..bb82094ebe 100644 --- a/src/add-ons/kernel/file_systems/btrfs/Volume.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/Volume.cpp @@ -16,12 +16,16 @@ #include "CachedBlock.h" #include "Chunk.h" #include "CRCTable.h" -#include "DebugSupport.h" #include "ExtentAllocator.h" #include "Inode.h" #include "Journal.h" #include "Utility.h" +#ifdef FS_SHELL +#define RETURN_ERROR return +#else +#include "DebugSupport.h" +#endif //#define TRACE_BTRFS #ifdef TRACE_BTRFS diff --git a/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp index 6060fb2929..bb2575e531 100644 --- a/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/btrfs/kernel_interface.cpp @@ -12,12 +12,22 @@ #include "AttributeIterator.h" #include "btrfs.h" #include "btrfs_disk_system.h" -#include "DebugSupport.h" #include "DirectoryIterator.h" #include "Inode.h" +#include "system_dependencies.h" #include "Utility.h" +#ifdef FS_SHELL +#define ERROR(x...) TRACE(x) +#define INFORM(x...) TRACE(x) +#define init_debugging() +#define exit_debugging() +#else +#include +#endif + + //#define TRACE_BTRFS #ifdef TRACE_BTRFS # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x) @@ -928,7 +938,7 @@ btrfs_initialize(int fd, partition_id partitionID, const char* name, if (parameters.verbose) { btrfs_super_block super = volume.SuperBlock(); - INFORM(("Disk was initialized successfully.\n")); + INFORM("Disk was initialized successfully.\n"); INFORM("\tlabel: \"%s\"\n", super.label); INFORM("\tblock size: %u bytes\n", (unsigned)super.BlockSize()); INFORM("\tsector size: %u bytes\n", (unsigned)super.SectorSize()); diff --git a/src/add-ons/kernel/file_systems/btrfs/system_dependencies.h b/src/add-ons/kernel/file_systems/btrfs/system_dependencies.h index 826246de27..afd3bcc5e3 100644 --- a/src/add-ons/kernel/file_systems/btrfs/system_dependencies.h +++ b/src/add-ons/kernel/file_systems/btrfs/system_dependencies.h @@ -8,15 +8,23 @@ #ifdef FS_SHELL -// This needs to be included before the fs_shell wrapper -#include - -#include -#include - #include "fssh_api_wrapper.h" #include "fssh_auto_deleter.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +typedef unsigned char uuid_t[16]; + +void uuid_generate(uuid_t out); +#ifdef __cplusplus +} +#endif + + #else // !FS_SHELL #include diff --git a/src/system/kernel/util/AVLTreeBase.cpp b/src/system/kernel/util/AVLTreeBase.cpp index af473e800b..e218353aab 100644 --- a/src/system/kernel/util/AVLTreeBase.cpp +++ b/src/system/kernel/util/AVLTreeBase.cpp @@ -629,5 +629,5 @@ AVLTreeBase::_CheckTree(AVLTreeNode* parent, AVLTreeNode* node, } _nodeCount = leftNodeCount + rightNodeCount + 1; - return std::max(leftDepth, rightDepth) + 1; + return max_c(leftDepth, rightDepth) + 1; } diff --git a/src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Jamfile b/src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Jamfile index 12f7642870..2b1f37f5e9 100644 --- a/src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Jamfile +++ b/src/tests/add-ons/kernel/file_systems/btrfs/btrfs_shell/Jamfile @@ -9,6 +9,7 @@ DEFINES += HAIKU_BUILD_COMPATIBILITY_H ; { local defines = FS_SHELL + Z_SOLO # prevent inclusion of system headers from zlib.h TRACE_BTRFS # ENABLE DEBUGGING USER=1 ;