#666833 libcgi-application-dispatch-perl: sourceful transition towards Apache 2.4

#666833#5
Date:
2012-04-01 21:15:52 UTC
From:
To:
Dear maintainer,

your package libcgi-application-dispatch-perl is provding an Apache2 web server module.
We're upgrading Apache to the new upstream version 2.4 [1] (tracked
as transition bug #661958). This requires all modules to be rebuilt
due to ABI changes.  Thus, you need to rebuild and reupload your
Apache2 module package in a version compatible to our new package
available in experimental [2].  Please note it is not enough to
simply rebuild the module - it needs some adaptions in the module
package metadata. We have written packaging guidelines for our
reverse dependencies [3]. Please read it carefully, it should be able
to answer most of your questions. Do also look at dh_apache2
(available through the dh-apache2 package) which can simplify
packaging Apache2 modules.  In short, we want to highlight these
changes you need to be aware of.

* APIs changed for some cases [3]. Chances are your module needs some
  adaptions, please get in touch with upstream or us if you need help
  to port your module to Apache 2.4.

* MPM packages are gone. You cannot depend or conflict with a
  particular MPM anymore. If your module does not work with a
  particular module, make sure to make it abort with an error if
  loaded together with an incompatible MPM. You can use our
  apache2-maintscript-helper [4] to switch to the MPM of your choice
  in your maintainer scripts.

* Do not build-depend on apache2-threaded-dev or apache2-prefork-dev
  anymore. Just like MPMs are gone, are our MPM -dev packages as
  well. All modules need to simply build-depend on apache2-dev.

* Do NOT depend on apache2, apache2-common or any other real apache2
  package in your binary module package. Depend on our virtual
  apache2-api-20120211 package only!

* Do NOT call a2enmod/a2dismod in your maintainer scripts. Use our
  apache2-maintscript-helper [3] instead. This is required to get a
  uniform and stateful handling of all Apache2 modules.


You can look at our Apache 2.4 packaging hints [5] for hands-on
tutorials.  Please note: This bug is filed as "important" for now. As
the time goes by we plan make it a release critical severity. In the
consequences your module either needs an update or is going to be
removed from Wheezy. For the time being please tag the bug as pending
as soon as you have a package ready. We strongly recommend that at
least maintainers of complex module packages make an upload to
experimental as well. Of course, uploading simple modules to
experimental is welcome, too.

[1] https://lists.debian.org/debian-devel-announce/2012/03/msg00013.html
[2] http://packages.debian.org/search?keywords=apache2&searchon=sourcenames&exact=1&suite=all§ion=all
[3] http://anonscm.debian.org/gitweb/?p=pkg-apache/apache2.git;a=blob;f=debian/PACKAGING;hb=next
[4] http://httpd.apache.org/docs/2.4/developer/new_api_2_4.html
[5] http://wiki.debian.org/Apache/PackagingFor24

#666833#10
Date:
2012-05-05 11:48:58 UTC
From:
To:
tags 666833 '+upstream' , block 666833 by 666822
thanks
Dear maintainer,

this is a follow-up message to your Apache 2.4 transition bug for
package libcgi-application-dispatch-perl. We are approaching an upload of the web server to
Debian's Unstable repository as soon as the release team acknowledges
the upload. Along that upload we are planning to raise the importance of
this bug to a release-critical severity.

Please port your packages now to Apache 2.4. Below you can find a
test-rebuild for your package for the 2.4 version of the Apache web
server. Please note, even if the rebuild was successful, you still need
to make changes in the Debian specific part of your package.

The rebuild below was made by using a specially prepared build
environment where these conditions where met:

* We had apache2 and apache2-dev preinstalled
* We provided a void apache2-threaded-dev and apache2-prefork-dev
  package to satisfy build-dependencies of your existing package (but
  this WILL NOT be the case in a real upload of the apache2 source
  package)
* We prepared apxs to unconditionally inject
  -Werror=implicit-function-declaration to gcc to make sure we can spot
  the use of removed API calls (e.g. missing signatures for ap_*
  functions). Note, this might also cause false positives in some cases.

These are the outcome criterias we defined:

* VERIFIED-OK: The package rebuilt and linked successfully using the
  Apache 2.4 development headers. It still needs adapting to Debian
  package changes
* VERIFIED-FAIL: The package does not rebuild successufully using the
  Apache 2.4 development headers. It may need some porting in the
  upstream code base
