summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@gentoo.org>2010-12-16 07:07:00 +0000
committerDiego Elio Pettenò <flameeyes@gentoo.org>2010-12-16 07:07:00 +0000
commit9fce5976641fb70f7aec2a2c9fb5941bf4deac2b (patch)
tree86ca5b69eea1154165198e69cecd7d1ccb6888fd /dev-util
parentamd64 stable - 348269 (diff)
downloadgentoo-2-9fce5976641fb70f7aec2a2c9fb5941bf4deac2b.tar.gz
gentoo-2-9fce5976641fb70f7aec2a2c9fb5941bf4deac2b.tar.bz2
gentoo-2-9fce5976641fb70f7aec2a2c9fb5941bf4deac2b.zip
Revision bump ragel to fix the generated state machines to work with Ruby 1.9. Also fix both the new and old (stable) ebuild to run econf just once, as it was broken when adding prefix support.
(Portage version: 2.2.0_alpha8/cvs/Linux x86_64)
Diffstat (limited to 'dev-util')
-rw-r--r--dev-util/ragel/ChangeLog8
-rw-r--r--dev-util/ragel/files/ragel-6.6-ruby-1.9.2.patch46
-rw-r--r--dev-util/ragel/ragel-6.6-r1.ebuild45
-rw-r--r--dev-util/ragel/ragel-6.6.ebuild5
4 files changed, 100 insertions, 4 deletions
diff --git a/dev-util/ragel/ChangeLog b/dev-util/ragel/ChangeLog
index fb6af8daeabc..1ccce30df720 100644
--- a/dev-util/ragel/ChangeLog
+++ b/dev-util/ragel/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for dev-util/ragel
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-util/ragel/ChangeLog,v 1.43 2010/12/04 15:29:27 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-util/ragel/ChangeLog,v 1.44 2010/12/16 07:06:59 flameeyes Exp $
+
+ 16 Dec 2010; Diego E. Pettenò <flameeyes@gentoo.org>
+ +files/ragel-6.6-ruby-1.9.2.patch:
+ Revision bump ragel to fix the generated state machines to work with Ruby
+ 1.9. Also fix both the new and old (stable) ebuild to run econf just once, as
+ it was broken when adding prefix support.
04 Dec 2010; Fabian Groffen <grobian@gentoo.org> ragel-6.6.ebuild:
Bump to EAPI=3 for Prefix, add Prefix keywords
diff --git a/dev-util/ragel/files/ragel-6.6-ruby-1.9.2.patch b/dev-util/ragel/files/ragel-6.6-ruby-1.9.2.patch
new file mode 100644
index 000000000000..1408c50a46f2
--- /dev/null
+++ b/dev-util/ragel/files/ragel-6.6-ruby-1.9.2.patch
@@ -0,0 +1,46 @@
+From 50dee06311df4d795b1473935da3cbc661835b73 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Diego=20Elio=20Petten=C3=B2?= <flameeyes@gmail.com>
+Date: Thu, 16 Dec 2010 07:44:41 +0100
+Subject: [PATCH] Fix generated code for Ruby 1.9 compatibility.
+
+In Ruby 1.9, the String class no longer works as a C-style array of (8-bit)
+characters, but supports multiple encoding. While it is obviously a task
+for the developer to ensure that the data array passed to the
+Ragel-generated code is in a compatible encoding, this also means that the
+simple dereference is not going to work:
+
+% ruby18 -e 'puts "foo"[0].class'
+Fixnum
+% ruby19 -e 'puts "foo"[0].class'
+String
+
+This is easily fixed by calling the #ord method on the dereferenced data,
+which will provide the ASCII ordinal (or UNICODE codepoint) for the single
+character.
+
+The produced code works correctly both on Ruby 1.8 and 1.9.2.
+---
+ ragel/rubycodegen.cpp | 7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/ragel/rubycodegen.cpp b/ragel/rubycodegen.cpp
+index 5117823..f329587 100644
+--- a/ragel/rubycodegen.cpp
++++ b/ragel/rubycodegen.cpp
+@@ -307,8 +307,11 @@ string RubyCodeGen::GET_KEY()
+ ret << ")";
+ }
+ else {
+- /* Expression for retrieving the key, use simple dereference. */
+- ret << DATA() << "[" << P() << "]";
++ /* Expression for retrieving the key, use dereference
++ * and read ordinal, for compatibility with Ruby
++ * 1.9.
++ */
++ ret << DATA() << "[" << P() << "].ord";
+ }
+ return ret.str();
+ }
+--
+1.7.3.3
+
diff --git a/dev-util/ragel/ragel-6.6-r1.ebuild b/dev-util/ragel/ragel-6.6-r1.ebuild
new file mode 100644
index 000000000000..9f28fd2030b8
--- /dev/null
+++ b/dev-util/ragel/ragel-6.6-r1.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-util/ragel/ragel-6.6-r1.ebuild,v 1.1 2010/12/16 07:06:59 flameeyes Exp $
+
+EAPI="3"
+
+inherit eutils
+
+DESCRIPTION="Compiles finite state machines from regular languages into executable code."
+HOMEPAGE="http://www.complang.org/ragel/"
+SRC_URI="http://www.complang.org/ragel/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~x86-solaris"
+IUSE="vim-syntax"
+
+DEPEND=""
+RDEPEND=""
+
+# We need to get the txl language in Portage to have the tests :(
+RESTRICT=test
+
+src_prepare() {
+ epatch "${FILESDIR}/${P}-ruby-1.9.2.patch"
+}
+
+src_configure() {
+ econf --docdir="${EPREFIX}"/usr/share/doc/${PF} || die "econf failed"
+}
+
+src_test() {
+ cd "${S}"/test
+ ./runtests.in || die
+}
+
+src_install() {
+ emake DESTDIR="${D}" install || die "make install failed"
+ dodoc ChangeLog CREDITS README TODO || die "dodoc failed"
+
+ if use vim-syntax; then
+ insinto /usr/share/vim/vimfiles/syntax
+ doins ragel.vim || die "doins ragel.vim failed"
+ fi
+}
diff --git a/dev-util/ragel/ragel-6.6.ebuild b/dev-util/ragel/ragel-6.6.ebuild
index 4ecc674fde3a..6d45bc69a923 100644
--- a/dev-util/ragel/ragel-6.6.ebuild
+++ b/dev-util/ragel/ragel-6.6.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-util/ragel/ragel-6.6.ebuild,v 1.12 2010/12/04 15:29:27 grobian Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-util/ragel/ragel-6.6.ebuild,v 1.13 2010/12/16 07:06:59 flameeyes Exp $
EAPI="3"
@@ -19,9 +19,8 @@ RDEPEND=""
# We need to get the txl language in Portage to have the tests :(
RESTRICT=test
-src_compile() {
+src_configure() {
econf --docdir="${EPREFIX}"/usr/share/doc/${PF} || die "econf failed"
- emake || die "emake failed"
}
src_test() {