Bug #352

Upstream repo is deprecated

Added by Hammel about 3 years ago. Updated about 3 years ago.

Status:ClosedStart date:02 Jul 2014
Priority:ImmediateDue date:
Assignee:Hammel% Done:

100%

Category:Build
Target version:PiBox - 0.9.0
Severity:01 - Critical

Description

I'm currently using the huecke repository: https://github.com/huceke/omxplayer/

However this repo is marked as deprecated. The official repository is popcornmix: https://github.com/popcornmix/omxplayer/

The switch is easy - just update OMX_URL in configs/omx.cfg. However, popcornmix now has a dependency on openssl that is not resolved even though the staging tree has that library. I can either try to find out why the library is not being found (by the ffmpeg build) or patch the Makefile.ffmpeg to disable use of openssl.

My build already copies in a modified version of the top level Makefile. I should diff it with the huecke repo to see if there is anything there that tells me why popcornmix is not finding the openssl library.

Associated revisions

Revision 95b16c2e
Added by Hammel about 3 years ago

RM #352, RM #355: Migrated to master branch of popcornmix repo. Verified missing library and font files are in the opkg.

History

#1 Updated by Hammel about 3 years ago

  • Priority changed from Urgent to Immediate

#2 Updated by Hammel about 3 years ago

  • Status changed from New to In Progress
  • Severity changed from 03 - Medium to 01 - Critical

#3 Updated by Hammel about 3 years ago

  • % Done changed from 0 to 10

Here is a discussion on the ffmpeg build problem in the popcornmix repo.

I got around it by disabling openssl for the ffmpeg. But a better solution would be to use my own ffmpeg compilation in the buildroot staging tree. I'll have to look into that possibility a bit more.

For now, ffmpeg builds but there are errors with the omxplayer build:

utils/log.cpp: In static member function 'static void CLog::Log(int, const char*, ...)':
utils/log.cpp:74:5: error: 'SYSTEMTIME' was not declared in this scope
utils/log.cpp:74:16: error: expected ';' before 'time'
utils/log.cpp:75:10: error: request for member 'wHour' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:76:10: error: request for member 'wMinute' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:77:10: error: request for member 'wSecond' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:96:43: error: request for member 'wHour' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:96:55: error: request for member 'wMinute' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:96:69: error: request for member 'wSecond' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:98:57: error: expected ')' before 'LINE_ENDING'
utils/log.cpp:126:27: error: 'LINE_ENDING' was not declared in this scope
utils/log.cpp:129:41: error: request for member 'wHour' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:129:53: error: request for member 'wMinute' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp:129:67: error: request for member 'wSecond' in 'time', which is of non-class type 'time_t(time_t*)throw () {aka long int(long int*)throw ()}'
utils/log.cpp: In static member function 'static bool CLog::Init(const char*)':
utils/log.cpp:152:17: error: aggregate 'CLog::Init(const char*)::stat info' has incomplete type and cannot be defined
utils/log.cpp:153:41: error: invalid use of incomplete type 'struct CLog::Init(const char*)::stat'
utils/log.cpp:152:12: error: forward declaration of 'struct CLog::Init(const char*)::stat'
utils/log.cpp:156:38: error: invalid use of incomplete type 'struct CLog::Init(const char*)::stat'
utils/log.cpp:152:12: error: forward declaration of 'struct CLog::Init(const char*)::stat'
make[1]: *** [utils/log.o] Error 1
make[1]: Leaving directory `/home/mjhammel/src/ximba/omxplayer/bld/omxplayer'

I think this may be due to my using my modified huecke makefile with the popcornmix repo. I'm going to have to figure out the diffs for the huecke file and then apply them to the popcornmix file, possibly manually.

#4 Updated by Hammel about 3 years ago

Makefile diffs
  1. add to LDFLAGS: -lpng -lbz2
  2. add clobber target:
     clobber:
       @make -f Makefile.ffmpeg clobber
       @make --no-print-directory clean
    
  3. Remove from ffmpeg target: @rm -rf ffmpeg
Makefile.include diffs
  1. Replace configuration settings (remove ifeq). BUILDROOT should be set by build system.
     PREFIX      :=/usr
     BUILDROOT   :=/home/mjhammel/src/ximba/raspberrypi/bld/buildroot-2013.11
     SDKSTAGE    :=$(BUILDROOT)/output/staging
     TARGETFS    :=$(BUILDROOT)/output/target
     TOOLCHAIN   :=/opt/rpiTC
     HOST        :=arm-unknown-linux-gnueabi
     SYSROOT     :=$(TOOLCHAIN)/$(HOST)/sysroot
    
     JOBS=2
     CFLAGS +=  -mfloat-abi=hard -mcpu=arm1176jzf-s -fomit-frame-pointer -mabi=aapcs-linux -mtune=arm1176jzf-s -mfpu=vfp -Wno-psabi -mno-apcs-stack-check -O3 -mstructure-size-boundary=32 -mno-sched-prolog -march=armv6zk
    
     LDFLAGS     := \
       -Lffmpeg_compiled/usr/local/lib \
       -L$(SYSROOT)/lib \
       -L$(SYSROOT)/usr/lib \
       -L$(TARGETFS)/opt/vc/lib/ \
       -L$(STAGING)/usr/lib
    
     PATH        := $(TOOLCHAIN)/bin:$(PATH)
    
     INCLUDES    =  \
       -I$(SYSROOT)/usr/include \
       -I$(TARGETFS)/opt/vc/include \
       -I$(TARGETFS)/opt/vc/include/interface/vcos/pthreads \
       -I$(TARGETFS)/opt/vc/include/interface/vmcs_host \
       -isystem$(SDKSTAGE)/usr/include
    

#5 Updated by Hammel about 3 years ago

  • % Done changed from 10 to 30

Made these mods and it got further but still dies:

In file included from OMXVideo.cpp:28:0:
OMXVideo.h:59:13: error: 'OMX_IMAGEFILTERANAGLYPHTYPE' has not been declared
OMXVideo.h:105:3: error: 'OMX_IMAGEFILTERANAGLYPHTYPE' does not name a type
OMXVideo.h:59:52: error: 'OMX_ImageFilterAnaglyphNone' was not declared in this scope
OMXVideo.cpp: In constructor 'COMXVideo::COMXVideo()':
OMXVideo.cpp:66:3: error: 'm_anaglyph' was not declared in this scope
OMXVideo.cpp:66:25: error: 'OMX_ImageFilterAnaglyphNone' was not declared in this scope
OMXVideo.cpp: In member function 'bool COMXVideo::PortSettingsChanged()':
OMXVideo.cpp:179:80: error: 'm_anaglyph' was not declared in this scope
OMXVideo.cpp:209:92: error: 'm_anaglyph' was not declared in this scope
OMXVideo.cpp:265:23: error: 'OMX_ImageFilterAnaglyphNone' was not declared in this scope
OMXVideo.cpp:284:23: error: 'OMX_ImageFilterAnaglyphNone' was not declared in this scope
OMXVideo.cpp:288:35: error: 'OMX_ImageFilterAnaglyph' was not declared in this scope
OMXVideo.cpp:295:37: error: 'OMX_ImageFilterDeInterlaceFast' was not declared in this scope
OMXVideo.cpp: At global scope:
OMXVideo.cpp:376:22: error: 'OMX_IMAGEFILTERANAGLYPHTYPE' has not been declared
OMXVideo.cpp: In member function 'bool COMXVideo::Open(COMXStreamInfo&, OMXClock*, const CRect&, float, EDEINTERLACEMODE, int,
bool, int, float)':
OMXVideo.cpp:522:3: error: 'm_anaglyph' was not declared in this scope
OMXVideo.cpp: In member function 'void COMXVideo::Close()':
OMXVideo.cpp:722:23: error: 'm_anaglyph' was not declared in this scope
OMXVideo.cpp:730:23: error: 'm_anaglyph' was not declared in this scope
OMXVideo.cpp:743:3: error: 'm_anaglyph' was not declared in this scope
OMXVideo.cpp:743:25: error: 'OMX_ImageFilterAnaglyphNone' was not declared in this scope
OMXVideo.cpp: In member function 'void COMXVideo::Reset()':
OMXVideo.cpp:864:23: error: 'm_anaglyph' was not declared in this scope
make[1]: *** [OMXVideo.o] Error 1
make[1]: Leaving directory `/home/mjhammel/src/ximba/omxplayer/bld/omxplayer'
make: *** [.omx] Error 2

