diff mbox

[1/2] automake: update gtk-doc.m4 to serial 2

Message ID 1412936897-8478-1-git-send-email-gustavo@zacarias.com.ar
State Accepted
Headers show

Commit Message

Gustavo Zacarias Oct. 10, 2014, 10:28 a.m. UTC
Update gtk-doc.m4 infra to serial (version) 2.
Some packages start to need/ship with the new version and can't be
properly autoreconf'ed, like kmod 18+.
The file was picked up from kmod-18 itself actually.
Also add host-pkgconf to DEPENDENCIES since it's required by gtk-doc.m4
and rather than tweak it we'd prefer to use vanilla - it's actually a
small price in build time if we are autoreconfiguring anyway.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
 package/automake/automake.mk |  2 +-
 package/automake/gtk-doc.m4  | 47 ++++++++++++++++++++++++++++++++++----------
 2 files changed, 38 insertions(+), 11 deletions(-)

Comments

Vicente Olivert Riera Oct. 10, 2014, 10:35 a.m. UTC | #1
Dear Gustavo Zacarias,

On 10/10/2014 11:28 AM, Gustavo Zacarias wrote:
> Update gtk-doc.m4 infra to serial (version) 2.
> Some packages start to need/ship with the new version and can't be
> properly autoreconf'ed, like kmod 18+.
> The file was picked up from kmod-18 itself actually.
> Also add host-pkgconf to DEPENDENCIES since it's required by gtk-doc.m4
> and rather than tweak it we'd prefer to use vanilla - it's actually a
> small price in build time if we are autoreconfiguring anyway.
>
> Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
> ---
>   package/automake/automake.mk |  2 +-
>   package/automake/gtk-doc.m4  | 47 ++++++++++++++++++++++++++++++++++----------
>   2 files changed, 38 insertions(+), 11 deletions(-)
>
> diff --git a/package/automake/automake.mk b/package/automake/automake.mk
> index 8d7e291..ab17c5d 100644
> --- a/package/automake/automake.mk
> +++ b/package/automake/automake.mk
> @@ -10,7 +10,7 @@ AUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake
>   AUTOMAKE_LICENSE = GPLv2+
>   AUTOMAKE_LICENSE_FILES = COPYING
>
> -HOST_AUTOMAKE_DEPENDENCIES = host-autoconf
> +HOST_AUTOMAKE_DEPENDENCIES = host-autoconf host-pkgconf
>
>   define GTK_DOC_M4_INSTALL
>    $(INSTALL) -D -m 0644 package/automake/gtk-doc.m4 $(HOST_DIR)/usr/share/aclocal/gtk-doc.m4
> diff --git a/package/automake/gtk-doc.m4 b/package/automake/gtk-doc.m4
> index 2cfa1e7..3675543 100644
> --- a/package/automake/gtk-doc.m4
> +++ b/package/automake/gtk-doc.m4
> @@ -1,16 +1,33 @@
>   dnl -*- mode: autoconf -*-
>
> -# serial 1
> +# serial 2
>
>   dnl Usage:
>   dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
>   AC_DEFUN([GTK_DOC_CHECK],
>   [
> +  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
>     AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
>     AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
>
> +  ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"])
> +  AC_MSG_CHECKING([for gtk-doc])
> +  PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no])
> +  AC_MSG_RESULT($have_gtk_doc)
> +
> +  if test "$have_gtk_doc" = "no"; then
> +      AC_MSG_WARN([
> +  You will not be able to create source packages with 'make dist'
> +  because $gtk_doc_requires is not found.])
> +  fi
> +
>     dnl check for tools we added during development
> -  AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
> +  dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that
> +  dnl may not be writable by the user. Currently, automake requires that the
> +  dnl test name must end in '.test'.
> +  dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638
> +  AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test])
> +  AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check])
>     AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
>     AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
>
> @@ -27,17 +44,22 @@ AC_DEFUN([GTK_DOC_CHECK],
>                      [use gtk-doc to build documentation [[default=no]]]),,
>       [enable_gtk_doc=no])
>
> -  if test x$enable_gtk_doc = xyes; then
> -    ifelse([$1],[],
> -      [PKG_CHECK_EXISTS([gtk-doc],,
> -                        AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
> -      [PKG_CHECK_EXISTS([gtk-doc >= $1],,
> -                        AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
> -  fi
> -
>     AC_MSG_CHECKING([whether to build gtk-doc documentation])
>     AC_MSG_RESULT($enable_gtk_doc)
>
> +  if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then
> +    AC_MSG_ERROR([
> +  You must have $gtk_doc_requires installed to build documentation for
> +  $PACKAGE_NAME. Please install gtk-doc or disable building the
> +  documentation by adding '--disable-gtk-doc' to '[$]0'.])
> +  fi
> +
> +  dnl don't check for glib if we build glib
> +  if test "x$PACKAGE_NAME" != "xglib"; then
> +    dnl don't fail if someone does not have glib
> +    PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0  >= 2.10.0,,[:])
> +  fi
> +
>     dnl enable/disable output formats
>     AC_ARG_ENABLE([gtk-doc-html],
>       AS_HELP_STRING([--enable-gtk-doc-html],
> @@ -52,7 +74,12 @@ AC_DEFUN([GTK_DOC_CHECK],
>       enable_gtk_doc_pdf=no
>     fi
>
> +  if test -z "$AM_DEFAULT_VERBOSITY"; then
> +    AM_DEFAULT_VERBOSITY=1
> +  fi
> +  AC_SUBST([AM_DEFAULT_VERBOSITY])
>
> +  AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes])
>     AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
>     AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
>     AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])
>

Tested-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Thomas Petazzoni Oct. 10, 2014, 10:41 a.m. UTC | #2
Dear Gustavo Zacarias,

On Fri, 10 Oct 2014 07:28:16 -0300, Gustavo Zacarias wrote:

> -HOST_AUTOMAKE_DEPENDENCIES = host-autoconf
> +HOST_AUTOMAKE_DEPENDENCIES = host-autoconf host-pkgconf

I'm not sure exactly, but shouldn't depending on host-pkgconf be the
responsibility of each individual package that uses the gtk-doc.m4
stuff?

Even though I agree pkgconf is fairly quick to build, I find it odd to
have host-automake depend on host-pkgconf if it's only a very limited
number of packages that actually use the gtk-doc.m4 stuff that need the
host-pkgconf dependency.

Thomas
Gustavo Zacarias Oct. 10, 2014, 10:45 a.m. UTC | #3
On 10/10/2014 07:41 AM, Thomas Petazzoni wrote:

> I'm not sure exactly, but shouldn't depending on host-pkgconf be the
> responsibility of each individual package that uses the gtk-doc.m4
> stuff?
> 
> Even though I agree pkgconf is fairly quick to build, I find it odd to
> have host-automake depend on host-pkgconf if it's only a very limited
> number of packages that actually use the gtk-doc.m4 stuff that need the
> host-pkgconf dependency.

The problem is it wasn't the case for gtk-doc.m4 serial 1, the check and
need for pkgconfig is done after gtk-doc is enabled, but for serial 2
some of the checks are done before that.
So we'd need to find all packages that use gtk-doc.m4 and add it there
(well, for those that autoreconf, but that would be sloppy since an
added autoreconf would trigger the need).
As stated i prefer to keep it simple without patching gtk-doc.m4 for
when serial 3 comes around.
Regards.
Thomas Petazzoni Oct. 10, 2014, 11:01 a.m. UTC | #4
Dear Gustavo Zacarias,

On Fri, 10 Oct 2014 07:45:07 -0300, Gustavo Zacarias wrote:

> > I'm not sure exactly, but shouldn't depending on host-pkgconf be the
> > responsibility of each individual package that uses the gtk-doc.m4
> > stuff?
> > 
> > Even though I agree pkgconf is fairly quick to build, I find it odd to
> > have host-automake depend on host-pkgconf if it's only a very limited
> > number of packages that actually use the gtk-doc.m4 stuff that need the
> > host-pkgconf dependency.
> 
> The problem is it wasn't the case for gtk-doc.m4 serial 1, the check and
> need for pkgconfig is done after gtk-doc is enabled, but for serial 2
> some of the checks are done before that.
> So we'd need to find all packages that use gtk-doc.m4 and add it there
> (well, for those that autoreconf, but that would be sloppy since an
> added autoreconf would trigger the need).

Yes, correct, that's my idea. I think it's more correct than globally
adding this host-pkgconf dependency.

Best regards,

Thomas
Gustavo Zacarias Oct. 10, 2014, 11:12 a.m. UTC | #5
On 10/10/2014 08:01 AM, Thomas Petazzoni wrote:

> Yes, correct, that's my idea. I think it's more correct than globally
> adding this host-pkgconf dependency.

"When you autoreconf you might need host-pkgconf in DEPENDENCIES whereas
you didn't before"... really?
Regards.
Thomas Petazzoni Oct. 10, 2014, 1:28 p.m. UTC | #6
Dear Gustavo Zacarias,

On Fri, 10 Oct 2014 08:12:15 -0300, Gustavo Zacarias wrote:

> > Yes, correct, that's my idea. I think it's more correct than globally
> > adding this host-pkgconf dependency.
> 
> "When you autoreconf you might need host-pkgconf in DEPENDENCIES whereas
> you didn't before"... really?

Come on Gustavo, no need to start being aggressive here.

Yes, that's exactly what I suggest. And actually, we already need to
add host-pkgconf in DEPENDENCIES when doing autoreconf, if the
configure.ac uses PKG_CHECK_MODULES, which is far more common than
packages using gtk-doc.m4 specifically.

PKG_CHECK_MODULES in configure.ac requiring host-pkgconf in the
DEPENDENCIES is precisely the reason why I proposed
http://patchwork.ozlabs.org/patch/340902/ some time ago. Nothing
prevents from adding a similar check to see if the package uses
the gtk-doc.m4 macros or not. That would at least warn loudly if such
macros are used without the package having host-pkgconf in its
dependencies.

Thanks,

Thomas
Gustavo Zacarias Oct. 10, 2014, 1:50 p.m. UTC | #7
On 10/10/2014 10:28 AM, Thomas Petazzoni wrote:

> Come on Gustavo, no need to start being aggressive here.

Huh? It's not intended to be aggressive.

> Yes, that's exactly what I suggest. And actually, we already need to
> add host-pkgconf in DEPENDENCIES when doing autoreconf, if the
> configure.ac uses PKG_CHECK_MODULES, which is far more common than
> packages using gtk-doc.m4 specifically.
> 
> PKG_CHECK_MODULES in configure.ac requiring host-pkgconf in the
> DEPENDENCIES is precisely the reason why I proposed
> http://patchwork.ozlabs.org/patch/340902/ some time ago. Nothing
> prevents from adding a similar check to see if the package uses
> the gtk-doc.m4 macros or not. That would at least warn loudly if such
> macros are used without the package having host-pkgconf in its
> dependencies.

Well, at least from my POV it's making some packages need host-pkgconf
just because they use gtk-doc.m4, we're bumping the version and they're
AUTORECONFed. If they weren't AUTORECONFed they maybe didn't need
host-pkgconf (maybe for other purposes, but not because of the old
gtk-doc.m4) so it seems to me it's autotools/autoreconfs fault, and it
should be handled there.
It has nothing to do with packages that don't account for host-pkgconf
usage without accounting for it in the first place.
Regards.
Peter Korsgaard Oct. 12, 2014, 9:07 a.m. UTC | #8
>>>>> "Gustavo" == Gustavo Zacarias <gustavo@zacarias.com.ar> writes:

 > Update gtk-doc.m4 infra to serial (version) 2.
 > Some packages start to need/ship with the new version and can't be
 > properly autoreconf'ed, like kmod 18+.
 > The file was picked up from kmod-18 itself actually.
 > Also add host-pkgconf to DEPENDENCIES since it's required by gtk-doc.m4
 > and rather than tweak it we'd prefer to use vanilla - it's actually a
 > small price in build time if we are autoreconfiguring anyway.

 > Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
 > ---
 >  package/automake/automake.mk |  2 +-
 >  package/automake/gtk-doc.m4  | 47 ++++++++++++++++++++++++++++++++++----------
 >  2 files changed, 38 insertions(+), 11 deletions(-)

 > diff --git a/package/automake/automake.mk b/package/automake/automake.mk
 > index 8d7e291..ab17c5d 100644
 > --- a/package/automake/automake.mk
 > +++ b/package/automake/automake.mk
 > @@ -10,7 +10,7 @@ AUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake
 >  AUTOMAKE_LICENSE = GPLv2+
 >  AUTOMAKE_LICENSE_FILES = COPYING
 
 > -HOST_AUTOMAKE_DEPENDENCIES = host-autoconf
 > +HOST_AUTOMAKE_DEPENDENCIES = host-autoconf host-pkgconf
 
 >  define GTK_DOC_M4_INSTALL
 >   $(INSTALL) -D -m 0644 package/automake/gtk-doc.m4 $(HOST_DIR)/usr/share/aclocal/gtk-doc.m4
 > diff --git a/package/automake/gtk-doc.m4 b/package/automake/gtk-doc.m4
 > index 2cfa1e7..3675543 100644
 > --- a/package/automake/gtk-doc.m4
 > +++ b/package/automake/gtk-doc.m4
 > @@ -27,17 +44,22 @@ AC_DEFUN([GTK_DOC_CHECK],
 >                     [use gtk-doc to build documentation [[default=no]]]),,
 >      [enable_gtk_doc=no])
 
 > -  if test x$enable_gtk_doc = xyes; then
 > -    ifelse([$1],[],
 > -      [PKG_CHECK_EXISTS([gtk-doc],,
 > -                        AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
 > -      [PKG_CHECK_EXISTS([gtk-doc >= $1],,
 > -                        AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
 > -  fi
 > -

So the old version of gtk-doc.m4 already needed host-pkgconf when
autoreconfiguring, and the bump shouldn't cause any more breakage.

We discussed it during the dev days. Considering how fast host-pkgconf
builds we should probably just automatically pull it in for all
autotools packages (even if they don't autoreconf) so we don't need to
add it everywhere, but that's for later.
diff mbox

Patch

diff --git a/package/automake/automake.mk b/package/automake/automake.mk
index 8d7e291..ab17c5d 100644
--- a/package/automake/automake.mk
+++ b/package/automake/automake.mk
@@ -10,7 +10,7 @@  AUTOMAKE_SITE = $(BR2_GNU_MIRROR)/automake
 AUTOMAKE_LICENSE = GPLv2+
 AUTOMAKE_LICENSE_FILES = COPYING
 
-HOST_AUTOMAKE_DEPENDENCIES = host-autoconf
+HOST_AUTOMAKE_DEPENDENCIES = host-autoconf host-pkgconf
 
 define GTK_DOC_M4_INSTALL
  $(INSTALL) -D -m 0644 package/automake/gtk-doc.m4 $(HOST_DIR)/usr/share/aclocal/gtk-doc.m4
diff --git a/package/automake/gtk-doc.m4 b/package/automake/gtk-doc.m4
index 2cfa1e7..3675543 100644
--- a/package/automake/gtk-doc.m4
+++ b/package/automake/gtk-doc.m4
@@ -1,16 +1,33 @@ 
 dnl -*- mode: autoconf -*-
 
-# serial 1
+# serial 2
 
 dnl Usage:
 dnl   GTK_DOC_CHECK([minimum-gtk-doc-version])
 AC_DEFUN([GTK_DOC_CHECK],
 [
+  AC_REQUIRE([PKG_PROG_PKG_CONFIG])
   AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
   AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
 
+  ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"])
+  AC_MSG_CHECKING([for gtk-doc])
+  PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no])
+  AC_MSG_RESULT($have_gtk_doc)
+
+  if test "$have_gtk_doc" = "no"; then
+      AC_MSG_WARN([
+  You will not be able to create source packages with 'make dist'
+  because $gtk_doc_requires is not found.])
+  fi
+
   dnl check for tools we added during development
-  AC_PATH_PROG([GTKDOC_CHECK],[gtkdoc-check])
+  dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that
+  dnl may not be writable by the user. Currently, automake requires that the
+  dnl test name must end in '.test'.
+  dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638
+  AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test])
+  AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check])
   AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true])
   AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf])
 
