Message ID | 1412936897-8478-1-git-send-email-gustavo@zacarias.com.ar |
---|---|
State | Accepted |
Headers | show |
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>
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
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.
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
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.
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
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.
>>>>> "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 --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])
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(-)