The setup.py of `python-package` contains some path resolution magic to find `libxgboost.so` which is needed for the python API. Unfortunately the code is incompatible with Nix as it isn't compatible with the store-based structure for each package and tries to express the location of the shared object with relative paths. The detection in `setup.py` and `xgboost/libpath.py` has been either removed entirely or patched to link to the proper store path of the `libxgboost` build input. See https://hydra.nixos.org/build/77702715 for further reference.
		
			
				
	
	
		
			31 lines
		
	
	
		
			489 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			489 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ stdenv
 | 
						|
, buildPythonPackage
 | 
						|
, nose
 | 
						|
, scipy
 | 
						|
, xgboost
 | 
						|
, substituteAll
 | 
						|
}:
 | 
						|
 | 
						|
buildPythonPackage rec {
 | 
						|
  pname = "xgboost";
 | 
						|
  inherit (xgboost) version src meta;
 | 
						|
 | 
						|
  patches = [
 | 
						|
    (substituteAll {
 | 
						|
      src = ./lib-path-for-python.patch;
 | 
						|
      libpath = "${xgboost}/lib";
 | 
						|
    })
 | 
						|
  ];
 | 
						|
 | 
						|
  postPatch = "cd python-package";
 | 
						|
 | 
						|
  propagatedBuildInputs = [ scipy ];
 | 
						|
  buildInputs = [ xgboost ];
 | 
						|
  checkInputs = [ nose ];
 | 
						|
 | 
						|
  checkPhase = ''
 | 
						|
    ln -sf ../demo .
 | 
						|
    nosetests ../tests/python
 | 
						|
  '';
 | 
						|
}
 |