2021-01-02 14:54:39 +01:00
|
|
|
{ depot, pkgs, python3, python3Lib, rustSimpleLib, rustSimple }:
|
2021-01-01 18:55:33 +01:00
|
|
|
|
|
|
|
let
|
2021-01-02 14:54:39 +01:00
|
|
|
run = drv: depot.nix.runExecline.local "run-${drv.name}" {} [
|
|
|
|
"if" [ drv ]
|
|
|
|
"importas" "out" "out"
|
|
|
|
"${pkgs.coreutils}/bin/touch" "$out"
|
|
|
|
];
|
|
|
|
|
|
|
|
pythonTransitiveLib = python3Lib {
|
2021-01-01 20:00:51 +01:00
|
|
|
name = "transitive";
|
|
|
|
} ''
|
|
|
|
def transitive(s):
|
|
|
|
return s + " 1 2 3"
|
|
|
|
'';
|
|
|
|
|
2021-01-02 14:54:39 +01:00
|
|
|
pythonTestLib = python3Lib {
|
2021-01-01 18:55:33 +01:00
|
|
|
name = "test_lib";
|
2021-01-02 14:54:39 +01:00
|
|
|
libraries = _: [ pythonTransitiveLib ];
|
2021-01-01 18:55:33 +01:00
|
|
|
} ''
|
2021-01-01 20:00:51 +01:00
|
|
|
import transitive
|
2021-01-01 18:55:33 +01:00
|
|
|
def test():
|
2021-01-01 20:00:51 +01:00
|
|
|
return transitive.transitive("test")
|
2021-01-01 18:55:33 +01:00
|
|
|
'';
|
|
|
|
|
2021-01-02 14:54:39 +01:00
|
|
|
pythonWithLib = run (python3 {
|
|
|
|
name = "python-with-lib";
|
|
|
|
libraries = _: [ pythonTestLib ];
|
2021-01-01 18:55:33 +01:00
|
|
|
} ''
|
|
|
|
import test_lib
|
|
|
|
|
2021-01-01 20:00:51 +01:00
|
|
|
assert(test_lib.test() == "test 1 2 3")
|
2021-01-02 14:54:39 +01:00
|
|
|
'');
|
|
|
|
|
|
|
|
|
|
|
|
rustTransitiveLib = rustSimpleLib {
|
|
|
|
name = "transitive";
|
|
|
|
} ''
|
|
|
|
pub fn transitive(s: &str) -> String {
|
|
|
|
let mut new = s.to_string();
|
|
|
|
new.push_str(" 1 2 3");
|
|
|
|
new
|
|
|
|
}
|
2021-01-01 18:55:33 +01:00
|
|
|
'';
|
|
|
|
|
2021-01-02 14:54:39 +01:00
|
|
|
rustTestLib = rustSimpleLib {
|
|
|
|
name = "test_lib";
|
|
|
|
dependencies = [ rustTransitiveLib ];
|
|
|
|
} ''
|
|
|
|
extern crate transitive;
|
|
|
|
use transitive::{transitive};
|
|
|
|
pub fn test() -> String {
|
|
|
|
transitive("test")
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
|
|
|
|
rustWithLib = run (rustSimple {
|
|
|
|
name = "rust-with-lib";
|
|
|
|
dependencies = [ rustTestLib ];
|
|
|
|
} ''
|
|
|
|
extern crate test_lib;
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
assert_eq!(test_lib::test(), String::from("test 1 2 3"));
|
|
|
|
}
|
|
|
|
'');
|
|
|
|
|
|
|
|
|
2021-01-01 18:55:33 +01:00
|
|
|
in {
|
|
|
|
inherit
|
2021-01-02 14:54:39 +01:00
|
|
|
pythonWithLib
|
|
|
|
rustTransitiveLib
|
|
|
|
rustWithLib
|
|
|
|
;
|
2021-01-01 18:55:33 +01:00
|
|
|
}
|