Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 333097 - dev-lua/luaevent-prosody fails to build (with libevent-2?)
Summary: dev-lua/luaevent-prosody fails to build (with libevent-2?)
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Dirkjan Ochtman (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: libevent-2-fail
  Show dependency tree
 
Reported: 2010-08-17 00:38 UTC by Diego Elio Pettenò (RETIRED)
Modified: 2011-02-24 03:05 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Build log (luaevent-prosody-0.1.1:20100817-000000.log,2.36 KB, text/plain)
2010-08-17 00:39 UTC, Diego Elio Pettenò (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Diego Elio Pettenò (RETIRED) gentoo-dev 2010-08-17 00:38:21 UTC
Portage 2.1.8.3 (default/linux/x86/10.0, gcc-4.5.1-asneeded, glibc-2.12.1-r0, 2.6.35+ i686)
=================================================================
System uname: Linux-2.6.35+-i686-Quad-Core_AMD_Opteron-tm-_Processor_2350-with-gentoo-2.0.1
Timestamp of tree: Sun, 15 Aug 2010 10:30:01 +0000
ccache version 2.4 [disabled]
app-shells/bash:     4.1_p7
dev-java/java-config: 2.1.11
dev-lang/python:     2.7, 3.1.2-r4
dev-util/ccache:     2.4-r8
dev-util/cmake:      2.8.1-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.6.1-r1
sys-apps/sandbox:    2.2
sys-devel/autoconf:  2.13, 2.67
sys-devel/automake:  1.4_p6-r1, 1.5-r1, 1.6.3-r1, 1.7.9-r2, 1.8.5-r4, 1.9.6-r3, 1.10.3, 1.11.1
sys-devel/binutils:  2.20.1-r1
sys-devel/gcc:       4.5.1
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.10
virtual/os-headers:  2.6.34
ACCEPT_KEYWORDS="x86 ~x86"
ACCEPT_LICENSE="*"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -pipe"
CHOST="i686-pc-linux-gnu"m
CONFIG_PROTECT="/etc /opt/openjms/config /usr/share/X11/xkb /usr/share/bufrtables /usr/share/config /usr/share/qpsmtpd/plugins /var/bind /var/lib/hsqldb /var/phxd /var/spool/torque /var/vpopmail/etc /var/yp/Makefile"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/games/angband/edit/ /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c"
CXXFLAGS="-O2 -pipe"
DISTDIR="/var/cache/distfiles"
FEATURES="assume-digests distlocks fixpackages news parallel-fetch protect-owned sandbox sfperms split-log strict test test-fail-continue unmerge-orphans userfetch userpriv usersandbox"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://gentoo.wheel.sk/"
LANG="en_US.utf8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--hash-style=gnu"
MAKEOPTS="-j14"
PKGDIR="/var/spool/portage/packages"
PORTAGE_COMPRESS=""
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/var/cache/portage/tree-tinderbox"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="acl berkdb bzip2 cli cracklib crypt cups cxx dri fortran gdbm gpm iconv ipv6 java5 java6 modules mudflap mysql ncurses nls nostatic nptl nptlonly openmp pam pcre perl postgres pppd python qt3support readline reflection ruby session spl ssl sysfs tcpd unicode vhosts x86 xorg zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias auth_digest cgi" ELIBC="glibc" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" RUBY_TARGETS="ruby18 jruby ruby19 ree18" USERLAND="GNU" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Comment 1 Diego Elio Pettenò (RETIRED) gentoo-dev 2010-08-17 00:39:24 UTC
Created attachment 243285 [details]
Build log
Comment 2 Anthony Basile gentoo-dev 2011-01-11 20:55:31 UTC
Okay here's what's going on.  libevent-1 's struct bufferevent (defined in /usr/include/event.h) has two members:

       int timeout_read;       /* in seconds */
       int timeout_write;      /* in seconds */

around line 772.  In libevent-2, these were redefined in struct bufferevent (defined in /usr/include/event2/bufferevent_struct.h)

        struct timeval timeout_read;
        struct timeval timeout_write;

around line 101.  The difference is hit by luaevent-prosody in buffer_event.c around lines 208/209 where ev->ev->timeout_read and ev->ev->timeout_write are struct timeval where an int is expected.  Here ev is of type le_bufferevent (defined in luaevent-prosody's buffer_event.h) which is an augmentation on bufferevent, and ev->ev is of type bufferevent.

libevent upstream tells me bufferevent shouldn't even be exposed, but is there "only because it was exposed in previous versions, and some people's code may rely on manipulating it"  as the comment says in bufferevent_struct.h

Diego, any suggestions on how to fix this?  I'll pass the message upstream to luaevent_prosody.
Comment 3 Anthony Basile gentoo-dev 2011-01-11 22:36:43 UTC
> Diego, any suggestions on how to fix this?  I'll pass the message upstream to
> luaevent_prosody.
> 

Let me follow up on that question, I know that changing the lines 

        lua_pushinteger(L, ev->ev->timeout_read);
        lua_pushinteger(L, ev->ev->timeout_write);

to

        lua_pushinteger(L, (ev->ev->timeout_read).tv_sec);
        lua_pushinteger(L, (ev->ev->timeout_write).tv_sec);

would fix it for libevent-2, but then break it for libevent-1.  The question is how should I integrate that into the ebuild and/or build system.

Comment 4 Diego Elio Pettenò (RETIRED) gentoo-dev 2011-01-11 23:35:24 UTC
Messy.

And it doesn't use autotools.

I'd suggest asking luaevent-prosody's upstream what they want to do.
Comment 5 Anthony Basile gentoo-dev 2011-01-17 18:15:36 UTC
(In reply to comment #4)
>
> I'd suggest asking luaevent-prosody's upstream what they want to do.
> 

Okay, let me summarize the situation after rounds of emails, ebuild writing and testing:

luaevent-prosody is a fork of luaevent maintained by Matthew Wild.  He only forked the code to work with prosody.  He and I contacted the maintainer of luaevent (Thomas Harning Jr.) and he merged all of Matt's work into luaevent version 0.3.1.  See his repo:

   http://repo.or.cz/w/luaevent.git

Unlike luaevent-prosody, the main stream luaevent compiles just fine against libevent-2, making only strict use of the API.

Now, Dirkjan only added luaevent-prosody to the tree for a version bump of prosody to 0.7.0, see bug #323999.  But with Matt's fixes in luaevent, prosody works just fine with it rather than the forked version.

Soo.....

My suggestion is that we remove luaevent-prosody from the tree, add luaevent and have prosody 0.7.0 DEPEND on the latter.  Will it work?  I put ebuilds for dev-lua/luaevent and net-im/prosody-0.7.0 on my dev repo and tested on x86.  I'm not a prosody guru, but it seems to be working.

Comments about my solution?

Comment 6 Diego Elio Pettenò (RETIRED) gentoo-dev 2011-01-17 19:33:13 UTC
Given luaevent-prosody is ~arch, I'd second Anthony's solution.
Comment 7 Rafael Martins (RETIRED) gentoo-dev 2011-01-17 19:46:58 UTC
+1
Comment 8 Dirkjan Ochtman (RETIRED) gentoo-dev 2011-01-18 09:53:06 UTC
+1
Comment 9 Anthony Basile gentoo-dev 2011-01-20 21:17:24 UTC
Okay, I committed dev-lua/luaevent to the tree.  I put myself as the first maintainer (hence I'm assigned bugs) because I'm responsible, however, feel free to change that as you see fit.

I haven't p.masked dev-lua/luaevent-prosody for removal, but give me the okay and I'll start that next.
Comment 10 Anthony Basile gentoo-dev 2011-01-21 03:56:38 UTC
(In reply to comment #9)
> 
> I haven't p.masked dev-lua/luaevent-prosody for removal, but give me the okay
> and I'll start that next.
> 

Okay luaevent-prosody is p.masked on the tree and I will remove it in 30 days.
Comment 11 Anthony Basile gentoo-dev 2011-02-24 03:05:32 UTC
>
> Okay luaevent-prosody is p.masked on the tree and I will remove it in 30 days.
> 

Done.  Closing this one.