diff --git a/Makefile.am b/Makefile.am index e1dec5340d..a7a30abba3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -48,6 +48,7 @@ MODULES = \ distro/packages/bootstrap.scm \ distro/packages/compression.scm \ distro/packages/ed.scm \ + distro/packages/flex.scm \ distro/packages/gawk.scm \ distro/packages/gdbm.scm \ distro/packages/gnupg.scm \ @@ -84,6 +85,7 @@ patchdir = $(pkgdatadir)/patches dist_patch_DATA = \ distro/packages/patches/binutils-ld-new-dtags.patch \ distro/packages/patches/diffutils-gets-undeclared.patch \ + distro/packages/patches/flex-bison-tests.patch \ distro/packages/patches/glibc-no-ld-so-cache.patch \ distro/packages/patches/guile-1.8-cpp-4.5.patch \ distro/packages/patches/guile-default-utf8.patch \ diff --git a/distro/packages/flex.scm b/distro/packages/flex.scm new file mode 100644 index 0000000000..aa4dd00ef5 --- /dev/null +++ b/distro/packages/flex.scm @@ -0,0 +1,58 @@ +;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*- +;;; Copyright (C) 2012 Ludovic Courtès +;;; +;;; This file is part of Guix. +;;; +;;; Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with Guix. If not, see . + +(define-module (distro packages bison) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system gnu) + #:use-module (distro) + #:use-module (distro packages m4) + #:use-module (distro packages bison)) + +(define-public flex + (package + (name "flex") + (version "2.5.37") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/flex/flex-" + version ".tar.bz2")) + (sha256 + (base32 + "0ah5mi4j62b85a9rllv1004mzjb5cd0mn4glvz13p88rpx77pahp")))) + (build-system gnu-build-system) + (arguments + '(#:patches (list (assoc-ref %build-inputs "patch/bison-tests")))) + (inputs `(("patch/bison-tests" ,(search-patch "flex-bison-tests.patch")) + ("bison" ,bison))) + (propagated-inputs `(("m4" ,m4))) + (home-page "http://flex.sourceforge.net/") + (synopsis "A fast lexical analyser generator") + (description + "Flex is a tool for generating scanners. A scanner, sometimes +called a tokenizer, is a program which recognizes lexical patterns in +text. The flex program reads user-specified input files, or its standard +input if no file names are given, for a description of a scanner to +generate. The description is in the form of pairs of regular expressions +and C code, called rules. Flex generates a C source file named, +\"lex.yy.c\", which defines the function yylex(). The file \"lex.yy.c\" +can be compiled and linked to produce an executable. When the executable +is run, it analyzes its input for occurrences of text matching the +regular expressions for each rule. Whenever it finds a match, it +executes the corresponding C code.") + (license "BSD"))) diff --git a/distro/packages/patches/flex-bison-tests.patch b/distro/packages/patches/flex-bison-tests.patch new file mode 100644 index 0000000000..0f372f83bf --- /dev/null +++ b/distro/packages/patches/flex-bison-tests.patch @@ -0,0 +1,24 @@ +The `test-bison-yyl{loc,val}' tests fail with "conflicting types for +'testparse'" because `YYPARSE_PARAM' is undefined; work around that. + +--- flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:01.000000000 +0100 ++++ flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:07.000000000 +0100 +@@ -21,6 +21,7 @@ + * PURPOSE. + */ + ++#define YYPARSE_PARAM scanner + #include "parser.h" + #include "scanner.h" + + +--- flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:42.000000000 +0100 ++++ flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:49.000000000 +0100 +@@ -21,6 +21,7 @@ + * PURPOSE. + */ + ++#define YYPARSE_PARAM scanner + #include "parser.h" + #include "scanner.h" +