ceph: Modify ceph package so that it compiles and runs fine on nixos

With adding a patch that makes 2 absolute paths into 2 relative paths, ensuring the third-party libraries are available
in the python environment used and wrapping the python tools with wrapPrograms does so that the fixed ceph pkg can
compile and run as intended on NixOS.
This commit is contained in:
Daniel Kuehn 2018-02-24 18:56:25 +01:00
parent 3b512ca185
commit 987cad84ce
2 changed files with 38 additions and 7 deletions

View File

@ -0,0 +1,19 @@
diff -ru ceph/src/key_value_store/kv_flat_btree_async.cc ceph-copy/src/key_value_store/kv_flat_btree_async.cc
--- ceph/src/key_value_store/kv_flat_btree_async.cc 1980-01-02 00:00:00.000000000 +0100
+++ ceph-copy/src/key_value_store/kv_flat_btree_async.cc 2018-02-13 21:49:59.232860487 +0100
@@ -15,13 +15,13 @@
#include "key_value_store/kv_flat_btree_async.h"
#include "key_value_store/kvs_arg_types.h"
#include "include/rados/librados.hpp"
-#include "/usr/include/asm-generic/errno.h"
-#include "/usr/include/asm-generic/errno-base.h"
#include "common/ceph_context.h"
#include "common/Clock.h"
#include "include/types.h"
+#include <asm-generic/errno.h>
+#include <asm-generic/errno-base.h>
#include <string>
#include <iostream>
#include <cassert>

View File

@ -92,6 +92,11 @@ let
ps.cython
ps.setuptools
ps.pip
# Libraries needed by the python tools
ps.Mako
ps.pecan
ps.prettytable
ps.webob
]);
in
@ -103,11 +108,13 @@ stdenv.mkDerivation {
patches = [
# ./ceph-patch-cmake-path.patch
./0001-kv-RocksDBStore-API-break-additional.patch
] ++ optionals stdenv.isLinux [
./0002-fix-absolute-include-path.patch
];
nativeBuildInputs = [
cmake
pkgconfig which git
pkgconfig which git python2Packages.wrapPython
(ensureNewerSourcesHook { year = "1980"; })
];
@ -123,6 +130,7 @@ stdenv.mkDerivation {
optKinetic-cpp-client
];
preConfigure =''
# rip off submodule that interfer with system libs
rm -rf src/boost
@ -149,6 +157,10 @@ stdenv.mkDerivation {
"-DWITH_LIBCEPHFS=OFF"
];
postFixup = ''
wrapPythonPrograms
'';
enableParallelBuilding = true;
outputs = [ "dev" "lib" "out" "doc" ];