evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / e2 / e2fsprogs / package.nix
blob4d0849b896d0900e29304a1289556abcc3d431f7
1 { lib, stdenv, buildPackages, fetchurl, fetchpatch, pkg-config, libuuid, gettext, texinfo
2 , withFuse ? stdenv.hostPlatform.isLinux, fuse3
3 , shared ? !stdenv.hostPlatform.isStatic
4 , e2fsprogs, runCommand
5 }:
7 stdenv.mkDerivation rec {
8   pname = "e2fsprogs";
9   version = "1.47.1";
11   src = fetchurl {
12     url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
13     hash = "sha256-mvzSAfOUKdLbJJKusT26XnXWzFBoK3MtyjVkO9XwkuM=";
14   };
16   # fuse2fs adds 14mb of dependencies
17   outputs = [ "bin" "dev" "out" "man" "info" ]
18     ++ lib.optionals withFuse [ "fuse2fs" ];
20   depsBuildBuild = [ buildPackages.stdenv.cc ];
21   nativeBuildInputs = [ pkg-config texinfo ];
22   buildInputs = [ libuuid gettext ]
23     ++ lib.optionals withFuse [ fuse3 ];
25   patches = [
26     # Avoid trouble with older systems like NixOS 23.05.
27     # TODO: most likely drop this at some point, e.g. when 23.05 loses support.
28     (fetchurl {
29       name = "mke2fs-avoid-incompatible-features.patch";
30       url = "https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/plain/debian/patches/disable-metadata_csum_seed-and-orphan_file-by-default?h=debian/master&id=3fb3d18baba90e5d48d94f4c0b79b2d271b0c913";
31       hash = "sha256-YD11K4s2bqv0rvzrxtaiodzLp3ztULlOlPUf1XcpxRY=";
32     })
33     (fetchurl {
34       name = "SIZEOF_SIZE_T.patch";
35       url = "https://lore.kernel.org/linux-ext4/20240527074121.2767083-1-hi@alyssa.is/raw";
36       hash = "sha256-QdsvcvBi0mC/4YErqG0UKl94MH0OZpFVTGszNqBe/qw=";
37     })
38     (fetchurl {
39       name = "unused-parameters.patch";
40       url = "https://lore.kernel.org/linux-ext4/20240527091542.4121237-2-hi@alyssa.is/raw";
41       hash = "sha256-pMoqm2eo5zYaTdU+Ppa4+posCVFb2A9S4uo5oApaaqc=";
42     })
43   ];
45   configureFlags =
46     if stdenv.hostPlatform.isLinux then [
47       # It seems that the e2fsprogs is one of the few packages that cannot be
48       # build with shared and static libs.
49       (if shared then "--enable-elf-shlibs" else "--disable-elf-shlibs")
50       "--enable-symlink-install"
51       "--enable-relative-symlinks"
52       "--with-crond-dir=no"
53       # fsck, libblkid, libuuid and uuidd are in util-linux-ng (the "libuuid" dependency)
54       "--disable-fsck"
55       "--disable-libblkid"
56       "--disable-libuuid"
57       "--disable-uuidd"
58     ] else [
59       "--enable-libuuid --disable-e2initrd-helper"
60     ];
62   nativeCheckInputs = [ buildPackages.perl ];
63   doCheck = true;
65   postInstall = ''
66     # avoid cycle between outputs
67     if [ -f $out/lib/${pname}/e2scrub_all_cron ]; then
68       mv $out/lib/${pname}/e2scrub_all_cron $bin/bin/
69     fi
70   '' + lib.optionalString withFuse ''
71     mkdir -p $fuse2fs/bin
72     mv $bin/bin/fuse2fs $fuse2fs/bin/fuse2fs
73   '';
75   enableParallelBuilding = true;
77   passthru.tests = {
78     simple-filesystem = runCommand "e2fsprogs-create-fs" {} ''
79       mkdir -p $out
80       truncate -s10M $out/disc
81       ${e2fsprogs}/bin/mkfs.ext4 $out/disc | tee $out/success
82       ${e2fsprogs}/bin/e2fsck -n $out/disc | tee $out/success
83       [ -e $out/success ]
84     '';
85   };
86   meta = with lib; {
87     homepage = "https://e2fsprogs.sourceforge.net/";
88     changelog = "https://e2fsprogs.sourceforge.net/e2fsprogs-release.html#${version}";
89     description = "Tools for creating and checking ext2/ext3/ext4 filesystems";
90     license = with licenses; [
91       gpl2Plus
92       lgpl2Plus # lib/ext2fs, lib/e2p
93       bsd3      # lib/uuid
94       mit       # lib/et, lib/ss
95     ];
96     platforms = platforms.unix;
97     maintainers = [ ];
98   };