diff --git a/pkgs/by-name/tr/truecrack/package.nix b/pkgs/by-name/tr/truecrack/package.nix index 5c952f5ed4096..888ede92cd7d4 100644 --- a/pkgs/by-name/tr/truecrack/package.nix +++ b/pkgs/by-name/tr/truecrack/package.nix @@ -1,15 +1,18 @@ { lib, gccStdenv, + cudaPackages, fetchFromGitLab, - cudatoolkit, config, cudaSupport ? config.cudaSupport, pkg-config, versionCheckHook, }: -gccStdenv.mkDerivation rec { +let + stdenv = if cudaSupport then cudaPackages.backendStdenv else gccStdenv; +in +stdenv.mkDerivation rec { pname = "truecrack"; version = "3.6"; @@ -22,12 +25,14 @@ gccStdenv.mkDerivation rec { patches = [ ./fix-empty-return.patch + ./remove-opencc-options.patch + ./set-cuda-archs.patch ]; configureFlags = ( if cudaSupport then [ - "--with-cuda=${cudatoolkit}" + "--with-cuda=${cudaPackages.cudatoolkit}" ] else [ @@ -40,7 +45,8 @@ gccStdenv.mkDerivation rec { ]; buildInputs = lib.optionals cudaSupport [ - cudatoolkit + cudaPackages.cudatoolkit + cudaPackages.cuda_cudart ]; env.NIX_CFLAGS_COMPILE = toString ([ @@ -61,7 +67,7 @@ gccStdenv.mkDerivation rec { installFlags = [ "prefix=$(out)" ]; - doInstallCheck = true; + doInstallCheck = !cudaSupport; installCheckPhase = '' runHook preInstallCheck @@ -88,7 +94,6 @@ gccStdenv.mkDerivation rec { description = "Brute-force password cracker for TrueCrypt volumes, optimized for Nvidia Cuda technology"; mainProgram = "truecrack"; homepage = "https://gitlab.com/kalilinux/packages/truecrack"; - broken = cudaSupport; license = lib.licenses.gpl3Plus; platforms = lib.platforms.unix; maintainers = with lib.maintainers; [ ethancedwards8 ]; diff --git a/pkgs/by-name/tr/truecrack/remove-opencc-options.patch b/pkgs/by-name/tr/truecrack/remove-opencc-options.patch new file mode 100644 index 0000000000000..e9b2ef6024c75 --- /dev/null +++ b/pkgs/by-name/tr/truecrack/remove-opencc-options.patch @@ -0,0 +1,26 @@ +diff --git a/src/Makefile.am b/src/Makefile.am +index e4cac89..50d9b02 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -56,7 +56,7 @@ $(OBJ_CUDA): + cat Cuda/Sha2.cu >> Cuda.cu + cat Cuda/Whirlpool.cu >> Cuda.cu + +- $(COMPILER) -c Cuda.cu $(CFLAGS) --opencc-options -OPT:Olimit=0 $< -o $@ ++ $(COMPILER) -c Cuda.cu $(CFLAGS) $< -o $@ + + $(OBJS_COMMON): %.o: Common/%.c + $(COMPILER) -c $(CFLAGS) $< -o $@ +diff --git a/src/Makefile.in b/src/Makefile.in +index 86f76ad..7a5c77b 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -435,7 +435,7 @@ $(OBJ_CUDA): + cat Cuda/Sha2.cu >> Cuda.cu + cat Cuda/Whirlpool.cu >> Cuda.cu + +- $(COMPILER) -c Cuda.cu $(CFLAGS) --opencc-options -OPT:Olimit=0 $< -o $@ ++ $(COMPILER) -c Cuda.cu $(CFLAGS) $< -o $@ + + $(OBJS_COMMON): %.o: Common/%.c + $(COMPILER) -c $(CFLAGS) $< -o $@ diff --git a/pkgs/by-name/tr/truecrack/set-cuda-archs.patch b/pkgs/by-name/tr/truecrack/set-cuda-archs.patch new file mode 100644 index 0000000000000..f46980d58db20 --- /dev/null +++ b/pkgs/by-name/tr/truecrack/set-cuda-archs.patch @@ -0,0 +1,32 @@ +diff --git a/src/Makefile.am b/src/Makefile.am +index e4cac89..599b7a3 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -30,10 +30,7 @@ OBJ_CUDA=Cuda.o + CFLAGS += -D_GPU_ + COMPILER=$(NVCC) + # CUDA code generation flags +-GENCODE_SM10= -gencode arch=compute_10,code=sm_10 +-GENCODE_SM20= -gencode arch=compute_20,code=sm_20 +-GENCODE_SM30= -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 +-GENCODE_FLAGS= $(GENCODE_SM10) $(GENCODE_SM20) $(GENCODE_SM30) ++GENCODE_FLAGS= -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_89,code=sm_89 -gencode arch=compute_90,code=sm_90 -gencode arch=compute_90a,code=sm_90a + CFLAGS += $(GENCODE_FLAGS) -ftz=true -use_fast_math + endif + +diff --git a/src/Makefile.in b/src/Makefile.in +index 86f76ad..123255b 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -181,10 +181,7 @@ LFLAGS = -lm -O3 + @ENABLE_CPU_TRUE@COMPILER = $(CC) + @ENABLE_CPU_FALSE@OBJ_CUDA = Cuda.o + # CUDA code generation flags +-@ENABLE_CPU_FALSE@GENCODE_SM10 = -gencode arch=compute_10,code=sm_10 +-@ENABLE_CPU_FALSE@GENCODE_SM20 = -gencode arch=compute_20,code=sm_20 +-@ENABLE_CPU_FALSE@GENCODE_SM30 = -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 +-@ENABLE_CPU_FALSE@GENCODE_FLAGS = $(GENCODE_SM10) $(GENCODE_SM20) $(GENCODE_SM30) ++@ENABLE_CPU_FALSE@GENCODE_FLAGS = -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_89,code=sm_89 -gencode arch=compute_90,code=sm_90 -gencode arch=compute_90a,code=sm_90a + truecrack_SOURCES = + truecrack_CFLAGS = $(CUDA_CFLAGS) + truecrack_LDADD = $(CUDA_LIBS)