Project

General

Profile

Actions

Bug #352

closed

Upstream repo is deprecated

Added by Hammel over 10 years ago. Updated over 10 years ago.

Status:
Closed
Priority:
Immediate
Assignee:
Category:
Build
Target version:
Start date:
02 Jul 2014
Due date:
% Done:

100%

Estimated time:
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.

Actions #1

Updated by Hammel over 10 years ago

  • Priority changed from Urgent to Immediate
Actions #2

Updated by Hammel over 10 years ago

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

Updated by Hammel over 10 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.

Actions #4

Updated by Hammel over 10 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
    
Actions #5

Updated by Hammel over 10 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.

Actions #6

Updated by Hammel over 10 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.

Actions #7

Updated by Hammel over 10 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.
Actions #8

Updated by Hammel over 10 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.

Actions #9

Updated by Hammel over 10 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.

Actions #10

Updated by Hammel over 10 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.

Actions

Also available in: Atom PDF