* BYHAND: We may rebuild your package another time with manual
  interception. Not clear outcome could be determined out of the build
  log

This is the outcome we determined:

outcome: VERIFIED-OK
comment: blocked by mod_perl transition

You will find a full build log attached below.

Here are some hints about porting problems. See [1] for a comprehensive
overview:

error: 'conn_rec' has no member named 'remote_ip'

	These fields have been renamed in order to distinguish between
	the client IP address of the connection and the useragent IP
	address of the request. Porting is trivial, in most cases
	changing the pointer from conn_rec->remote_ip to
	request_rec->useragent_ip is enough

error: implicit declaration of function 'ap_requires'
error: implicit declaration of function 'ap_default_type'

	These functions were removed along the 2.2 authnz API. It needs
	a non-trivial API redesign.

error: implicit declaration of function 'ap_get_server_version'

	Use ap_get_server_banner()

error: format not a string literal and no format arguments [-Werror=format-security]

	Apache2 modules are being built with hardening build flags now
	in order to satisfy the "hardening release goal" [2]. A trivial
	fix comes over that problem.

[1] http://httpd.apache.org/docs/2.4/developer/new_api_2_4.html
[2] http://wiki.debian.org/ReleaseGoals/SecurityHardeningBuildFlags

#666833#19
Date:
2012-05-18 05:03:55 UTC
From:
To:
Hi,

we have decided to postpone the transition to apache2 2.4. The main blocker is that mod_perl needs a major new upstream release which very likely won't be ready in time for Wheezy and we don't want to release Wheezy without mod_perl.

The transition will probably happen shortly after the release of Wheezy. We are sorry for any inconvenience this may have caused.

Cheers,
Stefan

#666833#24
Date:
2013-05-04 16:13:24 UTC
From:
To:
Dear maintainers,

now that the work is done and Debian 7.0 (Wheezy) is released [*], we
are booting the Apache 2.4 transition process again. If you did not
already, please subscribe to transition bug #661958 to keep up with our
transition plan in detail as this IS going to affect your package.

Unless the Release Team is going to assign us another slot to start the
transition we are going to upload Apache 2.4 to Debian Sid at some point
in June. If you do not prepare a package which works together with the
Apache 2.4 server ABI by then, it is going to stop working at that time.

Let me emphasize again you do need to make adjustments in the
source of your package to get it working with Apache 2.4. Moreover, the
APIs slightly changed from 2.2 to 2.4 so that some modules may require
some porting. On the upside, it has been over a year that Apache 2.4 was
released and many upstreams made compatible releases. Moreover, porting
is easy in most cases and I've filed patches to some of your modules.

Either way, if you are trying to load existing module from Sid into
an Apache 2.4 web server is going to fail at runtime which renders your
package virtually useless.

We are planning to make the transition as smooth as possible to our
users. Thus, we do not want to let the Apache 2.4 package migrate to
Testing anytime soon. Instead, we'd like to let it migrate together with
a bunch of transitioned third party modules (i.e. your packages). Please
help us to make this happen soon.

While we invite everyone to provide updated packages as soon as
possible, don't hesitate to contact us if you feel like, we should wait
for you and your package when considering a migration to Debian Testing.
All packages which are not yet transitioned at that point will
eventually be removed from Testing.

Please prepare updates for your packages NOW and upload an upgraded
package to Debian Experimental and/or have a patch ready in your VCS. In
the case of the latter, please tag this bug pending. We chose some very
important external modules to be a blocker for our upload to Unstable.
That is, we will wait for you until we are uploading to Unstable, so
that we can do a coordinated upload to mitigate the impact of Sid users.
 If you are the maintainer of such a blocker module, we'll contact you
separately again. If you feel like you should be on the blocker list
denoted in #661958 please let us know as soon as possible.

[*] yah, it's not yet formally speaking

#666833#37
Date:
2013-05-23 11:13:53 UTC
From:
To:
Hello fellow maintainers,

we are ready to upload Apache2 2.4 to Debian Sid now. This means the
transition is effectively starting now, and going to break your modules.


We have scheduled the upload for May 30, 2013 BEFORE the 19:52 UTC
dinstall on ftp-master.

To minimize the breakage to our Sid users, we'd ask all of you having a
transitioned package ready in Experimental, to make an upload to Sid
AFTER the 13:52 UTC dinstall, and BEFORE 19:52 UTC [1].


Let us know if you need a sponsor, or our help to upload your packages
in that time window. Please note, you could also use the DELAYED queue
to make timed upload [2].

