From ab9acc27f9bd3a2def9d66be5c90290e3facaab9 Mon Sep 17 00:00:00 2001 From: Joachim Fasting Date: Fri, 3 Jun 2016 18:59:09 +0200 Subject: [PATCH] tinycc: 0.9.27pre-20160328 -> 0.9.27pre-20160525 Also do various refactorings: - Use `fetchFromRepoOrCz` - Use `isGlibc` to check for glibc stdenv - Multiple outputs - Apply PaX marking Also adopt the package. --- pkgs/development/compilers/tinycc/default.nix | 76 +++++++++++-------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/pkgs/development/compilers/tinycc/default.nix b/pkgs/development/compilers/tinycc/default.nix index 8812a4288ef9..147edcb5d48a 100644 --- a/pkgs/development/compilers/tinycc/default.nix +++ b/pkgs/development/compilers/tinycc/default.nix @@ -1,21 +1,27 @@ -{ stdenv, fetchurl, fetchgit, perl, texinfo }: +{ stdenv, fetchFromRepoOrCz, perl, texinfo }: -assert stdenv ? glibc; +assert (stdenv.isGlibc); + +with stdenv.lib; + +let + date = "20160525"; + version = "0.9.27pre-${date}"; + rev = "1ca685f887310b5cbdc415cdfc3a578dbc8d82d8"; + sha256 = "149s847jkg2zdmk09h0cp0q69m8kxxci441zyw8b08fy9b87ayd8"; +in stdenv.mkDerivation rec { - #name = "tcc-0.9.26"; - name = "tcc-git-0.9.27pre-20160328"; + name = "tcc-${version}"; - #src = fetchurl { - # url = "mirror://savannah/tinycc/${name}.tar.bz2"; - # sha256 = "0wbdbdq6090ayw8bxnbikiv989kykff3m5rzbia05hrnwhd707jj"; - #}; - src = fetchgit { - url = "git://repo.or.cz/tinycc.git"; - rev = "80343ab7d829c21c65f8f9a14dd20158d028549f"; - sha256 = "0l2qhlvwya2djjbwxgwvhfa11bscqcw1x8w5dzy7klzns773pv7d"; + src = fetchFromRepoOrCz { + repo = "tinycc"; + inherit rev; + inherit sha256; }; + outputs = [ "dev" "out" "bin" ]; + nativeBuildInputs = [ perl texinfo ]; postPatch = '' @@ -33,37 +39,41 @@ stdenv.mkDerivation rec { doCheck = true; checkTarget = "test"; + postFixup = '' + paxmark m $out/bin/tcc + ''; + meta = { description = "Small, fast, and embeddable C compiler and interpreter"; - longDescription = - '' TinyCC (aka TCC) is a small but hyper fast C compiler. Unlike - other C compilers, it is meant to be self-sufficient: you do not - need an external assembler or linker because TCC does that for - you. + longDescription = '' + TinyCC (aka TCC) is a small but hyper fast C compiler. Unlike + other C compilers, it is meant to be self-sufficient: you do not + need an external assembler or linker because TCC does that for + you. - TCC compiles so fast that even for big projects Makefiles may not - be necessary. + TCC compiles so fast that even for big projects Makefiles may not + be necessary. - TCC not only supports ANSI C, but also most of the new ISO C99 - standard and many GNU C extensions. + TCC not only supports ANSI C, but also most of the new ISO C99 + standard and many GNU C extensions. - TCC can also be used to make C scripts, i.e. pieces of C source - that you run as a Perl or Python script. Compilation is so fast - that your script will be as fast as if it was an executable. + TCC can also be used to make C scripts, i.e. pieces of C source + that you run as a Perl or Python script. Compilation is so fast + that your script will be as fast as if it was an executable. - TCC can also automatically generate memory and bound checks while - allowing all C pointers operations. TCC can do these checks even - if non patched libraries are used. + TCC can also automatically generate memory and bound checks while + allowing all C pointers operations. TCC can do these checks even + if non patched libraries are used. - With libtcc, you can use TCC as a backend for dynamic code - generation. - ''; + With libtcc, you can use TCC as a backend for dynamic code + generation. + ''; homepage = http://www.tinycc.org/; - license = stdenv.lib.licenses.lgpl2Plus; + license = licenses.lgpl2Plus; - platforms = stdenv.lib.platforms.unix; - maintainers = [ ]; + platforms = platforms.unix; + maintainers = [ maintainers.joachifm ]; }; }