[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Need a mentor with a !x86 machine



John Lightsey wrote:
> I'm trying to adopt xmms-goom which has a release critical bug related to 
> !x86 architectures.  I believe the version I've packaged fixes the problem, 
> but I don't have access to a !x86 machine running unstable to test it on.  If 
> someone could download, build, and test this package I'd be very gratefull.
> 
> http://www.nixnuts.net/xmms-goom.tar.gz
> 
> All of the necessary files are included.  If it gives you any errors during 
> the build process please send me a copy of the build log.

One thing I see in the upstream source which will likely cause trouble
is the following.

File ./src/Makefile.am:

  CFLAGS = -O9 -g -DDATADIR=\"@XMMS_DATA_DIR@\" @XMMS_CFLAGS@ `sdl-config --cflags`

And then later on in the file:

  zoom_filter_mmx.lo:zoom_filter_mmx.c
          gcc -O9 -c -funroll-all-loops -fno-schedule-insns zoom_filter_mmx.c -o z oom_filter_mmx.lo -DHAVE_MMX

Those hard coded CFLAGS can't be disabled at configure time.  On any
architecture with optimizer sensitivities such as is often the case on
less mature ports this can cause trouble.

As help to convince upstream this is bad, refer them to the automake
documentation.

    Variables reserved for the user
    ===============================

    Some `Makefile' variables are reserved by the GNU Coding Standards for
    the use of the "user" - the person building the package.  For instance,
    `CFLAGS' is one such variable.

       Sometimes package developers are tempted to set user variables such
    as `CFLAGS' because it appears to make their job easier - they don't
    have to introduce a second variable into every target.

       However, the package itself should never set a user variable,
    particularly not to include switches which are required for proper
    compilation of the package.  Since these variables are documented as
    being for the package builder, that person rightfully expects to be able
    to override any of these variables at build time.

       To get around this problem, automake introduces an automake-specific
    shadow variable for each user flag variable.  (Shadow variables are not
    introduced for variables like `CC', where they would make no sense.)
    The shadow variable is named by prepending `AM_' to the user variable's
    name.  For instance, the shadow variable for `YFLAGS' is `AM_YFLAGS'.

Which would just cause them to want to put AM_CFLAGS = -O9 in their
Makefile.am which is just as bad.  Instead they should not set it at
all.  Comments from the list as to how to handle this problem?

Bob

Attachment: pgpNBgjva6O2c.pgp
Description: PGP signature


Reply to: