Hi there. I am taking a look at packaging HandBrake for Debian and, while doing it, I noticed that we (Debian) had some patches against lame that were not applied in our (lame, upstream) tree.
Some of the patches I saw in Debian's packaging effort that seem to be worth applying are included in this series. I did some facelifting here and there, to include more details in the changelog (for future reference---and tried to dig up some historical facts for justification of the patches). I hope that I have not broken anything in other environments (e.g., in Windows land or operating systems other than Debian/Ubuntu systems), but since I am not 100% confident with the changes, I am asking here for some peer-review. If I don't receive further feedback in 1 week, I will just commit the changes to the main branch of lame's CVS repo, but, of course, I would prefer to receive at least one ACK or NACK before doing so. Regards, Rogério Brito. Rogério Brito (3): configure.in: Rewrap for (human) legibility. acinclude.m4: Include GTK-1 autoconf directives in build system. libmp3lame: Fix possible race condition causing build failures. acinclude.m4 | 193 +++++++++++++++++++++++++++++++++++++++++++ configure.in | 25 +++++- libmp3lame/i386/Makefile.am | 8 +- 3 files changed, 221 insertions(+), 5 deletions(-) -- 1.7.10 From b160836f7a1d16a56d1add054b7a0e5d6a20a825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= <rbr...@ime.usp.br> Date: Fri, 1 Jun 2012 02:21:58 -0300 Subject: [PATCH 1/3] configure.in: Rewrap for (human) legibility. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: lame-...@lists.sf.net Cc: pkg-multimedia-maintainers@lists.alioth.debian.org This also helps by being diff-friendly if we change only one of the parts of a long line. Signed-off-by: Rogério Brito <rbr...@ime.usp.br> --- configure.in | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/configure.in b/configure.in index edf39b8..46da876 100644 --- a/configure.in +++ b/configure.in @@ -1152,6 +1152,29 @@ AC_SUBST(CPUCCODE) AC_SUBST(CONFIG_DEFS) -AC_CONFIG_FILES([Makefile libmp3lame/Makefile libmp3lame/i386/Makefile libmp3lame/vector/Makefile frontend/Makefile mpglib/Makefile doc/Makefile doc/html/Makefile doc/man/Makefile include/Makefile Dll/Makefile misc/Makefile debian/Makefile dshow/Makefile ACM/Makefile ACM/ADbg/Makefile ACM/ddk/Makefile ACM/tinyxml/Makefile lame.spec mac/Makefile macosx/Makefile macosx/English.lproj/Makefile macosx/LAME.xcodeproj/Makefile vc_solution/Makefile]) +AC_CONFIG_FILES([Makefile \ + libmp3lame/Makefile \ + libmp3lame/i386/Makefile \ + libmp3lame/vector/Makefile \ + frontend/Makefile \ + mpglib/Makefile \ + doc/Makefile \ + doc/html/Makefile \ + doc/man/Makefile \ + include/Makefile \ + Dll/Makefile \ + misc/Makefile \ + debian/Makefile \ + dshow/Makefile \ + ACM/Makefile \ + ACM/ADbg/Makefile \ + ACM/ddk/Makefile \ + ACM/tinyxml/Makefile \ + lame.spec \ + mac/Makefile \ + macosx/Makefile \ + macosx/English.lproj/Makefile \ + macosx/LAME.xcodeproj/Makefile \ + vc_solution/Makefile]) AC_OUTPUT -- 1.7.10 From 27edb7f9472b5f727da9896d51235aeb71fc876d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= <rbr...@ime.usp.br> Date: Fri, 1 Jun 2012 02:43:00 -0300 Subject: [PATCH 2/3] acinclude.m4: Include GTK-1 autoconf directives in build system. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: lame-...@lists.sf.net Cc: pkg-multimedia-maintainers@lists.alioth.debian.org Resurrect knowledge of how to deal with GTK1. This was transplanted back from aclocal.m4 with a patch provided by Andres Mejia <ame...@debian.org>, from Debian's packaging of lame, even though the original code is attributed to Owen Taylor and dated 97-11-3. Anyway, with this part not lost again, we can easily regenerate autotools' files with a simple `autoconf -vfi` invocation. Signed-off-by: Rogério Brito <rbr...@ime.usp.br> --- acinclude.m4 | 193 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index 0b8f869..eef0c3d 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -85,4 +85,197 @@ int main(void) [AC_MSG_WARN(can't check for IEEE854 compliant 80 bit floats)] )])]) # alex_IEEE854_FLOAT80 +# Configure paths for GTK+ +# Owen Taylor 97-11-3 +dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS +dnl +AC_DEFUN([AM_PATH_GTK], +[dnl +dnl Get the cflags and libraries from the gtk-config script +dnl +AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], + gtk_config_prefix="$withval", gtk_config_prefix="") +AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], + gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") +AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], + , enable_gtktest=yes) + + for module in . $4 + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + AC_PATH_PROG(GTK_CONFIG, gtk-config, no) + min_gtk_version=ifelse([$1], ,0.99.7,$1) + AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK is sufficiently new. (Also sanity +dnl checks the results of gtk-config to some extent +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include <gtk/gtk.h> +#include <stdio.h> +#include <stdlib.h> + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include <gtk/gtk.h> +#include <stdio.h> +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) -- 1.7.10 From a50b77fc0aa5a59fef2ef8cb1a7a8e56d324ba4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rog=C3=A9rio=20Brito?= <rbr...@ime.usp.br> Date: Fri, 1 Jun 2012 02:53:12 -0300 Subject: [PATCH 3/3] libmp3lame: Fix possible race condition causing build failures. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: lame-...@lists.sf.net Cc: pkg-multimedia-maintainers@lists.alioth.debian.org This was discovered in automated builds by the Debian project and the patch provided is by Andres Mejia <ame...@debian.org>. Please, note that only part of the patch (the one touching Makefile.am) was applied, since the changes in Makefile.in should be picked up when regenerating files with autotools. Signed-off-by: Rogério Brito <rbr...@ime.usp.br> --- libmp3lame/i386/Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libmp3lame/i386/Makefile.am b/libmp3lame/i386/Makefile.am index a375225..032c2b2 100644 --- a/libmp3lame/i386/Makefile.am +++ b/libmp3lame/i386/Makefile.am @@ -15,6 +15,7 @@ nasm_sources = \ if HAVE_NASM noinst_LTLIBRARIES = liblameasmroutines.la liblameasmroutines_la_SOURCES = $(nasm_sources) +liblameasmroutines_la_DEPENDENCIES = $(nasm_sources:.nas.lo) am_liblameasmroutines_la_OBJECTS = \ choose_table$U.lo \ cpu_feat$U.lo \ @@ -53,11 +54,10 @@ NASMFLAGS=@NASM_FORMAT@ -i $(top_srcdir)/libmp3lame/@CPUTYPE@/ $(NASM) $(NASMFLAGS) $< -o $@ -l $@.lst .nas.lo: $< nasm.h - mkdir -p .libs $(ECHO) '# Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06)' >$@ - $(ECHO) "pic_object='.libs/$*.o'" >>$@ - $(ECHO) "non_pic_object='.libs/$*.o'" >>$@ - $(NASM) $(NASMFLAGS) $< -o .libs/$*.o -l $@.lst + $(ECHO) "pic_object='$*.o'" >>$@ + $(ECHO) "non_pic_object='$*.o'" >>$@ + $(NASM) $(NASMFLAGS) $< -o $*.o -l $@.lst COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -- 1.7.10 _______________________________________________ pkg-multimedia-maintainers mailing list pkg-multimedia-maintainers@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-multimedia-maintainers