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

Bug#912190: mixx uses inappropriate compiler flags on arm.



package: mixxx
version: 2.1.3~dfsg-1
severity: serious
tags: patch

mixxx unconditionally uses -mfloat-abi=hard and -mfpu=neon on arm*. These are inappropriate in Debian.

On armhf "-mfloat-abi=hard" is redundant but not harmful "-mfpu=neon" will likely result in binaries that will break on the baseline CPU level for the port.

On armel "-mfloat-abi=hard" breaks the build (the error message shown in the build log does not show the real cause but inspecting config.log after a build attempt does). I think -mfpu is a no-op on armel unless -mfloat-abi is also used but it is still not good practice to use it.

On arm64 "-mfloat-abi=hard" and "-mfpu=neon" both break the build.

I did my research with version 2.1.4~dfsg-1 but looking at the build logs it looks like 2.1.3~dfsg-1 was probably affected by the same issue.

While working on the above issue I also found that the clean target was not cleaning up properly.

Attached is a debdiff that removes the offending compiler flags and fixes the clean target.

diff -Nru mixxx-2.1.4~dfsg/debian/changelog mixxx-2.1.4~dfsg/debian/changelog
--- mixxx-2.1.4~dfsg/debian/changelog	2018-10-07 13:15:30.000000000 +0000
+++ mixxx-2.1.4~dfsg/debian/changelog	2018-10-28 03:49:20.000000000 +0000
@@ -1,3 +1,11 @@
+mixxx (2.1.4~dfsg-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Remove inappropriate compiler flags on arm.
+  * Fix clean target.
+
+ -- Peter Michael Green <plugwash@debian.org>  Sun, 28 Oct 2018 03:49:20 +0000
+
 mixxx (2.1.4~dfsg-1) unstable; urgency=medium
 
   [ Olivier Humbert ]
diff -Nru mixxx-2.1.4~dfsg/debian/patches/0004-remove-inapprorpriate-arm-compiler-flags.patch mixxx-2.1.4~dfsg/debian/patches/0004-remove-inapprorpriate-arm-compiler-flags.patch
--- mixxx-2.1.4~dfsg/debian/patches/0004-remove-inapprorpriate-arm-compiler-flags.patch	1970-01-01 00:00:00.000000000 +0000
+++ mixxx-2.1.4~dfsg/debian/patches/0004-remove-inapprorpriate-arm-compiler-flags.patch	2018-10-28 03:38:36.000000000 +0000
@@ -0,0 +1,31 @@
+Description: Remove inappropriate compiler flags on arm.
+ The flags used by this package result in build failures
+ and violations of the minimum CPU baseline. Remove them.
+Author: Peter Micheal Green <plugwash@debian.org>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: https://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: 2018-10-28
+
+--- mixxx-2.1.4~dfsg.orig/build/features.py
++++ mixxx-2.1.4~dfsg/build/features.py
+@@ -1163,8 +1163,8 @@ class Optimize(Feature):
+                         build.env.Append(CCFLAGS='-mfpmath=sse')
+                 elif build.architecture_is_arm:
+                     self.status = self.build_status(optimize_level)
+-                    build.env.Append(CCFLAGS='-mfloat-abi=hard')
+-                    build.env.Append(CCFLAGS='-mfpu=neon')
++                    #build.env.Append(CCFLAGS='-mfloat-abi=hard')
++                    #build.env.Append(CCFLAGS='-mfpu=neon')
+                 else:
+                     self.status = self.build_status(optimize_level)
+                 # this sets macros __SSE2_MATH__ __SSE_MATH__ __SSE2__ __SSE__
diff -Nru mixxx-2.1.4~dfsg/debian/patches/series mixxx-2.1.4~dfsg/debian/patches/series
--- mixxx-2.1.4~dfsg/debian/patches/series	2018-08-23 20:58:34.000000000 +0000
+++ mixxx-2.1.4~dfsg/debian/patches/series	2018-10-28 03:36:48.000000000 +0000
@@ -1,3 +1,4 @@
 0001-disable_soundsourcem4a.patch
 0002-desktop_file.patch
 0003-soundtouch.patch
+0004-remove-inapprorpriate-arm-compiler-flags.patch
diff -Nru mixxx-2.1.4~dfsg/debian/rules mixxx-2.1.4~dfsg/debian/rules
--- mixxx-2.1.4~dfsg/debian/rules	2018-05-02 15:02:09.000000000 +0000
+++ mixxx-2.1.4~dfsg/debian/rules	2018-10-28 03:49:20.000000000 +0000
@@ -54,6 +54,7 @@
 	dh_clean .sconsign.dblite cachecustom.py \
 		config.log src/build.h build/*.pyc mixxx.1
 	dh_auto_clean
+	rm -rf lin*_build/
 
 override_dh_auto_install:
 	scons $(SCONS_OPTS) install

Reply to: