crazy /usr/lib/event.h (was: Packaging changes for libev in Rawhide)

2013-12-03 Thread Gilles J. Seguin
On Tue, 2013-11-19 at 15:30 +0800, Mathieu Bridon wrote:
 Hi,
 
 I would like to finally fix this bug in Fedora:
   https://bugzilla.redhat.com/show_bug.cgi?id=985610
 
 Basically, our libev package diverges from upstream in two ways:
 
   1. we install the header files in /usr/include/libev/ whereas upstream
  installs them in /usr/include/
   2. we ship a pkgconfig file, which upstream does not want

OMG
i do not know what to say here
/usr/lib/event.h
-1 should -1,000,000,000

:-)
i need a list of peoples making such uninspired suggestions


-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: crazy /usr/lib/event.h (was: Packaging changes for libev in Rawhide)

2013-12-03 Thread Rahul Sundaram
Hi


On Tue, Dec 3, 2013 at 9:47 PM, Gilles J. Seguin  wrote:


 OMG
 i do not know what to say here
 /usr/lib/event.h
 -1 should -1,000,000,000

 :-)
 i need a list of peoples making such uninspired suggestions


Even with a smiley,  you haven't really added anything useful to the
discussion.  -1 or -1 million makes no difference whatsoever.  The
maintainer making the change has listed out his rationale.  If you want to
present yours, feel free to do so (without breaking the thread
unnecessarily).   Anything else is just noise.
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: crazy /usr/lib/event.h (was: Packaging changes for libev in Rawhide)

2013-12-03 Thread Mathieu Bridon
On Tue, 2013-12-03 at 22:13 -0500, Rahul Sundaram wrote:
 Hi

 On Tue, Dec 3, 2013 at 9:47 PM, Gilles J. Seguin  wrote:
 
 OMG
 i do not know what to say here
 /usr/lib/event.h
 -1 should -1,000,000,000
 
 :-)
 i need a list of peoples making such uninspired suggestions
 
 Even with a smiley,  you haven't really added anything useful to the
 discussion.  -1 or -1 million makes no difference whatsoever.  The
 maintainer making the change has listed out his rationale.  If you
 want to present yours, feel free to do so (without breaking the thread
 unnecessarily).   Anything else is just noise.

In addition, I feel it's worth mentioning that nobody in this thread
ever suggested that /usr/lib/event.h would be a good idea... or even an
idea at all.


-- 
Mathieu


-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-25 Thread Michael Schwendt
On Sat, 23 Nov 2013 16:52:38 -0500, Orcan Ogetbil wrote:

 Can we have an event.h file that conditionally (or maybe even
 unconditionally) #includes the appropriate header file from either
 package? Both packages can then use the same event.h file without
 conflicts.

It would also boil down to contacting all API consumers and requesting
them to support that condition in their code. And if they did that, they
could add configure checks instead, to detect  event.h  in alternative
locations. Such as a subdirectory.

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-25 Thread Mathieu Bridon
Hi Michael,

On Wed, 2013-11-20 at 12:17 +0100, Michael Schwendt wrote:
 On Wed, 20 Nov 2013 11:24:34 +0800, Mathieu Bridon wrote:
  I'm really just trying to fix all this mess here, so what do you think
  would be the better solution?
 
 To follow:
 https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries
 
 In the case of the FPC not granting a bundling exception, perhaps they
 would permit building libev and perl-EV from the same src.rpm. The rationale
 for that would be how upstream handles the sources in CVS.

I just opened FPC#369 asking for what the FPC think would be the proper
solution:
https://fedorahosted.org/fpc/ticket/369

Thanks for your feedback, hopefully we can get this fixed soon in
Rawhide. :)


-- 
Mathieu


-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-25 Thread Mathieu Bridon
Hi,

On Tue, 2013-11-19 at 15:30 +0800, Mathieu Bridon wrote:
 My plan is to do the following in Rawhide (the future Fedora 21) :
 
   * Move the headers back to /usr/include, as upstream intended
   * Put the event.h header into a libev-libevent-devel subpackage, and
 make it Conflicts: libevent-devel (this is what Debian did)
   * Drop our pkgconfig file.

I have just done that:
http://koji.fedoraproject.org/koji/buildinfo?buildID=480826

Repeating below the information I had gathered to help maintainers of
libev-using packages adapt their own packages.

I'd be happy to help fix those packages if needed, I just can't do it
myself (except for weighttp) as I'm neither a provenpackager nor a
co-maintainer.

 Here is the list of packages I could find with a build requirement on
 libev:
 
   $ repoquery --enablerepo=\*source --archlist=src --whatrequires 
 'pkgconfig(libev)' libev-devel
   awesome-0:3.5.1-8.fc20.src
   i3-0:4.6-1.fc20.src
   i3lock-0:2.5-2.fc20.src
   libverto-0:0.2.5-3.fc20.src
   ocaml-lwt-0:2.4.2-3.fc20.src
   picviz-0:0.6-12.fc20.src
   rubygem-passenger-0:4.0.18-2.fc20.src
   rubygem-passenger-0:4.0.18-4.fc20.src
   spectrum-0:1.4.8-11.fc20.src
   stud-0:0.3-4.20120814git.fc20.src
   weighttp-0:0.3-5.fc20.src

