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; };
 | |
| })
 |