[1] http://ftp-master.debian.org/#dinstall
[2] http://ftp-master.debian.org/deferred.html

#666833#42
Date:
2013-07-11 09:56:48 UTC
From:
To:
Control: severity -1 normal

I cannot find any evidence that this is actually broken.  It doesn't
appear to use any of the mod_perl APIs broken by Apache 2.4, and when I
install it and test it as best I can it still appears to work perfectly
well.

The only thing that I see that ought to be improved is that it should
now build-depend on apache2-dev rather than on apache2-threaded-dev |
apache2-prefork-dev, and that the build-dependency on apache2 itself
appears to be unnecessary.  However, none of these actually prevent it
from building with Apache 2.4 in unstable (the apache2-threaded-dev |
apache2-prefork-dev build-dependencies are unversioned, so the Provides
in apache2-dev is good enough), and there's no reason for them to block
Apache 2.4 entering testing.

Applying the following patch should close this out.

diff -Nru libcgi-application-dispatch-perl-3.12/debian/changelog libcgi-application-dispatch-perl-3.12/debian/changelog
--- libcgi-application-dispatch-perl-3.12/debian/changelog	2012-11-04 13:35:09.000000000 +0000
+++ libcgi-application-dispatch-perl-3.12/debian/changelog	2013-07-10 22:27:18.000000000 +0100
@@ -1,3 +1,10 @@
+libcgi-application-dispatch-perl (3.12-1.1) UNRELEASED; urgency=low
+
+  * Non-maintainer upload.
+  * Update build-dependencies for Apache 2.4 (closes: #666833).
+
+ -- Colin Watson <cjwatson@debian.org>  Wed, 10 Jul 2013 22:27:06 +0100
+
 libcgi-application-dispatch-perl (3.12-1) unstable; urgency=low

   [ gregor herrmann ]
diff -Nru libcgi-application-dispatch-perl-3.12/debian/control libcgi-application-dispatch-perl-3.12/debian/control
--- libcgi-application-dispatch-perl-3.12/debian/control	2012-11-04 13:35:09.000000000 +0000
+++ libcgi-application-dispatch-perl-3.12/debian/control	2013-07-10 22:27:02.000000000 +0100
@@ -5,8 +5,7 @@
            Xavier Guimard <x.guimard@free.fr>
 Section: perl
 Priority: optional
-Build-Depends: apache2,
-               apache2-threaded-dev | apache2-prefork-dev,
+Build-Depends: apache2-dev,
                debhelper (>= 8),
                libapache2-mod-perl2,
                libcgi-application-perl (>= 4.50),

Thanks,

#666833#47
Date:
2013-07-11 17:04:53 UTC
From:
To:
tag 666833 + pending
thanks

Some bugs in the libcgi-application-dispatch-perl package are closed
in revision dcf119a74827ac95398bc2b77657545ce9919362 in branch
'master' by Colin Watson

The full diff can be seen at
http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/libcgi-application-dispatch-perl.git;a=commitdiff;h=dcf119a

Commit message:

    Update build-dependencies for Apache 2.4.

    Closes: #666833

#666833#52
Date:
2013-07-11 17:05:11 UTC
From:
To:
Pushed to our git repo.

I'm not uploading the package right now because there's one issue
left: The test suite isn't run with Apache 2.4 (".AH00534: apache2:
Configuration error: No MPM loaded."); it seems that Apache::TestMB
doesn't honour APACHE_TEST_EXTRA_ARG or have an equivalent, unlike
Apache::TestMM.

I suppose we'd need to patch this in libapache2-mod-perl2 :/

Ah, an alternative is to patch t/conf/extra.conf.in (instead of our
"usual" 'APACHE_TEST_EXTRA_ARGS="-httpd_conf
$(CURDIR)/debian/apache2.conf"'); works, but is not very elegant, and
Apache::TestMB would probably be a better place to fix this (but only
after the Apache 2.4 migration to testing).

Cheers,
gregor

#666833#57
Date:
2013-07-11 17:04:53 UTC
From:
To:
tag 666833 + pending
thanks

Some bugs in the libcgi-application-dispatch-perl package are closed
in revision dcf119a74827ac95398bc2b77657545ce9919362 in branch
'master' by Colin Watson

The full diff can be seen at
http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/libcgi-application-dispatch-perl.git;a=commitdiff;h=dcf119a

Commit message:

    Update build-dependencies for Apache 2.4.

    Closes: #666833