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 <plugw...@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 <plugw...@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