Subject: pkg/33999: multimedia/vlc08 Solaris gcc amd64 MAINTAINER
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: Gilles Dauphin <dauphin@enst.fr>
List: pkgsrc-bugs
Date: 07/13/2006 18:50:01
>Number:         33999
>Category:       pkg
>Synopsis:       multimedia/vlc08 Solaris gcc amd64 MAINTAINER
>Confidential:   no
>Severity:       non-critical
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Jul 13 18:50:00 +0000 2006
>Originator:     Gilles Dauphin
>Release:        SunOS 5.10 i86pc
>Organization:
ENST 
>Environment:


System: SunOS bi.enst.fr 5.10 Generic_Patch_118844-30 i86pc


>Description:


gcc -Wsign-compare -Wall -O -I/pkg/obj/multimedia/vlc08/work/.buildlink/include -I/pkg/obj/multimedia/vlc08/work/.buildlink/include/faad2 -I/pkg/obj/multimedia/vlc08/work/.buildlink/include/SDL -I/pkg/obj/multimedia/vlc08/work/.buildlink/include/freetype2 -DGLX_GLXEXT_LEGACY -D_POSIX_PTHREAD_SEMANTICS -pipe -Wl,-R/usr/pkg/lib -Wl,-R/usr/openwin/lib/64 -o libnsc_plugin.so -shared -fpic -fPIC -u vlc_entry__0_8_5  -L/pkg/obj/multimedia/vlc08/work/.buildlink/lib -L/pkg/obj/multimedia/vlc08/work/.x11-buildlink/lib/64 libnsc_plugin.a -R/usr/pkg/lib
if g++ -DHAVE_CONFIG_H -I. -I. -I../..   -DPNG_NO_ASSEMBLER_CODE -I/usr/pkg/include -I/usr/pkg/include/faad2 -I/usr/pkg/include/SDL -I/usr/pkg/include/freetype2 -DGLX_GLXEXT_LEGACY -I/usr/include -DSYS_SOLARIS -I../../include `top_builddir="../.." ../../vlc-config --cxxflags builtin mkv` -Wsign-compare -Wsign-compare -Wall -O -I/usr/pkg/include -I/usr/pkg/include/faad2 -I/usr/pkg/include/SDL -I/usr/pkg/include/freetype2 -DGLX_GLXEXT_LEGACY -I/usr/include -D_POSIX_PTHREAD_SEMANTICS -pipe -MT libmkv_a-mkv.o -MD -MP -MF ".deps/libmkv_a-mkv.Tpo" -c -o libmkv_a-mkv.o `test -f 'mkv.cpp' || echo './'`mkv.cpp; \
        then mv -f ".deps/libmkv_a-mkv.Tpo" ".deps/libmkv_a-mkv.Po"; else rm -f ".deps/libmkv_a-mkv.Tpo"; exit 1; fi
In file included from ../../include/vlc_common.h:1126,
                 from ../../include/vlc/vlc.h:153,
                 from mkv.cpp:30:
