From de8d1617da6352748416b5b6317a552ebaad3310 Mon Sep 17 00:00:00 2001 From: Sigmanificient Date: Tue, 7 May 2024 05:22:46 +0200 Subject: [PATCH] cdecl: major modernization refactor cdecl: add homepage and mainProgram cdecl: fix passthru.tests.x86_64-darwin --- pkgs/by-name/cd/cdecl/package.nix | 45 +++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/pkgs/by-name/cd/cdecl/package.nix b/pkgs/by-name/cd/cdecl/package.nix index 5bc045bc0edc..16412a52a370 100644 --- a/pkgs/by-name/cd/cdecl/package.nix +++ b/pkgs/by-name/cd/cdecl/package.nix @@ -1,29 +1,24 @@ { lib, stdenv, - fetchurl, + fetchFromGitHub, bison, flex, readline, ncurses, - gnused, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "cdecl"; version = "2.5"; - src = fetchurl { - url = "https://www.cdecl.org/files/${pname}-blocks-${version}.tar.gz"; - sha256 = "1b7k0ra30hh8mg8fqv0f0yzkaac6lfg6n376drgbpxg4wwml1rly"; - }; - patches = [ ./cdecl-2.5-lex.patch ]; - preBuild = '' - ${gnused}/bin/sed 's/getline/cdecl_getline/g' -i cdecl.c; - makeFlagsArray=(CFLAGS="-DBSD -DUSE_READLINE -std=gnu89" LIBS=-lreadline); - makeFlags="$makeFlags PREFIX=$out BINDIR=$out/bin MANDIR=$out/man1 CATDIR=$out/cat1 CC=$CC"; - mkdir -p $out/bin; - ''; + src = fetchFromGitHub { + owner = "ridiculousfish"; + repo = "cdecl-blocks"; + # github repo has no tag, but the 2.5 version match this commit + rev = "cb130ea7e61df5b6fa1e84f996e3f04e21a0181c"; + hash = "sha256-lErAxTpPIT49QdOpdjM9e3Qyaajzc+iwv27B3XUFUuE="; + }; buildInputs = [ bison @@ -32,10 +27,32 @@ stdenv.mkDerivation rec { ncurses ]; + NIX_CFLAGS_COMPILE = "-DBSD -DUSE_READLINE -std=gnu89"; + NIX_LDFLAGS = "-lreadline"; + + makeFlags = [ + "CC=${stdenv.cc}/bin/cc" # otherwise fails on x86_64-darwin + "PREFIX=${placeholder "out"}" + "BINDIR=${placeholder "out"}/bin" + "MANDIR=${placeholder "out"}/man1" + "CATDIR=${placeholder "out"}/cat1" + ]; + + patches = [ ./cdecl-2.5-lex.patch ]; + prePatch = '' + substituteInPlace cdecl.c --replace 'getline' 'cdecl_getline' + ''; + + preInstall = '' + mkdir -p $out/bin; + ''; + meta = { description = "Translator English -- C/C++ declarations"; + homepage = "https://cdecl.org"; license = lib.licenses.publicDomain; maintainers = with lib.maintainers; [ sigmanificient ]; platforms = lib.platforms.unix; + mainProgram = "cdecl"; }; }