[... snip ...]

 awesome
 ---
 
 Our package has some downstream patches to require our Fedora-only
 pkgconfig file for libev.
 
 Making it build-require libev-devel instead and dropping this downstream
 patch should be enough.
 
 i3
 --
 
 Nothing should need to be done here.
 
 Upstream checks for libev with pkg-config, but it ignores errors. And
 once I move the libev headers in /usr/include, then they'll be found
 anyway.
 
 i3lock
 --
 
 The spec file calls pkgconfig to find the libev headers.
 
 This should just be removed, and the package should build just fine, as
 intended by upstream.
 
 libverto
 
 
 Upstream itself requires the pkgconfig file for libev.
 
 That's just a terrible idea, as it means libverto won't build on e.g
 Debian, or with the upstream libev.
 
 libverto should be fixed upstream here IMHO.
 
 ocaml-lwt
 -
 
 The package has a patch to make it find the headers int he
 Fedora-specific location.
 
 It should be dropped, and that should be it.
 
 picviz
 --
 The package has a patch to make it find the headers int he
 Fedora-specific location.
 
 It should be dropped, and that should be it.
 
 rubygem-passenger
 -
 
 Upstream hardcodes -I/usr/include/libev in the cflags, which is only
 needed with our current libev package in Fedora, nowhere else.
 
 Anyway, the package should just build without any change once I move the
 libev headers to /usr/include.
 
 spectrum
 
 
 Upstream searches for the ev.h header in various folders, so things
 should continue to work without a change.
 
 stud
 
 
 Our package has a patch to hardcode -I/usr/include/libev in the CFLAGS.
 
 That can be dropped.


-- 
Mathieu

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-25 Thread Mathieu Bridon
On Mon, 2013-11-25 at 10:27 -0500, Nathaniel McCallum wrote:
 - Original Message -
  That's why I said I wouldn't make libev-devel conflict with
  libevent-devel.
  
  I said I would put the event.h header from libev into a
  libev-libevent-devel subpacke, and only this one would conflict with
  libevent-devel.
  
  I presume libverto uses ev.h from libev and event.h from libevent,
  right?
  
  In that case, it would still do that just fine even after I make the
  changes.
 
 I believe that should work. I'm happy to fix the .pc upstream requirement of 
 libverto. This proposal seems sensible to me.

Thanks Nathaniel.

As I mentioned elsewhere, I have just done this in Rawhide.

Basically, the upstream changes for libverto should be trivial:

- libevent installs its event.h header in /usr/include, so you can link
to that directly
- libev installs its ev.h and ev++.h in /usr/include as well, so you can
link directly to that.

And that's pretty much it, there shouldn't be anything for you to do,
except stop requiring the libev pkgconfig file (which I dropped in
Rawhide).

With this change, libverto should then build on all distributions, as we
were (afaik) the only ones shipping a pkgconfig file for libev.

Let me know if I can help.


-- 
Mathieu

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-24 Thread Mathieu Bridon
On Sat, 2013-11-23 at 13:47 -0500, Simo Sorce wrote:
 On Tue, 2013-11-19 at 15:30 +0800, Mathieu Bridon wrote:
  libverto
  
  
  Upstream itself requires the pkgconfig file for libev.
  
  That's just a terrible idea, as it means libverto won't build on e.g
  Debian, or with the upstream libev.
  
  libverto should be fixed upstream here IMHO.
 
 Libverto builds against both libevent and libev being a event loop
 abstraction library, if you make libev and libevent conflict libeverto
 cannot be built anymore.

That's why I said I wouldn't make libev-devel conflict with
libevent-devel.

I said I would put the event.h header from libev into a
libev-libevent-devel subpacke, and only this one would conflict with
libevent-devel.

I presume libverto uses ev.h from libev and event.h from libevent,
right?

In that case, it would still do that just fine even after I make the
changes.


