typioca: 2.7.0 -> 2.8.0
[NixPkgs.git] / pkgs / test / stdenv / hooks.nix
blobeb1b3f61bda629aaee087370496274345a5ec47e
1 { stdenv, pkgs, lib }:
3 # ordering should match defaultNativeBuildInputs
6   # TODO: add audit-tmpdir
7   compress-man-pages =
8     let
9       manFile = pkgs.writeText "small-man" ''
10         .TH HELLO "1" "May 2022" "hello 2.12.1" "User Commands"
11         .SH NAME
12         hello - friendly greeting program
13       '';
14     in
15     stdenv.mkDerivation {
16       name = "test-compress-man-pages";
17       buildCommand = ''
18         mkdir -p $out/share/man
19         cp ${manFile} $out/share/man/small-man.1
20         compressManPages $out
21         [[ -e $out/share/man/small-man.1.gz ]]
22       '';
23     };
24   make-symlinks-relative = stdenv.mkDerivation {
25     name = "test-make-symlinks-relative";
26     outputs = [ "out" "man" ];
27     buildCommand = ''
28       mkdir -p $out/{bar,baz}
29       mkdir -p $man/share/{x,y}
30       source1="$out/bar/foo"
31       destination1="$out/baz/foo"
32       source2="$man/share/x/file1"
33       destination2="$man/share/y/file2"
34       echo foo > $source1
35       echo foo > $source2
36       ln -s $source1 $destination1
37       ln -s $source2 $destination2
38       echo "symlink before patching: $(readlink $destination1)"
39       echo "symlink before patching: $(readlink $destination2)"
41       _makeSymlinksRelativeInAllOutputs
43       echo "symlink after patching: $(readlink $destination1)"
44       ([[ -e $destination1 ]] && echo "symlink isn't broken") || (echo "symlink is broken" && exit 1)
45       ([[ $(readlink $destination1) == "../bar/foo" ]] && echo "absolute symlink was made relative") || (echo "symlink was not made relative" && exit 1)
46       echo "symlink after patching: $(readlink $destination2)"
47       ([[ -e $destination2 ]] && echo "symlink isn't broken") || (echo "symlink is broken" && exit 1)
48       ([[ $(readlink $destination2) == "../x/file1" ]] && echo "absolute symlink was made relative") || (echo "symlink was not made relative" && exit 1)
49     '';
50   };
51   move-docs = stdenv.mkDerivation {
52     name = "test-move-docs";
53     buildCommand = ''
54       mkdir -p $out/{man,doc,info}
55       touch $out/{man,doc,info}/foo
56       cat $out/{man,doc,info}/foo
58       _moveToShare
60       (cat $out/share/{man,doc,info}/foo 2>/dev/null && echo "man,doc,info were moved") || (echo "man,doc,info were not moved" && exit 1)
61     '';
62   };
63   move-lib64 = stdenv.mkDerivation {
64     name = "test-move-lib64";
65     buildCommand = ''
66       mkdir -p $out/lib64
67       touch $out/lib64/foo
68       cat $out/lib64/foo
70       _moveLib64
72       # check symlink
73       [[ -h $out/lib64 ]]
74       ([[ -e $out/lib64 ]] && echo "symlink isn't broken") || (echo "symlink is broken" && exit 1)
75       [[ -e $out/lib/foo ]]
76     '';
77   };
78   move-sbin = stdenv.mkDerivation {
79     name = "test-move-sbin";
80     buildCommand = ''
81       mkdir -p $out/sbin
82       touch $out/sbin/foo
83       cat $out/sbin/foo
85       _moveSbin
87       # check symlink
88       [[ -h $out/sbin ]]
89       ([[ -e $out/sbin ]] && echo "symlink isn't broken") || (echo "symlink is broken" && exit 1)
90       [[ -e $out/bin/foo ]]
91     '';
92   };
93   # TODO: add multiple-outputs
94   patch-shebangs = import ./patch-shebangs.nix { inherit stdenv lib pkgs; };
95   prune-libtool-files =
96     let
97       libFoo = pkgs.writeText "libFoo" ''
98         # Generated by libtool (GNU libtool) 2.4.6
99         old_library='''
100         dependency_libs=' -Lbar.la -Lbaz.la'
101       '';
102     in
103     stdenv.mkDerivation {
104       name = "test-prune-libtool-files";
105       buildCommand = ''
106         mkdir -p $out/lib
107         cp ${libFoo} $out/lib/libFoo.la
108         _pruneLibtoolFiles
109         grep "^dependency_libs=''' #pruned" $out/lib/libFoo.la
110         # confirm file doesn't only contain the above
111         grep "^old_library='''" $out/lib/libFoo.la
112       '';
113     };
114   reproducible-builds = stdenv.mkDerivation {
115     name = "test-reproducible-builds";
116     buildCommand = ''
117       # can't be tested more precisely because the value of random-seed changes depending on the output
118       [[ $NIX_CFLAGS_COMPILE =~ "-frandom-seed=" ]]
119       touch $out
120     '';
121   };
122   set-source-date-epoch-to-latest = stdenv.mkDerivation {
123     name = "test-set-source-date-epoch-to-latest";
124     buildCommand = ''
125       sourceRoot=$NIX_BUILD_TOP/source
126       mkdir -p $sourceRoot
127       touch --date=1/1/2015 $sourceRoot/foo
129       _updateSourceDateEpochFromSourceRoot
131       [[ $SOURCE_DATE_EPOCH == "1420070400" ]]
132       touch $out
133     '';
134   };
135   # TODO: add strip