Package: helix-player
Version: 1.0.5-1
Severity: important
Tags: patch
Justification: fails to build from source

The helix-player source package suffers from several small portability
bugs (most upstream's fault, I believe) that keep it from building
properly on most Debian architectures.  I have attached a patch that
addresses these just far enough to get it to build without errors on
amd64; however, certain fixes (such as setting SYSTEM_ID properly)
will need to be extended to the remaining architectures.  (I also
didn't bother encapsulating it as a dpatch, but that should be easy
enough to fix.)

BTW, you really ought to fix debian/rules clean to work from source
trees that *aren't* already pristine, per Policy 4.8.  As it is, a lot
of generated files are getting left behind; at best, this would bloat
the diff, but as it is, overwriting the top-level Makefile keeps
02_makefile.dpatch from being reversed, and the fact that many of
these files are binaries makes dpkg-source choke.  You may want to go
in for a setup where you copy the whole non-debian/ tree (or extract
it from a tarball) into a sandbox that the clean target can then
safely blow away in its entirety.

Thanks.

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.12.6
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)

Versions of packages helix-player depends on:
ii  libatk1.0-0             1.10.3-1         The ATK accessibility toolkit
ii  libc6                   2.3.5-6          GNU C Library: Shared libraries an
ii  libgcc1                 1:4.0.1-9        GCC support library
ii  libglib2.0-0            2.8.1-1          The GLib library of C routines
ii  libgtk2.0-0             2.6.10-1         The GTK+ graphical user interface 
ii  libogg0                 1.1.2-1          Ogg Bitstream Library
ii  libpango1.0-0           1.8.2-2          Layout and rendering of internatio
ii  libstdc++6              4.0.1-9          The GNU Standard C++ Library v3
ii  libtheora0              0.0.0.alpha4-1.1 The Theora Video Compression Codec
ii  libvorbis0a             1.1.0-1          The Vorbis General Audio Compressi
ii  libx11-6                6.8.2.dfsg.1-7   X Window System protocol client li
ii  libxext6                6.8.2.dfsg.1-7   X Window System miscellaneous exte
ii  libxv1                  6.8.2.dfsg.1-7   X Window System video extension li
ii  xlibs                   6.8.2.dfsg.1-7   X Window System client libraries m

helix-player recommends no packages.

-- no debconf information
diff -u helix-player-1.0.5/debian/rules helix-player-1.0.5/debian/rules
--- helix-player-1.0.5/debian/rules
+++ helix-player-1.0.5/debian/rules
@@ -23,6 +23,10 @@
 export BUILDRC:=$(shell pwd)/buildrc
 export SYSTEM_ID:=linux-2.2-libc6-$(EXT)
 
+ifeq (amd64,$(ARCH))
+  export SYSTEM_ID:=linux-2.6-glibc23-amd64
+endif
+
 build: build-stamp
 build-stamp: patch
 	@echo "--- Compiling"
only in patch2:
unchanged:
--- helix-player-1.0.5.orig/datatype/ogg/fileformat/unix.pcf
+++ helix-player-1.0.5/datatype/ogg/fileformat/unix.pcf
@@ -1,3 +1,4 @@
 
-project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libogg.a"))
-project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libvorbis.a"))
+# project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libogg.a"))
+# project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libvorbis.a"))
+project.AddSystemLibraries("ogg", "vorbis")
only in patch2:
unchanged:
--- helix-player-1.0.5.orig/datatype/theora/renderer/linux2.pcf
+++ helix-player-1.0.5/datatype/theora/renderer/linux2.pcf
@@ -53,7 +53,7 @@
 
 oggLibPath = os.path.join(GetSDKPath("oggvorbissdk"), "lib")
 
-project.AddLibraries(os.path.join(oggLibPath, "libogg.a"),
-                     os.path.join(oggLibPath, "libtheora.a"))
+#project.AddLibraries(os.path.join(oggLibPath, "libogg.a"),
+#                     os.path.join(oggLibPath, "libtheora.a"))
 
-project.AddSystemLibraries("pthread")
\ No newline at end of file
+project.AddSystemLibraries("pthread", "ogg", "theora")
only in patch2:
unchanged:
--- helix-player-1.0.5.orig/datatype/vorbis/renderer/unix.pcf
+++ helix-player-1.0.5/datatype/vorbis/renderer/unix.pcf
@@ -1,3 +1,4 @@
 
-project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libogg.a"))
-project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libvorbis.a"))
+# project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libogg.a"))
+# project.AddLibraries(os.path.join(GetSDKPath("oggvorbissdk"), "lib", "libvorbis.a"))
+project.AddSystemLibraries("ogg", "vorbis")
only in patch2:
unchanged:
--- helix-player-1.0.5.orig/audio/fixptutil/pub/math64.h
+++ helix-player-1.0.5/audio/fixptutil/pub/math64.h
@@ -124,7 +124,7 @@
 // GCC / i386
 ///////////////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUC__) && defined(__i386__) && !defined(_NO_GNU_AS)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__amd64__)) && !defined(_NO_GNU_AS)
 
 #define HAVE_PLATFORM_MACROS
 