-- 
Mathieu

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-23 Thread Simo Sorce
On Tue, 2013-11-19 at 15:30 +0800, Mathieu Bridon wrote:
 Hi,
 
 I would like to finally fix this bug in Fedora:
   https://bugzilla.redhat.com/show_bug.cgi?id=985610
 
 Basically, our libev package diverges from upstream in two ways:
 
   1. we install the header files in /usr/include/libev/ whereas upstream
  installs them in /usr/include/
   2. we ship a pkgconfig file, which upstream does not want
 
 I'm not happy with these Fedora-specific changes, and upstream is
 completely uninterested in them.
 
 It's confusing users who don't find the headers where they expect them,
 as demonstrated by this bug report.
 
 Worst of all, it's causing changes in software consuming libev, which
 have often had to be modified for the Fedora-specific change in libev.
 Those changes were sometimes made in the respective upstreams, but most
 often in additional Fedora-specific changes.
 
 I've been talking to upstream libev, and they really don't want the
 changes we made. They'd be much happier if we were packaging libev the
 way Debian is, as that's how they intended libev to be used.
 
 So I'd like to follow upstream libev wishes, and stop confusing
 everybody with our Fedora-only changes.
 
 My plan is to do the following in Rawhide (the future Fedora 21) :
 
   * Move the headers back to /usr/include, as upstream intended
   * Put the event.h header into a libev-libevent-devel subpackage, and
 make it Conflicts: libevent-devel (this is what Debian did)
   * Drop our pkgconfig file.
 
 Here is the list of packages I could find with a build requirement on
 libev:
 
   $ repoquery --enablerepo=\*source --archlist=src --whatrequires 
 'pkgconfig(libev)' libev-devel
   awesome-0:3.5.1-8.fc20.src
   i3-0:4.6-1.fc20.src
   i3lock-0:2.5-2.fc20.src
   libverto-0:0.2.5-3.fc20.src
   ocaml-lwt-0:2.4.2-3.fc20.src
   picviz-0:0.6-12.fc20.src
   rubygem-passenger-0:4.0.18-2.fc20.src
   rubygem-passenger-0:4.0.18-4.fc20.src
   spectrum-0:1.4.8-11.fc20.src
   stud-0:0.3-4.20120814git.fc20.src
   weighttp-0:0.3-5.fc20.src
 
 I'll fix weighttp, as it is my package, but I can't do much about the
 other ones.
 
 I'm adding a breakdown of how these packages use libev and what needs to
 be done for them at the end of this email.
 
 Does anybody have any comment, or objection?
 
 Cheers,
 
 
 -- 
 Mathieu
 
 
 
 awesome
 ---
 
 Our package has some downstream patches to require our Fedora-only
 pkgconfig file for libev.
 
 Making it build-require libev-devel instead and dropping this downstream
 patch should be enough.
 
 i3
 --
 
 Nothing should need to be done here.
 
 Upstream checks for libev with pkg-config, but it ignores errors. And
 once I move the libev headers in /usr/include, then they'll be found
 anyway.
 
 i3lock
 --
 
 The spec file calls pkgconfig to find the libev headers.
 
 This should just be removed, and the package should build just fine, as
 intended by upstream.
 
 libverto
 
 
 Upstream itself requires the pkgconfig file for libev.
 
 That's just a terrible idea, as it means libverto won't build on e.g
 Debian, or with the upstream libev.
 
 libverto should be fixed upstream here IMHO.

Libverto builds against both libevent and libev being a event loop
abstraction library, if you make libev and libevent conflict libeverto
cannot be built anymore.

It makes not sense to make libev and libevent conflict, even if just in
development headers.

If upstream can;t see it then the distribution has to deal with it,
which is what has been done with the changes you noted.

Big -1 to revert those changes and breaking libverto in the process for
no good reason whatsoever.

CCed Nathaniel which is libverto's author.

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-23 Thread Matthew Garrett
On Sat, Nov 23, 2013 at 01:47:49PM -0500, Simo Sorce wrote:
 On Tue, 2013-11-19 at 15:30 +0800, Mathieu Bridon wrote:
  Upstream itself requires the pkgconfig file for libev.
  
  That's just a terrible idea, as it means libverto won't build on e.g
  Debian, or with the upstream libev.
  
  libverto should be fixed upstream here IMHO.
 
 Libverto builds against both libevent and libev being a event loop
 abstraction library, if you make libev and libevent conflict libeverto
 cannot be built anymore.

But it requires patches to libev that aren't upstream in order to build? 
One alternative would be to package the libev headers twice, one in the 
upstream location and once in the Fedora-specific location. The latter 
package could then include the pkgconfig file.

This is still a bad solution. If libverto needs to link against both 
then libverto upstream should really work with libev and libevent 
upstream to find a solution that'll work for all distributions, rather 
than being limited to Fedora hacks.

