nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 71 lines 1.5 kB view raw
1{ 2 lib, 3 stdenv, 4 dub, 5 importDubLock, 6 dubSetupHook, 7 dubBuildHook, 8 dubCheckHook, 9 ldc, 10 removeReferencesTo, 11}: 12 13lib.extendMkDerivation { 14 constructDrv = stdenv.mkDerivation; 15 16 excludeDrvArgNames = [ 17 "dubLock" 18 "compiler" 19 ]; 20 21 extendDrvArgs = 22 finalAttrs: 23 { 24 # A lockfile generated by `dub-to-nix` from the source of the package. 25 # Can be either a path to the file, or an attrset already parsed with `lib.importJSON`. 26 dubLock, 27 compiler ? ldc, 28 ... 29 }@args: 30 31 { 32 dubDeps = importDubLock { 33 inherit (finalAttrs) pname version; 34 lock = dubLock; 35 }; 36 37 strictDeps = args.strictDeps or true; 38 39 nativeBuildInputs = args.nativeBuildInputs or [ ] ++ [ 40 dubSetupHook 41 (dubBuildHook.override { inherit dub; }) 42 compiler 43 removeReferencesTo 44 ]; 45 46 configurePhase = '' 47 runHook preConfigure 48 dubFlags+=("--compiler=${lib.getExe compiler}") 49 runHook postConfigure 50 ''; 51 52 doCheck = args.doCheck or false; 53 54 nativeCheckInputs = [ 55 (dubCheckHook.override { inherit dub; }) 56 ]; 57 58 preFixup = '' 59 ${args.preFixup or ""} 60 61 find "$out" -type f -exec remove-references-to -t ${compiler} '{}' + 62 ''; 63 64 disallowedReferences = args.disallowedReferences or [ compiler ]; 65 66 meta = { 67 platforms = dub.meta.platforms; 68 } 69 // args.meta or { }; 70 }; 71}