@@ -199,7 +199,7 @@
 #ifdef DEBUG
 #define ASSERT(x) if (!(x)) __asm__ __volatile ("int $3" :: )
 #endif
-#endif // defined(__GNUC__) && defined(__i386__)
+#endif // defined(__GNUC__) && defined(__i386__|__amd64__)
 
 ///////////////////////////////////////////////////////////////////////////////////////
 // Sun native compiler / Sparc
only in patch2:
unchanged:
--- helix-player-1.0.5.orig/build/umakecf/linux-2.6-glibc23-amd64.cf
+++ helix-player-1.0.5/build/umakecf/linux-2.6-glibc23-amd64.cf
@@ -63,6 +63,6 @@
 platform.cc.args["default"] = platform.cc.args["default"] + \
         " -m64 -D__amd64__"
 
-project.RemoveSystemPaths("-L/usr/X11R6/lib")
-project.AddSystemPaths("-L/usr/X11R6/lib64")
+# project.RemoveSystemPaths("-L/usr/X11R6/lib")
+# project.AddSystemPaths("-L/usr/X11R6/lib64")
 
only in patch2:
unchanged:
--- helix-player-1.0.5.orig/common/import/gecko-sdk/nspr/include/prcpucfg.h
+++ helix-player-1.0.5/common/import/gecko-sdk/nspr/include/prcpucfg.h
@@ -182,6 +182,52 @@
 #define PR_BYTES_PER_WORD_LOG2  3
 #define PR_BYTES_PER_DWORD_LOG2 3
 
+#elif defined(__x86_64__)
+
+#define IS_LITTLE_ENDIAN 1
+#undef  IS_BIG_ENDIAN
+#define IS_64
+
+#define PR_BYTES_PER_BYTE   1
+#define PR_BYTES_PER_SHORT  2
+#define PR_BYTES_PER_INT    4
+#define PR_BYTES_PER_INT64  8
+#define PR_BYTES_PER_LONG   8
+#define PR_BYTES_PER_FLOAT  4
+#define PR_BYTES_PER_DOUBLE 8
+#define PR_BYTES_PER_WORD   8
+#define PR_BYTES_PER_DWORD  8
+
+#define PR_BITS_PER_BYTE    8
+#define PR_BITS_PER_SHORT   16
+#define PR_BITS_PER_INT     32
+#define PR_BITS_PER_INT64   64
+#define PR_BITS_PER_LONG    64
+#define PR_BITS_PER_FLOAT   32
+#define PR_BITS_PER_DOUBLE  64
+#define PR_BITS_PER_WORD    64
+
+#define PR_BITS_PER_BYTE_LOG2   3
+#define PR_BITS_PER_SHORT_LOG2  4
+#define PR_BITS_PER_INT_LOG2    5
+#define PR_BITS_PER_INT64_LOG2  6
+#define PR_BITS_PER_LONG_LOG2   6
+#define PR_BITS_PER_FLOAT_LOG2  5
+#define PR_BITS_PER_DOUBLE_LOG2 6
+#define PR_BITS_PER_WORD_LOG2   6
+
+#define PR_ALIGN_OF_SHORT   2
+#define PR_ALIGN_OF_INT     4
+#define PR_ALIGN_OF_LONG    8
+#define PR_ALIGN_OF_INT64   8
+#define PR_ALIGN_OF_FLOAT   4
+#define PR_ALIGN_OF_DOUBLE  8
+#define PR_ALIGN_OF_POINTER 8
+#define PR_ALIGN_OF_WORD    8
+
+#define PR_BYTES_PER_WORD_LOG2  3
+#define PR_BYTES_PER_DWORD_LOG2 3
+
 #elif defined(__mc68000__)
 
 #undef  IS_LITTLE_ENDIAN
only in patch2:
unchanged:
--- helix-player-1.0.5.orig/common/system/pub/platform/unix/pthreadthreads.h
+++ helix-player-1.0.5/common/system/pub/platform/unix/pthreadthreads.h
@@ -102,10 +102,15 @@
 
 #ifndef _MAC_UNIX
 
+#ifdef __amd64__
+// sem_t is a union, and therefore can't be used as a base class.
+typedef sem_t HXsem_t;
+#else
 struct HXsem_t : public sem_t
 {
     char padding[64]; /* Flawfinder: ignore */ // different linux versions have different binary reps blechhhh!
 };
+#endif
 
 //=======================================================================
 //

Reply via email to