-- 
Matthew Garrett | mj...@srcf.ucam.org
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-23 Thread Orcan Ogetbil
On Tue, Nov 19, 2013 at 7:36 AM, Michael Schwendt  wrote:
 On Tue, 19 Nov 2013 15:30:46 +0800, Mathieu Bridon wrote:
   * Move the headers back to /usr/include, as upstream intended
   * Put the event.h header into a libev-libevent-devel subpackage, and
 make it Conflicts: libevent-devel (this is what Debian did)

 Seems plausible.

 Personally, I don't mind explicitly conflicting -devel packages,
 especially not if they are unlikely to be present in the same buildroot
 (and libev's event.h is a libevent compatibility header).

Can we have an event.h file that conditionally (or maybe even
unconditionally) #includes the appropriate header file from either
package? Both packages can then use the same event.h file without
conflicts.

Best,
Orcan
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-22 Thread Kevin Kofler
Mathieu Bridon wrote:
   * Move the headers back to /usr/include, as upstream intended
   * Put the event.h header into a libev-libevent-devel subpackage, and
 make it Conflicts: libevent-devel (this is what Debian did)

-1

Conflicts are evil, and this pointless conflict is very easily avoided by 
moving the header to a subdirectory as the package now does.

(I actually think that BOTH libev and libevent should use a subdirectory for 
their headers. event.h is a very generic header name that doesn't belong in 
/usr/include at all.)

Upstream needs to comprehend that they cannot just spam their headers 
directly into /usr/include; if they don't, we have no other choice than 
moving them without their consent.

Kevin Kofler

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-22 Thread Tim St Clair
+1 to everything kevin just said. 

Just because other folks are employing bad practices, doesn't mean we should.  
If that means dependent packages need to add an extra -I location, that is a 
far better solution then polluting  causing potential conflicts. 

Cheers,
Tim  

- Original Message -
 From: Kevin Kofler kevin.kof...@chello.at
 To: devel@lists.fedoraproject.org
 Sent: Friday, November 22, 2013 9:06:07 AM
 Subject: Re: Packaging changes for libev in Rawhide
 
 Mathieu Bridon wrote:
* Move the headers back to /usr/include, as upstream intended
* Put the event.h header into a libev-libevent-devel subpackage, and
  make it Conflicts: libevent-devel (this is what Debian did)
 
 -1
 
 Conflicts are evil, and this pointless conflict is very easily avoided by
 moving the header to a subdirectory as the package now does.

+1 

 
 (I actually think that BOTH libev and libevent should use a subdirectory for
 their headers. event.h is a very generic header name that doesn't belong in
 /usr/include at all.)
 

+1

 Upstream needs to comprehend that they cannot just spam their headers
 directly into /usr/include; if they don't, we have no other choice than
 moving them without their consent.
 

+1 

 Kevin Kofler
 
 --
 devel mailing list
 devel@lists.fedoraproject.org
 https://admin.fedoraproject.org/mailman/listinfo/devel
 Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

-- 
Cheers,
Tim
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-22 Thread Mathieu Bridon
On Fri, 2013-11-22 at 16:06 +0100, Kevin Kofler wrote:
 Mathieu Bridon wrote:
* Move the headers back to /usr/include, as upstream intended
* Put the event.h header into a libev-libevent-devel subpackage, and
  make it Conflicts: libevent-devel (this is what Debian did)
 
 -1
 
 Conflicts are evil, and this pointless conflict is very easily avoided by 
 moving the header to a subdirectory as the package now does.
 
 (I actually think that BOTH libev and libevent should use a subdirectory for 
 their headers. event.h is a very generic header name that doesn't belong in 
 /usr/include at all.)
 
 Upstream needs to comprehend that they cannot just spam their headers 
 directly into /usr/include; if they don't, we have no other choice than 
 moving them without their consent.

As said before, I disagree, and I want to get our package back in line
with upstream and other distros.

That being said, there is another possibility: if you feel so strongly
that our current packaging of libev is the way it should be and it
shouldn't change, then please take the package, so I'm not at the
receiving end of users' requests and confusion.

I argued the point with upstream, they refuse it, I don't feel like
arguing more about it.


-- 
Mathieu

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-20 Thread Michael Schwendt
On Wed, 20 Nov 2013 11:24:34 +0800, Mathieu Bridon wrote:

  The current packaging approach is circumventing the packaging policies:
  https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries
  
  perl-EV does not use the system libev. No real unbundling has been
  achieved by replacing the bundled source with another copy at build-time.
  A bug-fix (or security-fix) of libev would not affect perl-EV without
  rebuilding perl-EV. Even rebuilding perl-EV isn't safe. There's no strict
  dependency, but only:
  
BuildRequires:  libev-source = %{version}
  
  As a result, it is not ensured that a rebuild picks up the latest patched
  libev-source. Even a buildroot override would be needed.
 
 I know all that. :)

That makes it more difficult to answer.

In the original review request, it was mentioned to request an exemption
from FESCo: https://bugzilla.redhat.com/448613

In the ticket, you mention:
 |
 | [...] the bundled ones have always been identical to the system
 | ones we use to build our libev package), but in that the built
 | binaries are ABI-incompatible.

The ticket has been closed over a year later to restart with another review:
https://bugzilla.redhat.com/678221

In that ticket, the missing unbundling has not been commented on by the
reviewer. There is no explicit acknowledgement either. You explain:
 |
 | There's a bundled copy of libev in the source RPM.
 |
 | At build-time, I remove this folder and use instead the sources coming
 | from the Fedora libev-source package, to avoid building against the
 | bundled copy (this is what is done by other packages such as tigervnc
 | that uses the sources from Xorg).

Effectively, and repeating that cannot be avoided, you restore the bundled
sources, an no unbundling is done. More precisely, you replace the
bundled sources with a copy that may be different (especially for the case
that libev is at a different version than what is bundled with perl-EV).

Nobody care foresee how long the sources will be identical. Currently,
upstream perl-EV in CVS does not include a bundled libev, but refers to the
separate libev project in CVS. Anyone, who checks out perl-EV from CVS
will need to check out libev, since the bundling is only done for the
tarball release - so far.

 Unbundling was a pre-requisite of the review request, though, and the
 reviewer found the current solution more acceptable than keeping the
 bundled libev in perl-EV.
 
 I'm really just trying to fix all this mess here, so what do you think
 would be the better solution?

To follow:
https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries

In the case of the FPC not granting a bundling exception, perhaps they
would permit building libev and perl-EV from the same src.rpm. The rationale
for that would be how upstream handles the sources in CVS.
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-19 Thread Michael Schwendt
On Tue, 19 Nov 2013 15:30:46 +0800, Mathieu Bridon wrote:

 Hi,
 
 I would like to finally fix this bug in Fedora:
   https://bugzilla.redhat.com/show_bug.cgi?id=985610
 
 Basically, our libev package diverges from upstream in two ways:
 
   1. we install the header files in /usr/include/libev/ whereas upstream
  installs them in /usr/include/

That's a common way to resolve such a conflict:
https://fedoraproject.org/wiki/Packaging:Conflicts#Header_Name_Conflicts

However, it gets problematic when such a change is not accepted by
upstream. Developers, who base their work on Fedora's *-devel packages,
will publish something that's incompatible with pristine upstream
releases. Unless they make their software detect the different install
locations (or renamed libs even).

   2. we ship a pkgconfig file, which upstream does not want

A .pc file only adds value, if every API consumer uses pkg-config. Where
pkg-config is not used, locating moved headers becomes troublesome, and
lazy developers would simply hardcode search paths in Makefiles, or
worse, in #include-statements.

 I'm not happy with these Fedora-specific changes, and upstream is
 completely uninterested in them.

 It's confusing users who don't find the headers where they expect them,
 as demonstrated by this bug report.

To be fair, a single bug report doesn't have much weight. It's easy enough
to list the package contents and notice where the headers are stored.
The differences between multiple distributions (as well as upstream)
are not so good, however.

 Worst of all, it's causing changes in software consuming libev, which
 have often had to be modified for the Fedora-specific change in libev.
 Those changes were sometimes made in the respective upstreams, but most
 often in additional Fedora-specific changes.

Agreed. Though, this is more of a problem for the API consumers, who ought
to support not just Fedora's libev packages but also pristine upstream
libev. Afterall, their software would only build for Fedora.

 I've been talking to upstream libev, and they really don't want the
 changes we made. They'd be much happier if we were packaging libev the
 way Debian is, as that's how they intended libev to be used.

 So I'd like to follow upstream libev wishes, and stop confusing
 everybody with our Fedora-only changes.
 
 My plan is to do the following in Rawhide (the future Fedora 21) :
 
   * Move the headers back to /usr/include, as upstream intended
   * Put the event.h header into a libev-libevent-devel subpackage, and
 make it Conflicts: libevent-devel (this is what Debian did)

Seems plausible.

