summary refs log tree commit diff
path: root/pkgs/development/compilers/tinycc
diff options
context:
space:
mode:
authorJoachim Fasting <joachifm@fastmail.fm>2016-06-03 18:59:09 +0200
committerJoachim Fasting <joachifm@fastmail.fm>2016-06-03 18:59:42 +0200
commitab9acc27f9bd3a2def9d66be5c90290e3facaab9 (patch)
tree5ed88ed3e5eaba67b0f63439b1fe2daed6e06abf /pkgs/development/compilers/tinycc
parent5191294e3db05d016399c350909f025b0796d855 (diff)
downloadnixpkgs-ab9acc27f9bd3a2def9d66be5c90290e3facaab9.tar
nixpkgs-ab9acc27f9bd3a2def9d66be5c90290e3facaab9.tar.gz
nixpkgs-ab9acc27f9bd3a2def9d66be5c90290e3facaab9.tar.bz2
nixpkgs-ab9acc27f9bd3a2def9d66be5c90290e3facaab9.tar.lz
nixpkgs-ab9acc27f9bd3a2def9d66be5c90290e3facaab9.tar.xz
nixpkgs-ab9acc27f9bd3a2def9d66be5c90290e3facaab9.tar.zst
nixpkgs-ab9acc27f9bd3a2def9d66be5c90290e3facaab9.zip
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.
Diffstat (limited to 'pkgs/development/compilers/tinycc')
-rw-r--r--pkgs/development/compilers/tinycc/default.nix78
1 files changed, 44 insertions, 34 deletions
diff --git a/pkgs/development/compilers/tinycc/default.nix b/pkgs/development/compilers/tinycc/default.nix
index 8812a4288ef..147edcb5d48 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";
-
-  #src = fetchurl {
-  #  url = "mirror://savannah/tinycc/${name}.tar.bz2";
-  #  sha256 = "0wbdbdq6090ayw8bxnbikiv989kykff3m5rzbia05hrnwhd707jj";
-  #};
-  src = fetchgit {
-    url = "git://repo.or.cz/tinycc.git";
-    rev = "80343ab7d829c21c65f8f9a14dd20158d028549f";
-    sha256 = "0l2qhlvwya2djjbwxgwvhfa11bscqcw1x8w5dzy7klzns773pv7d";
+  name = "tcc-${version}";
+
+  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 ];
   };
 }