From 2b18ccf305d59db465401d42f5bdf4c52692dca3 Mon Sep 17 00:00:00 2001 From: Arie Middelkoop Date: Mon, 9 Apr 2012 09:42:20 +0000 Subject: [PATCH] * Added "easytag", a GUI for organizing id3tags in mp3s. * Updated some ocaml packages. * Updated coccinelle. svn path=/nixpkgs/trunk/; revision=33674 --- pkgs/applications/audio/easytag/default.nix | 22 +++ .../ocaml-modules/menhir/default.nix | 6 +- .../ocaml-modules/pycaml/default.nix | 66 +++---- .../ocaml-modules/sexplib/default.nix | 14 +- .../sexplib/sexp-3.10-compat.patch | 167 ++++++++++++++++++ .../ocaml-modules/typeconv/default.nix | 8 +- .../tools/misc/coccinelle/default.nix | 50 ++---- pkgs/top-level/all-packages.nix | 7 +- 8 files changed, 250 insertions(+), 90 deletions(-) create mode 100644 pkgs/applications/audio/easytag/default.nix create mode 100644 pkgs/development/ocaml-modules/sexplib/sexp-3.10-compat.patch diff --git a/pkgs/applications/audio/easytag/default.nix b/pkgs/applications/audio/easytag/default.nix new file mode 100644 index 000000000000..18a31460987d --- /dev/null +++ b/pkgs/applications/audio/easytag/default.nix @@ -0,0 +1,22 @@ +{ stdenv, fetchurl, pkgconfig, gtk, libid3tag, id3lib, libvorbis, libogg, flac }: + +let + + version = "2.1.7"; + sha256 = "bfed34cbdce96aca299a0db2b531dbc66feb489b911a34f0a9c67f2eb6ee9301"; + +in stdenv.mkDerivation { + name = "easytag-${version}"; + src = fetchurl { + url = "mirror://sourceforge/easytag/easytag-${version}.tar.bz2"; + inherit sha256; + }; + + buildInputs = [ pkgconfig gtk libid3tag id3lib libvorbis libogg flac ]; + + meta = { + description = "an utility for viewing and editing tags for various audio files"; + homepage = http://http://easytag.sourceforge.net/; + license = stdenv.lib.licenses.gpl2; + }; +} \ No newline at end of file diff --git a/pkgs/development/ocaml-modules/menhir/default.nix b/pkgs/development/ocaml-modules/menhir/default.nix index ea706ef511fa..d02516e410a3 100644 --- a/pkgs/development/ocaml-modules/menhir/default.nix +++ b/pkgs/development/ocaml-modules/menhir/default.nix @@ -2,7 +2,7 @@ let ocaml_version = (builtins.parseDrvName ocaml.name).version; - version = "20090505"; + version = "20120123"; in stdenv.mkDerivation { @@ -10,13 +10,11 @@ stdenv.mkDerivation { src = fetchurl { url = "http://pauillac.inria.fr/~fpottier/menhir/menhir-${version}.tar.gz"; - sha256 = "1dsy80wp7k9wbxc89pjzy2izdkk4b72104m9ik747xzy23mssbyx"; + sha256 = "65cd9e4f813c62697c60c344963ca11bd461169f574ba3a866c2691541cb4682"; }; buildInputs = [ocaml findlib]; - configurePhase = "true"; # Skip configure - createFindlibDestdir = true; preBuild = '' diff --git a/pkgs/development/ocaml-modules/pycaml/default.nix b/pkgs/development/ocaml-modules/pycaml/default.nix index b6c0df5ac15b..070bd270b11a 100644 --- a/pkgs/development/ocaml-modules/pycaml/default.nix +++ b/pkgs/development/ocaml-modules/pycaml/default.nix @@ -1,46 +1,46 @@ -{stdenv, fetchurl, ocaml, findlib, python, ocaml_make}: +{stdenv, fetchurl, ocaml, findlib, ncurses, python, ocaml_make}: -# The actual version of pycaml is unclear, as it is the original -# 0.82 version with some patches applied in order to use it for -# the kompostilo type setter (see README). Apparently, some of -# the patches provide Python 3.1 support. -# This version also differs from the Debian version, which -# is also a heavily patched 0.82. -# Therefore, we may at some point try to find out what is -# actually the "real" version (if the library is still alive). +# This is the original pycaml version with patches from debian. -stdenv.mkDerivation { - name = "pycaml-0.82"; +let debian = fetchurl { + url = "mirror://debian/pool/main/p/pycaml/pycaml_0.82-14.debian.tar.gz"; + sha256 = "a763088ec1fa76c769bf586ed6692e7ac035b0a2bfd48a90a8e7a9539ec0c2f1"; + }; - src = fetchurl { - name = "pycaml.tar.gz"; - url = "http://github.com/chemoelectric/pycaml/tarball/master"; - sha256 = "ff6d863c42b4ef798f50ff5eff77b47b77b5c0d28b6f65364e8a436a216dc591"; - }; +in stdenv.mkDerivation { + name = "pycaml-0.82-14"; - buildInputs = [ocaml findlib python ocaml_make]; + srcs = [ + (fetchurl { + url = "mirror://debian/pool/main/p/pycaml/pycaml_0.82.orig.tar.gz"; + sha256 = "d57be559c8d586c575717d47817986bbdbcebe2ffd16ad6b291525c62868babe"; + }) + (fetchurl { + url = "mirror://debian/pool/main/p/pycaml/pycaml_0.82-14.debian.tar.gz"; + sha256 = "a763088ec1fa76c769bf586ed6692e7ac035b0a2bfd48a90a8e7a9539ec0c2f1"; + }) + ]; + + postPatch = '' + rm -f Makefile* configure* + cp ../debian/META ../debian/Makefile . + sed -i "Makefile" -e's|/usr/share/ocamlmakefile/OCamlMakefile|${ocaml_make}/include/OCamlMakefile|g' + ''; + + sourceRoot = "pycaml"; + patches = [ "../debian/patches/*.patch" ]; + + buildInputs = [ ncurses ocaml findlib python ocaml_make ]; createFindlibDestdir = true; - phases = [ "unpackPhase" "patchPhase" "buildPhase" "installPhase" ]; - - # fix some paths to the appropriate store paths. - patchPhase = '' - sed -i "Makefile" -e's|/usr/include/OCamlMakefile|${ocaml_make}/include/OCamlMakefile|g' - sed -i "Makefile" -e's|/usr|${python}|g' - ''; - - buildPhase = '' - make -f Makefile -j1 PYVER=`python -c 'import sys; print("{0}.{1}".format(sys.version_info.major, sys.version_info.minor));'` - ''; - # the Makefile is not shipped with an install target, hence we do it ourselves. installPhase = '' ocamlfind install pycaml \ - dllpycaml_stubs.so* libpycaml_stubs.a pycaml.a pycaml.cma \ - pycaml.cmi pycaml.cmo pycaml.cmx pycaml.cmxa pycaml.ml pycaml.mli \ - pycaml.o pycaml_stubs.c pycaml_stubs.h pycaml_stubs.o META - ''; + dllpycaml_stubs.so libpycaml_stubs.a pycaml.a pycaml.cma \ + pycaml.cmi pycaml.cmo pycaml.cmx pycaml.cmxa \ + META + ''; meta = { homepage = "http://github.com/chemoelectric/pycaml"; diff --git a/pkgs/development/ocaml-modules/sexplib/default.nix b/pkgs/development/ocaml-modules/sexplib/default.nix index d2df36ec38d9..d999dc471bdb 100644 --- a/pkgs/development/ocaml-modules/sexplib/default.nix +++ b/pkgs/development/ocaml-modules/sexplib/default.nix @@ -1,22 +1,18 @@ {stdenv, fetchurl, ocaml, findlib, ocaml_typeconv}: -# note: only works with ocaml>3.12 -# use version 5.2.0 if you still want an 3.11 version... - stdenv.mkDerivation { - name = "ocaml-sexplib-7.0.4"; + name = "ocaml-sexplib-7.0.5"; src = fetchurl { - url = "http://forge.ocamlcore.org/frs/download.php/699/sexplib-7.0.4.tar.gz"; - sha256 = "83c6c771f423d91bebc4f57202066358adf3775fb000dd780079f51436045a43"; + url = "http://forge.ocamlcore.org/frs/download.php/832/sexplib-7.0.5.tar.gz"; + sha256 = "b1022da052254581aae51fb634345920364439f715a2c786abcd0b828c2ce697"; }; - buildInputs = [ocaml findlib ocaml_typeconv]; + patches = [ ./sexp-3.10-compat.patch ]; + buildInputs = [ocaml findlib ocaml_typeconv ]; createFindlibDestdir = true; - configurePhase = "true"; - meta = { homepage = "http://forge.ocamlcore.org/projects/sexplib/"; description = "Library for serializing OCaml values to and from S-expressions."; diff --git a/pkgs/development/ocaml-modules/sexplib/sexp-3.10-compat.patch b/pkgs/development/ocaml-modules/sexplib/sexp-3.10-compat.patch new file mode 100644 index 000000000000..45e2abc61864 --- /dev/null +++ b/pkgs/development/ocaml-modules/sexplib/sexp-3.10-compat.patch @@ -0,0 +1,167 @@ +diff -ur orig/sexplib-7.0.5/lib/conv.ml sexplib-7.0.5/lib/conv.ml +--- orig/sexplib-7.0.5/lib/conv.ml 2012-03-20 17:41:54.000000000 +0100 ++++ sexplib-7.0.5/lib/conv.ml 2012-03-26 20:04:58.128032729 +0200 +@@ -665,7 +665,7 @@ + | Parse_error pe -> + let ppos = + match pe.parse_state with +- | `Sexp { parse_pos } | `Annot { parse_pos } -> parse_pos ++ | `Sexp { parse_pos = parse_pos } | `Annot { parse_pos = parse_pos } -> parse_pos + in + List [ + Atom "Sexplib.Sexp.Parse_error"; +diff -ur orig/sexplib-7.0.5/lib/pre_sexp.ml sexplib-7.0.5/lib/pre_sexp.ml +--- orig/sexplib-7.0.5/lib/pre_sexp.ml 2012-03-20 17:41:54.000000000 +0100 ++++ sexplib-7.0.5/lib/pre_sexp.ml 2012-03-26 20:04:58.129032741 +0200 +@@ -172,13 +172,7 @@ + (* Output of S-expressions to file *) + + let save_of_output ?perm output_function file sexp = +- let tmp_name, oc = +- let temp_dir = +- if Filename.is_relative file then "." +- else Filename.dir_sep +- in +- Filename.open_temp_file ~temp_dir file "tmp" +- in ++ let tmp_name, oc = Filename.open_temp_file file "tmp" in + try + output_function oc sexp; + close_out oc; +@@ -316,9 +310,9 @@ + else if text_char < 0 then fail "text_char < 0" + else if global_offset < 0 then fail "global_offset < 0" + else if buf_pos < 0 then fail "buf_pos < 0" +- else { text_line; text_char; global_offset; buf_pos } ++ else { text_line = text_line; text_char = text_char; global_offset = global_offset; buf_pos = buf_pos } + +- let with_buf_pos t buf_pos = { t with buf_pos } ++ let with_buf_pos t buf_pos = { t with buf_pos = buf_pos } + end + + type ('a, 't) parse_result = +@@ -347,11 +341,11 @@ + + exception Parse_error of parse_error + +-let bump_text_line { parse_pos } = ++let bump_text_line { parse_pos = parse_pos } = + parse_pos.Parse_pos.text_line <- parse_pos.Parse_pos.text_line + 1; + parse_pos.Parse_pos.text_char <- 0 + +-let bump_text_pos { parse_pos } = ++let bump_text_pos { parse_pos = parse_pos } = + parse_pos.Parse_pos.text_char <- parse_pos.Parse_pos.text_char + 1 + + let bump_pos_cont state str ~max_pos ~pos cont = +@@ -378,18 +372,18 @@ + parse_pos.Parse_pos.buf_pos <- buf_pos; + parse_pos.Parse_pos.global_offset <- parse_pos.Parse_pos.global_offset + len + +-let mk_parse_pos { parse_pos } buf_pos = ++let mk_parse_pos { parse_pos = parse_pos } buf_pos = + set_parse_pos parse_pos buf_pos; + parse_pos + + let raise_parse_error parse_state location buf_pos err_msg = + begin + match parse_state with +- | `Sexp { parse_pos } | `Annot { parse_pos } -> ++ | `Sexp { parse_pos = parse_pos } | `Annot { parse_pos = parse_pos } -> + set_parse_pos parse_pos buf_pos; + parse_pos.Parse_pos.text_char <- parse_pos.Parse_pos.text_char + 1; + end; +- let parse_error = { location; err_msg; parse_state } in ++ let parse_error = { location = location; err_msg = err_msg; parse_state = parse_state } in + raise (Parse_error parse_error) + + let raise_unexpected_char parse_state location buf_pos c = +@@ -657,7 +651,7 @@ + let max_pos = check_str_bounds "parse" ~pos ~len str in \ + let state = \ + { \ +- parse_pos; \ ++ parse_pos = parse_pos; \ + pstack = INIT_PSTACK; \ + pbuf = Buffer.create 128; \ + } \ +@@ -681,20 +675,20 @@ + + let mk_annot_pos + ({ Parse_pos.text_line = line; text_char = col } as parse_pos) pos = +- { Annot.line; col; offset = get_glob_ofs parse_pos pos } ++ { Annot.line = line; col = col; offset = get_glob_ofs parse_pos pos } + + let mk_annot_pos1 + ({ Parse_pos.text_line = line; text_char = col } as parse_pos) pos = +- { Annot.line; col = col + 1; offset = get_glob_ofs parse_pos pos } ++ { Annot.line = line; col = col + 1; offset = get_glob_ofs parse_pos pos } + +-let add_annot_pos { parse_pos; pstack } pos = ++let add_annot_pos { parse_pos = parse_pos; pstack = pstack } pos = + pstack.Annot.positions <- mk_annot_pos parse_pos pos :: pstack.Annot.positions + +-let add_annot_pos1 { parse_pos; pstack } pos = ++let add_annot_pos1 { parse_pos = parse_pos; pstack = pstack } pos = + pstack.Annot.positions <- + mk_annot_pos1 parse_pos pos :: pstack.Annot.positions + +-let get_annot_range { parse_pos; pstack } pos = ++let get_annot_range { parse_pos = parse_pos; pstack = pstack } pos = + let start_pos = + match pstack.Annot.positions with + | [] -> assert false (* impossible *) +@@ -708,7 +702,7 @@ + offset = get_glob_ofs parse_pos pos; + } + in +- { Annot.start_pos; end_pos } ++ { Annot.start_pos = start_pos; end_pos = end_pos } + + let mk_annot_atom parse_state str pos = + Annot.Atom (get_annot_range parse_state pos, Atom str) +@@ -780,7 +774,7 @@ + let rec loop this_parse ~pos ~len ~is_incomplete = + if len > 0 then + match this_parse ~pos ~len buf with +- | Done (sexp, ({ Parse_pos.buf_pos } as parse_pos)) -> ++ | Done (sexp, ({ Parse_pos.buf_pos = buf_pos } as parse_pos)) -> + rev_sexps_ref := sexp :: !rev_sexps_ref; + let n_parsed = buf_pos - pos in + let this_parse = mk_this_parse ~parse_pos my_parse in +@@ -813,7 +807,7 @@ + + let of_string_bigstring loc this_parse ws_buf get_len get_sub str = + match this_parse str with +- | Done (_, { Parse_pos.buf_pos }) when buf_pos <> get_len str -> ++ | Done (_, { Parse_pos.buf_pos = buf_pos }) when buf_pos <> get_len str -> + let prefix_len = min (get_len str - buf_pos) 20 in + let prefix = get_sub str buf_pos prefix_len in + let msg = +@@ -874,7 +868,7 @@ + failwith (sprintf "Sexplib.Sexp.gen_load_sexp: end of file: %s" file) + else + match this_parse ~pos:0 ~len buf with +- | Done (sexp, ({ Parse_pos.buf_pos } as parse_pos)) ++ | Done (sexp, ({ Parse_pos.buf_pos = buf_pos } as parse_pos)) + when strict -> + let rec strict_loop this_parse ~pos ~len = + match this_parse ~pos ~len buf with +@@ -938,7 +932,7 @@ + + let get_conv_exn ~file ~exc annot_sexp = + let range = get_range annot_sexp in +- let { start_pos = { line; col } } = range in ++ let { start_pos = { line = line; col = col } } = range in + let loc = sprintf "%s:%d:%d" file line col in + Of_sexp_error (Annot.Conv_exn (loc, exc), get_sexp annot_sexp) + end +@@ -1003,7 +997,7 @@ + let sexp = of_string str in + try f sexp + with Of_sexp_error (exc, sub_sexp) -> +- raise (Of_string_conv_exn.E { Of_string_conv_exn.exc; sexp; sub_sexp }) ++ raise (Of_string_conv_exn.E { Of_string_conv_exn.exc = exc; sexp = sexp; sub_sexp = sub_sexp }) + + let of_string_conv_exn str f = gen_of_string_conv_exn of_string str f + let of_bigstring_conv_exn bstr f = gen_of_string_conv_exn of_bigstring bstr f diff --git a/pkgs/development/ocaml-modules/typeconv/default.nix b/pkgs/development/ocaml-modules/typeconv/default.nix index c3ef8dd9856b..299e7729b91e 100644 --- a/pkgs/development/ocaml-modules/typeconv/default.nix +++ b/pkgs/development/ocaml-modules/typeconv/default.nix @@ -3,19 +3,17 @@ # note: works only with ocaml >3.12 stdenv.mkDerivation { - name = "ocaml-typeconv-3.0.4"; + name = "ocaml-typeconv-3.0.5"; src = fetchurl { - url = "http://forge.ocamlcore.org/frs/download.php/697/ocaml-type-conv-3.0.4.tar.gz"; - sha256 = "63b6f2872d29fb4c0b1448343bb5ec0649365126756128049d45a81238b59f12"; + url = "http://forge.ocamlcore.org/frs/download.php/821/type_conv-3.0.5.tar.gz"; + sha256 = "90ac6c401a600a23012a3f513def6f67d4979b11bd551f4d0af78f0f0b479198"; }; buildInputs = [ocaml findlib ]; createFindlibDestdir = true; - configurePhase = "true"; - meta = { homepage = "http://forge.ocamlcore.org/projects/type-conv/"; description = "Support library for OCaml preprocessor type conversions"; diff --git a/pkgs/development/tools/misc/coccinelle/default.nix b/pkgs/development/tools/misc/coccinelle/default.nix index ce3eb9cf5ec6..1d1db3b87ad1 100644 --- a/pkgs/development/tools/misc/coccinelle/default.nix +++ b/pkgs/development/tools/misc/coccinelle/default.nix @@ -1,45 +1,25 @@ -{ fetchurl, stdenv, perl, python, ncurses, makeWrapper -, ocaml, ocamlPackages }: +{ fetchurl, stdenv, python, ncurses, ocamlPackages }: -stdenv.mkDerivation rec { - name = "coccinelle-1.0.0-rc9"; +let + + name = "coccinelle-1.0.0-rc12"; + sha256 = "03b8930a53623ec79dc2486e9b6a569e373958cf46074c5f1d0028c70708498d"; + +in stdenv.mkDerivation { + inherit name; src = fetchurl { url = "http://coccinelle.lip6.fr/distrib/${name}.tgz"; - sha256 = "75d5354e76500b627ccc33b8a929305e5a815ebf08027a8dc094f75ece241697"; + inherit sha256; }; - buildInputs = [ - ocaml ocamlPackages.findlib - ocamlPackages.menhir ocamlPackages.ocaml_batteries - ocamlPackages.ocaml_pcre ocamlPackages.ocaml_sexplib - ocamlPackages.ocaml_extlib ocamlPackages.pycaml - python ncurses makeWrapper perl - ]; + buildInputs = with ocamlPackages; [ + ocaml findlib menhir + ocaml_pcre ocaml_sexplib pycaml + python ncurses + ]; - preConfigure = - '' sed -i "configure" -e's|/usr/bin/perl|${perl}/bin/perl|g' - sed -i "globals/config.ml.in" \ - -e"s|/usr/local/share|$out/share|g" - ''; - - buildPhase = "make depend && make all && make all.opt"; - - # Note: The tests want $out/share/coccinelle/standard.h so they must be run - # after "make install". - doCheck = false; - - postInstall = - '' wrapProgram "$out/bin/spatch" \ - --prefix "LD_LIBRARY_PATH" ":" "$out/lib" \ - --prefix "PYTHONPATH" ":" "$out/share/coccinelle/python" - - wrapProgram "$out/bin/spatch.opt" \ - --prefix "LD_LIBRARY_PATH" ":" "$out/lib" \ - --prefix "PYTHONPATH" ":" "$out/share/coccinelle/python" - - yes | make test - ''; + configureFlagsArray = [ "--enable-release" ]; meta = { description = "Coccinelle, a program to apply C code semantic patches"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1c565bd7b334..0af14654d884 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2968,10 +2968,7 @@ let cmakeWithGui = cmakeCurses.override { useQt4 = true; }; - coccinelle = callPackage ../development/tools/misc/coccinelle { - ocamlPackages = ocamlPackages_3_12_1; - ocaml = ocaml_3_12_1; - }; + coccinelle = callPackage ../development/tools/misc/coccinelle { }; cppi = callPackage ../development/tools/misc/cppi { }; @@ -7112,6 +7109,8 @@ let inherit (xlibs) libX11 xproto; }; + easytag = callPackage ../applications/audio/easytag { }; + mp3info = callPackage ../applications/audio/mp3info { }; mpc123 = callPackage ../applications/audio/mpc123 { };