There is no need to use an extraStep, actually, and using derivations reduces noise on CI. Change-Id: I897c3c3f7e0acee8f051fcc01450ff57176726f8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6573 Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ depot, pkgs, lib, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  # Trivial test program that outputs argv[0] and exits
 | 
						|
  prog =
 | 
						|
    depot.nix.buildLisp.program {
 | 
						|
      name = "argv0-test";
 | 
						|
 | 
						|
      srcs = [
 | 
						|
        (pkgs.writeText "argv0-test.lisp" ''
 | 
						|
          (defpackage :argv0-test (:use :common-lisp :uiop) (:export :main))
 | 
						|
          (in-package :argv0-test)
 | 
						|
 | 
						|
          (defun main ()
 | 
						|
            (format t "~A~%" (uiop:argv0)))
 | 
						|
        '')
 | 
						|
      ];
 | 
						|
 | 
						|
      deps = [
 | 
						|
        {
 | 
						|
          sbcl = depot.nix.buildLisp.bundled "uiop";
 | 
						|
          default = depot.nix.buildLisp.bundled "asdf";
 | 
						|
        }
 | 
						|
      ];
 | 
						|
    };
 | 
						|
 | 
						|
  # Extract verify argv[0] output for given buildLisp program
 | 
						|
  checkImplementation = prog:
 | 
						|
    pkgs.runCommand "check-argv0" { } ''
 | 
						|
      set -eux
 | 
						|
 | 
						|
      checkInvocation() {
 | 
						|
        invocation="$1"
 | 
						|
        test "$invocation" = "$("$invocation")"
 | 
						|
      }
 | 
						|
 | 
						|
      checkInvocation "${prog}/bin/argv0-test"
 | 
						|
 | 
						|
      cd ${prog}
 | 
						|
      checkInvocation "./bin/argv0-test"
 | 
						|
 | 
						|
      cd bin
 | 
						|
      checkInvocation ./argv0-test
 | 
						|
 | 
						|
      set +x
 | 
						|
 | 
						|
      touch "$out"
 | 
						|
    '';
 | 
						|
 | 
						|
  inherit (prog.meta.ci) targets;
 | 
						|
in
 | 
						|
 | 
						|
(checkImplementation prog).overrideAttrs (_: {
 | 
						|
  # Wire up a subtarget all (active) non-default implementations
 | 
						|
  passthru = lib.genAttrs targets (name: checkImplementation prog.${name});
 | 
						|
 | 
						|
  meta.ci = { inherit targets; };
 | 
						|
})
 |