@@ -27,17 +44,22 @@  AC_DEFUN([GTK_DOC_CHECK],
                    [use gtk-doc to build documentation [[default=no]]]),,
     [enable_gtk_doc=no])
 
-  if test x$enable_gtk_doc = xyes; then
-    ifelse([$1],[],
-      [PKG_CHECK_EXISTS([gtk-doc],,
-                        AC_MSG_ERROR([gtk-doc not installed and --enable-gtk-doc requested]))],
-      [PKG_CHECK_EXISTS([gtk-doc >= $1],,
-                        AC_MSG_ERROR([You need to have gtk-doc >= $1 installed to build $PACKAGE_NAME]))])
-  fi
-
   AC_MSG_CHECKING([whether to build gtk-doc documentation])
   AC_MSG_RESULT($enable_gtk_doc)
 
+  if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then
+    AC_MSG_ERROR([
+  You must have $gtk_doc_requires installed to build documentation for
+  $PACKAGE_NAME. Please install gtk-doc or disable building the
+  documentation by adding '--disable-gtk-doc' to '[$]0'.])
+  fi
+
+  dnl don't check for glib if we build glib
+  if test "x$PACKAGE_NAME" != "xglib"; then
+    dnl don't fail if someone does not have glib
+    PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0  >= 2.10.0,,[:])
+  fi
+
   dnl enable/disable output formats
   AC_ARG_ENABLE([gtk-doc-html],
     AS_HELP_STRING([--enable-gtk-doc-html],
@@ -52,7 +74,12 @@  AC_DEFUN([GTK_DOC_CHECK],
     enable_gtk_doc_pdf=no
   fi
 
+  if test -z "$AM_DEFAULT_VERBOSITY"; then
+    AM_DEFAULT_VERBOSITY=1
+  fi
+  AC_SUBST([AM_DEFAULT_VERBOSITY])
 
+  AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes])
   AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes])
   AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes])
   AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes])