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