Personally, I don't mind explicitly conflicting -devel packages,
especially not if they are unlikely to be present in the same buildroot
(and libev's event.h is a libevent compatibility header).
But in general, conflicts bear a risk and may lead to future problems,
and I would have opened this thread on packaging@ list instead.

   * Drop our pkgconfig file.

Upstream really doesn't like pkgconfig.

 Does anybody have any comment, or objection?

This one is weird:
https://bugzilla.redhat.com/672153

In order to make the perl-EV package not use a bundled libev source,
you build a libev-source subpackage that perl-EV adds as BuildRequires.
In other words, perl-EV now still bundles libev, but only indirectly. An
update of libev does not affect perl-EV until perl-EV is rebuilt. libev has
been updated from 4.11 to 4.15 in Fedora, but perl-EV has not been rebuilt.

Such a dependency ought to be tracked in a special way, preferably with
official blessing from the FPC.
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-19 Thread Mathieu Bridon
On Tue, 2013-11-19 at 13:36 +0100, Michael Schwendt wrote:
 On Tue, 19 Nov 2013 15:30:46 +0800, Mathieu Bridon wrote:
1. we install the header files in /usr/include/libev/ whereas upstream
   installs them in /usr/include/
 
 That's a common way to resolve such a conflict:
 https://fedoraproject.org/wiki/Packaging:Conflicts#Header_Name_Conflicts
 
 However, it gets problematic when such a change is not accepted by
 upstream. Developers, who base their work on Fedora's *-devel packages,
 will publish something that's incompatible with pristine upstream
 releases. Unless they make their software detect the different install
 locations (or renamed libs even).

That's in fact what is happening, which is why I'd like to get the
Fedora package inline with upstream and other distros.

2. we ship a pkgconfig file, which upstream does not want
 
 A .pc file only adds value, if every API consumer uses pkg-config. Where
 pkg-config is not used, locating moved headers becomes troublesome, and
 lazy developers would simply hardcode search paths in Makefiles, or
 worse, in #include-statements.

I agree, but again, upstream refused it several times (Michal, the
original libev maintainer offered it, I did, the awesome developers did
too,...)

At this point, I really just want to have the Fedora package inline with
upstream, so that consumers of the library use it the same way
everywhere.

 Personally, I don't mind explicitly conflicting -devel packages,
 especially not if they are unlikely to be present in the same buildroot
 (and libev's event.h is a libevent compatibility header).

So, libev's ev.h and libevent's event.h might very well be installed on
the same system, in the case of a developer working on two different
applications, or on something like libverto (a wrapper for different
event loops).

But libev's event.h and libevent's event.h should not.

 But in general, conflicts bear a risk and may lead to future problems,
 and I would have opened this thread on packaging@ list instead.

Oh? Should we move there now?

I thought devel@ was better, as it needed to reach the maintainers of
the packages which build against libev.

  Does anybody have any comment, or objection?
 
 This one is weird:
 https://bugzilla.redhat.com/672153
 
 In order to make the perl-EV package not use a bundled libev source,
 you build a libev-source subpackage that perl-EV adds as BuildRequires.
 In other words, perl-EV now still bundles libev, but only indirectly. An
 update of libev does not affect perl-EV until perl-EV is rebuilt. libev has
 been updated from 4.11 to 4.15 in Fedora, but perl-EV has not been rebuilt.

Right, it's certainly unorthodox.

The problem is that libev is actually intended to be bundled by
upstream, and perl-EV is made by the same people.

As a result, they **really** don't want to unbundle libev from perl-EV.

The approach I followed was a compromise, it's definitely not the most
desirable outcome.

 Such a dependency ought to be tracked in a special way, preferably with
 official blessing from the FPC.

I didn't pass it through FPC because there are a few precedents. The one
I inspired myself from is xorg-x11-server-source.

I assumed that given there were already quite a few of these, it was an
accepted practice.

Did I assume wrong?


-- 
Mathieu

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-19 Thread Ralf Corsepius

On 11/19/2013 02:01 PM, Mathieu Bridon wrote:

On Tue, 2013-11-19 at 13:36 +0100, Michael Schwendt wrote:

On Tue, 19 Nov 2013 15:30:46 +0800, Mathieu Bridon wrote:

   1. we install the header files in /usr/include/libev/ whereas upstream
  installs them in /usr/include/


That's a common way to resolve such a conflict:
https://fedoraproject.org/wiki/Packaging:Conflicts#Header_Name_Conflicts

However, it gets problematic when such a change is not accepted by
upstream.


Upstream needs to comprehend, they do not have any control over 
installation locations.


Users/system integrators/installers have the freedom to choose 
installations locations at their choice, at free will.


Ralf




--
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-19 Thread Michael Schwendt
On Tue, 19 Nov 2013 21:01:06 +0800, Mathieu Bridon wrote:

  This one is weird:
  https://bugzilla.redhat.com/672153
  
  In order to make the perl-EV package not use a bundled libev source,
  you build a libev-source subpackage that perl-EV adds as BuildRequires.
  In other words, perl-EV now still bundles libev, but only indirectly. An
  update of libev does not affect perl-EV until perl-EV is rebuilt. libev has
  been updated from 4.11 to 4.15 in Fedora, but perl-EV has not been rebuilt.
 
 Right, it's certainly unorthodox.
 
 The problem is that libev is actually intended to be bundled by
 upstream, and perl-EV is made by the same people.

It's similar with libeio (retired) and Perl IO::AIO by the same author.
The Perl module contains a renamed and private DSO lib built from a
bundled copy of the library sources. Even if the Perl module could be
patched to use the system-wide DSO lib instead, there are no guarantees
about API/ABI stability. Even if the system lib has been compatible for a
long time, it may break in future releases, and e.g. the module may include
a modified bundled lib source eventually.

 As a result, they **really** don't want to unbundle libev from perl-EV.
 
 The approach I followed was a compromise, it's definitely not the most
 desirable outcome.
 
  Such a dependency ought to be tracked in a special way, preferably with
  official blessing from the FPC.
 
 I didn't pass it through FPC because there are a few precedents. The one
 I inspired myself from is xorg-x11-server-source.
 
 I assumed that given there were already quite a few of these, it was an
 accepted practice.
 
 Did I assume wrong?

I think so.

The current packaging approach is circumventing the packaging policies:
https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries

perl-EV does not use the system libev. No real unbundling has been
achieved by replacing the bundled source with another copy at build-time.
A bug-fix (or security-fix) of libev would not affect perl-EV without
rebuilding perl-EV. Even rebuilding perl-EV isn't safe. There's no strict
dependency, but only:

  BuildRequires:  libev-source = %{version}

As a result, it is not ensured that a rebuild picks up the latest patched
libev-source. Even a buildroot override would be needed.
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-19 Thread Tim St Clair
Sorry to disagree, but segregation is standard practice and is far better then 
polluting /usr/include. 

Also, I have a package which has separate patches which I'm uncertain if 
upstream has adopted. 

https://github.com/apache/mesos/blob/master/3rdparty/libprocess/3rdparty/libev-4.15.patch

Cheers,
Tim

 

- Original Message -
 From: Mathieu Bridon boche...@fedoraproject.org
 To: Development discussions related to Fedora 
 devel@lists.fedoraproject.org
 Sent: Tuesday, November 19, 2013 1:30:46 AM
 Subject: Packaging changes for libev in Rawhide
 
 Hi,
 
 I would like to finally fix this bug in Fedora:
   https://bugzilla.redhat.com/show_bug.cgi?id=985610
 
 Basically, our libev package diverges from upstream in two ways:
 
   1. we install the header files in /usr/include/libev/ whereas upstream
  installs them in /usr/include/
   2. we ship a pkgconfig file, which upstream does not want
 
 I'm not happy with these Fedora-specific changes, and upstream is
 completely uninterested in them.
 
 It's confusing users who don't find the headers where they expect them,
 as demonstrated by this bug report.
 
 Worst of all, it's causing changes in software consuming libev, which
 have often had to be modified for the Fedora-specific change in libev.
 Those changes were sometimes made in the respective upstreams, but most
 often in additional Fedora-specific changes.
 
 I've been talking to upstream libev, and they really don't want the
 changes we made. They'd be much happier if we were packaging libev the
 way Debian is, as that's how they intended libev to be used.
 
 So I'd like to follow upstream libev wishes, and stop confusing
 everybody with our Fedora-only changes.
 
 My plan is to do the following in Rawhide (the future Fedora 21) :
 
   * Move the headers back to /usr/include, as upstream intended
   * Put the event.h header into a libev-libevent-devel subpackage, and
 make it Conflicts: libevent-devel (this is what Debian did)
   * Drop our pkgconfig file.
 
 Here is the list of packages I could find with a build requirement on
 libev:
 
   $ repoquery --enablerepo=\*source --archlist=src --whatrequires
   'pkgconfig(libev)' libev-devel
   awesome-0:3.5.1-8.fc20.src
   i3-0:4.6-1.fc20.src
   i3lock-0:2.5-2.fc20.src
   libverto-0:0.2.5-3.fc20.src
   ocaml-lwt-0:2.4.2-3.fc20.src
   picviz-0:0.6-12.fc20.src
   rubygem-passenger-0:4.0.18-2.fc20.src
   rubygem-passenger-0:4.0.18-4.fc20.src
   spectrum-0:1.4.8-11.fc20.src
   stud-0:0.3-4.20120814git.fc20.src
   weighttp-0:0.3-5.fc20.src
 
 I'll fix weighttp, as it is my package, but I can't do much about the
 other ones.
 
 I'm adding a breakdown of how these packages use libev and what needs to
 be done for them at the end of this email.
 
 Does anybody have any comment, or objection?
 
 Cheers,
 
 
 --
 Mathieu
 
 
 
 awesome
 ---
 
 Our package has some downstream patches to require our Fedora-only
 pkgconfig file for libev.
 
 Making it build-require libev-devel instead and dropping this downstream
 patch should be enough.
 
 i3
 --
 
 Nothing should need to be done here.
 
 Upstream checks for libev with pkg-config, but it ignores errors. And
 once I move the libev headers in /usr/include, then they'll be found
 anyway.
 
 i3lock
 --
 
 The spec file calls pkgconfig to find the libev headers.
 
 This should just be removed, and the package should build just fine, as
 intended by upstream.
 
 libverto
 
 
 Upstream itself requires the pkgconfig file for libev.
 
 That's just a terrible idea, as it means libverto won't build on e.g
 Debian, or with the upstream libev.
 
 libverto should be fixed upstream here IMHO.
 
 ocaml-lwt
 -
 
 The package has a patch to make it find the headers int he
 Fedora-specific location.
 
 It should be dropped, and that should be it.
 
 picviz
 --
 The package has a patch to make it find the headers int he
 Fedora-specific location.
 
 It should be dropped, and that should be it.
 
 rubygem-passenger
 -
 
 Upstream hardcodes -I/usr/include/libev in the cflags, which is only
 needed with our current libev package in Fedora, nowhere else.
 
 Anyway, the package should just build without any change once I move the
 libev headers to /usr/include.
 
 spectrum
 
 
 Upstream searches for the ev.h header in various folders, so things
 should continue to work without a change.
 
 stud
 
 
 Our package has a patch to hardcode -I/usr/include/libev in the CFLAGS.
 
 That can be dropped.
 
 --
 devel mailing list
 devel@lists.fedoraproject.org
 https://admin.fedoraproject.org/mailman/listinfo/devel
 Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

-- 
Cheers,
Tim
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-19 Thread Mathieu Bridon
On Tue, 2013-11-19 at 12:43 -0500, Tim St Clair wrote:
 Sorry to disagree, but segregation is standard practice and is far better 
 then polluting /usr/include. 

I actually agree with that.

Upstream libev doesn't, though.

And with our current package in Fedora, we are creating a situation
where developers of software using libev have to juggle weirdly to
support Fedora because it's different from upstream libev and other
distros.

 Also, I have a package which has separate patches which I'm uncertain if 
 upstream has adopted. 
 
 https://github.com/apache/mesos/blob/master/3rdparty/libprocess/3rdparty/libev-4.15.patch

That seems off-topic for this discussion, you should send that upstream
instead.


-- 
Mathieu


-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Re: Packaging changes for libev in Rawhide

2013-11-19 Thread Mathieu Bridon
On Tue, 2013-11-19 at 14:38 +0100, Michael Schwendt wrote:
 On Tue, 19 Nov 2013 21:01:06 +0800, Mathieu Bridon wrote:
 
   This one is weird:
   https://bugzilla.redhat.com/672153
   
   In order to make the perl-EV package not use a bundled libev source,
   you build a libev-source subpackage that perl-EV adds as BuildRequires.
   In other words, perl-EV now still bundles libev, but only indirectly. An
   update of libev does not affect perl-EV until perl-EV is rebuilt. libev 
   has
   been updated from 4.11 to 4.15 in Fedora, but perl-EV has not been 
   rebuilt.
  
  Right, it's certainly unorthodox.
  
  The problem is that libev is actually intended to be bundled by
  upstream, and perl-EV is made by the same people.
 
 It's similar with libeio (retired) and Perl IO::AIO by the same author.
 The Perl module contains a renamed and private DSO lib built from a
 bundled copy of the library sources. Even if the Perl module could be
 patched to use the system-wide DSO lib instead, there are no guarantees
 about API/ABI stability. Even if the system lib has been compatible for a
 long time, it may break in future releases, and e.g. the module may include
 a modified bundled lib source eventually.
 
  As a result, they **really** don't want to unbundle libev from perl-EV.
  
  The approach I followed was a compromise, it's definitely not the most
  desirable outcome.
  
   Such a dependency ought to be tracked in a special way, preferably with
   official blessing from the FPC.
  
  I didn't pass it through FPC because there are a few precedents. The one
  I inspired myself from is xorg-x11-server-source.
  
  I assumed that given there were already quite a few of these, it was an
  accepted practice.
  
  Did I assume wrong?
 
 I think so.
 
 The current packaging approach is circumventing the packaging policies:
 https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries
 
 perl-EV does not use the system libev. No real unbundling has been
 achieved by replacing the bundled source with another copy at build-time.
 A bug-fix (or security-fix) of libev would not affect perl-EV without
 rebuilding perl-EV. Even rebuilding perl-EV isn't safe. There's no strict
 dependency, but only:
 
   BuildRequires:  libev-source = %{version}
 
 As a result, it is not ensured that a rebuild picks up the latest patched
 libev-source. Even a buildroot override would be needed.

I know all that. :)

Unbundling was a pre-requisite of the review request, though, and the
reviewer found the current solution more acceptable than keeping the
bundled libev in perl-EV.

I'm really just trying to fix all this mess here, so what do you think
would be the better solution?

Thanks,


-- 
Mathieu

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct

Packaging changes for libev in Rawhide

2013-11-18 Thread Mathieu Bridon
Hi,

I would like to finally fix this bug in Fedora:
  https://bugzilla.redhat.com/show_bug.cgi?id=985610

Basically, our libev package diverges from upstream in two ways:

  1. we install the header files in /usr/include/libev/ whereas upstream
 installs them in /usr/include/
  2. we ship a pkgconfig file, which upstream does not want

I'm not happy with these Fedora-specific changes, and upstream is
completely uninterested in them.

It's confusing users who don't find the headers where they expect them,
as demonstrated by this bug report.

Worst of all, it's causing changes in software consuming libev, which
have often had to be modified for the Fedora-specific change in libev.
Those changes were sometimes made in the respective upstreams, but most
often in additional Fedora-specific changes.

I've been talking to upstream libev, and they really don't want the
changes we made. They'd be much happier if we were packaging libev the
way Debian is, as that's how they intended libev to be used.

So I'd like to follow upstream libev wishes, and stop confusing
everybody with our Fedora-only changes.

My plan is to do the following in Rawhide (the future Fedora 21) :

  * Move the headers back to /usr/include, as upstream intended
  * Put the event.h header into a libev-libevent-devel subpackage, and
make it Conflicts: libevent-devel (this is what Debian did)
  * Drop our pkgconfig file.

Here is the list of packages I could find with a build requirement on
libev:

  $ repoquery --enablerepo=\*source --archlist=src --whatrequires 
'pkgconfig(libev)' libev-devel
  awesome-0:3.5.1-8.fc20.src
  i3-0:4.6-1.fc20.src
  i3lock-0:2.5-2.fc20.src
  libverto-0:0.2.5-3.fc20.src
  ocaml-lwt-0:2.4.2-3.fc20.src
  picviz-0:0.6-12.fc20.src
  rubygem-passenger-0:4.0.18-2.fc20.src
  rubygem-passenger-0:4.0.18-4.fc20.src
  spectrum-0:1.4.8-11.fc20.src
  stud-0:0.3-4.20120814git.fc20.src
  weighttp-0:0.3-5.fc20.src

I'll fix weighttp, as it is my package, but I can't do much about the
other ones.

I'm adding a breakdown of how these packages use libev and what needs to
be done for them at the end of this email.

Does anybody have any comment, or objection?

Cheers,


-- 
Mathieu



awesome
---

Our package has some downstream patches to require our Fedora-only
pkgconfig file for libev.

Making it build-require libev-devel instead and dropping this downstream
patch should be enough.

i3
--

Nothing should need to be done here.

Upstream checks for libev with pkg-config, but it ignores errors. And
once I move the libev headers in /usr/include, then they'll be found
anyway.

i3lock
--

The spec file calls pkgconfig to find the libev headers.

This should just be removed, and the package should build just fine, as
intended by upstream.

libverto


Upstream itself requires the pkgconfig file for libev.

That's just a terrible idea, as it means libverto won't build on e.g
Debian, or with the upstream libev.

libverto should be fixed upstream here IMHO.

ocaml-lwt
-

The package has a patch to make it find the headers int he
Fedora-specific location.

It should be dropped, and that should be it.

picviz
--
The package has a patch to make it find the headers int he
Fedora-specific location.

It should be dropped, and that should be it.

rubygem-passenger
-

Upstream hardcodes -I/usr/include/libev in the cflags, which is only
needed with our current libev package in Fedora, nowhere else.

Anyway, the package should just build without any change once I move the
libev headers to /usr/include.

spectrum


Upstream searches for the ev.h header in various folders, so things
should continue to work without a change.

stud


Our package has a patch to hardcode -I/usr/include/libev in the CFLAGS.

That can be dropped.

-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel
Fedora Code of Conduct: http://fedoraproject.org/code-of-conduct