/pkg/obj/multimedia/vlc08/work/.buildlink/include/libintl.h:119: warning: asm declaration ignored due to conflict with previous rename
/pkg/obj/multimedia/vlc08/work/.buildlink/include/libintl.h:135: warning: asm declaration ignored due to conflict with previous rename
/pkg/obj/multimedia/vlc08/work/.buildlink/include/libintl.h:154: warning: asm declaration ignored due to conflict with previous rename
mkv.cpp: In function `int Open(vlc_object_t*)':
mkv.cpp:1438: error: cannot allocate an object of type `vlc_stream_io_callback'
mkv.cpp:1438: error:   because the following virtual functions are abstract:
/pkg/obj/multimedia/vlc08/work/.buildlink/include/ebml/IOCallback.h:66: error:  virtual void libebml::IOCallback::setFilePointer(int64, libebml::seek_mode)
mkv.cpp:1524: error: cannot allocate an object of type `vlc_stream_io_callback'
mkv.cpp:1524: error:   since type `vlc_stream_io_callback' has abstract virtual functions
mkv.cpp: In function `void BlockDecode(demux_t*, libmatroska::KaxBlock*, libmatroska::KaxSimpleBlock*, mtime_t, mtime_t, bool)':
mkv.cpp:2000: warning: comparison between signed and unsigned integer expressions
mkv.cpp: In function `void Seek(demux_t*, mtime_t, double, chapter_item_c*)':
mkv.cpp:3220: warning: long long int format, mtime_t arg (arg 6)
mkv.cpp: In member function `void matroska_segment_c::ParseSeekHead(libmatroska::KaxSeekHead*)':
mkv.cpp:3994: warning: long long int format, int64_t arg (arg 6)
mkv.cpp:3999: warning: long long int format, int64_t arg (arg 6)
mkv.cpp:4004: warning: long long int format, int64_t arg (arg 6)
mkv.cpp: In member function `void matroska_segment_c::ParseInfo(libmatroska::KaxInfo*)':
mkv.cpp:4566: warning: long long int format, uint64_t arg (arg 6)
mkv.cpp:4575: warning: long long int format, mtime_t arg (arg 6)
mkv.cpp: In member function `void matroska_segment_c::ParseChapterAtom(int, libmatroska::KaxChapterAtom*, chapter_item_c&)':
mkv.cpp:4693: error: conversion from `libmatroska::KaxChapterUID' to `uint64_t' is ambiguous
/pkg/obj/multimedia/vlc08/work/.buildlink/include/ebml/EbmlUInteger.h:72: note: candidates are: libebml::EbmlUInteger::operator uint8() const
/pkg/obj/multimedia/vlc08/work/.buildlink/include/ebml/EbmlUInteger.h:73: note:                 libebml::EbmlUInteger::operator uint16() const
/pkg/obj/multimedia/vlc08/work/.buildlink/include/ebml/EbmlUInteger.h:74: note:                 libebml::EbmlUInteger::operator uint32() const
/pkg/obj/multimedia/vlc08/work/.buildlink/include/ebml/EbmlUInteger.h:75: note:                 libebml::EbmlUInteger::operator uint64() const
mkv.cpp:4694: warning: long long int format, int64_t arg (arg 6)
mkv.cpp:4708: warning: long long int format, int64_t arg (arg 6)
mkv.cpp:4715: warning: long long int format, int64_t arg (arg 6)
mkv.cpp: In member function `void matroska_segment_c::Seek(mtime_t, mtime_t)':
mkv.cpp:5544: warning: long long int format, int64_t arg (arg 6)
mkv.cpp: In member function `bool matroska_script_interpretor_c::Interpret(const binary*, size_t)':
mkv.cpp:6458: warning: long long int format, int64_t arg (arg 6)
gmake[4]: *** [libmkv_a-mkv.o] Error 1
gmake[4]: Leaving directory `/pkg/obj/multimedia/vlc08/work/vlc-0.8.5/modules/demux'



>How-To-Repeat:


bmake


>Fix:


First, I will be happy to become the maintainer of this package.
I use it. 

second, the patch is a little bit generic 
problem is the use of int64_t vs int64, int*_t vs int*
exist on some system and does not on other.

vlc must be coherent with libebml if it use it.

../../../vlc08.save/work/vlc-0.8.5//modules/demux/mkv.cpp
--- ./modules/demux/mkv.cpp     Sat May  6 17:52:16 2006
+++ ../../../vlc08.save/work/vlc-0.8.5//modules/demux/mkv.cpp   Thu Jul 13 
18:14:17 2006
@@ -517,12 +517,44 @@
     }
 
     virtual uint32   read            ( void *p_buffer, size_t i_size);
-    virtual void     setFilePointer  ( int64_t i_offset, seek_mode mode = 
seek_beginning );
+    virtual void     setFilePointer  ( int64 i_offset, seek_mode mode = 
seek_beginning );
     virtual size_t   write           ( const void *p_buffer, size_t i_size);
     virtual uint64   getFilePointer  ( void );
     virtual void     close           ( void );
 };
 
+void vlc_stream_io_callback::setFilePointer(int64 i_offset, seek_mode mode )
+{
+    int64_t i_pos;
+
+    switch( mode )
+    {
+        case seek_beginning:
+            i_pos = i_offset;
+            break;
+        case seek_end:
+            i_pos = stream_Size( s ) - i_offset;
+            break;
+        default:
+            i_pos= stream_Tell( s ) + i_offset;
+            break;
+    }
+
+    if( i_pos < 0 || i_pos >= stream_Size( s ) )
+    {
+        mb_eof = VLC_TRUE;
+        return;
+    }
+
+    mb_eof = VLC_FALSE;
+    if( stream_Seek( s, i_pos ) )
+    {
+        mb_eof = VLC_TRUE;
+    }
+    return;
+}
+
+
 /*****************************************************************************
  * Ebml Stream parser