Now I need to see if there is a stable commit I can use.

#6 Updated by Hammel about 3 years ago

The problem is that the vc firmware is not up to date on PiBox. To update that I have to rev to kernel 3.12.25, which is currently the default kernel for the Pi repos.

Sooooo
  1. Rev kernel to 3.12.25
  2. Rev firmware to latest
  3. Test distro build + opkgs

If all that works, then I can retry the omxplayer build.

#7 Updated by Hammel about 3 years ago

  • Status changed from In Progress to New
  • % Done changed from 30 to 40

Turned out simpler than that. I just did an update of the gles tree and that got past the previous error, but now I've hit a dbus compile error.

In file included from OMXControl.cpp:7:0:
/usr/include/dbus-1.0/dbus/dbus.h:29:33: fatal error: dbus/dbus-arch-deps.h: No such file or directory
compilation terminated.

#8 Updated by Hammel about 3 years ago

  • Status changed from New to In Progress
  • % Done changed from 40 to 50

Fixed this with proper use of targetfs and sdkstage. But then I ran into a packaging problem. Turns out there is a bug in the dist target of the omxplayer Makefile:

    cd $(DIST); tar -czf ../$(DIST).tgz *

This doesn't make any sense unless DIST is a relative directory. I'll need to patch this in my copy of the Makefile. That should be the final problem. I'll try the fix tomorrow.

#9 Updated by Hammel about 3 years ago

  • % Done changed from 50 to 70

Migrated to master branch of popcornmix repo. Verified missing library and font files are in the opkg.

Just need to test the new binary on the current distribution. If it works at all (even if with some bugs) then this issue can be closed.

#10 Updated by Hammel about 3 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 70 to 100

Works great on the hardware. All updates checked in an pushed upstream.

Closing issue.

Also available in: Atom PDF