Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added OpenSSL & various protocol support to FFmpeg backend #229

Merged
merged 26 commits into from Aug 18, 2019

Conversation

abhiTronix
Copy link
Contributor

@abhiTronix abhiTronix commented Jul 30, 2019

PR Description

This PR introduces Major Fixes and updates like OpenSSL for opencv-python's FFmpeg backend.

Fixes

#204
#193

Changes

  • Major Fixes and updates for Docker files (both x86 & x86-64)
  • Enabled FFmpeg backend with OpenSSL
  • Removed libjpeg-turbo libs build from scratch

- Fixed Docker dependencies (both x86 & x86-64)
- Fixes bug opencv#204
@abhiTronix
Copy link
Contributor Author

abhiTronix commented Jul 30, 2019

@native-api I tested these changes on my machine and this fixes my bug too. Also, I didn't use --enable-nonfree to avoid license issues and It seems to works without it. 👍

@skvark
Copy link
Member

skvark commented Jul 30, 2019

Looks good. I have to build the Docker images locally and push them to quay.io. I'll try to make new releases during next month.

Copy link
Contributor

@native-api native-api left a comment

I doubt CentOS' stock OpenSSL is either safe to use, or even generally usable now. It doesn't even support TLS 1.1. Have to build a new version from source, I'm afraid.

@@ -23,7 +23,7 @@ RUN curl -O -L https://cmake.org/files/v3.9/cmake-3.9.0.tar.gz && \
cd .. && \
rm -rf cmake-3.9.0*

RUN yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ libtool make mercurial pkgconfig zlib-devel -y && \
RUN yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ libtool make mercurial pkgconfig openssl-devel zlib-devel -y && \
Copy link
Contributor

@native-api native-api Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CentOS 5's openssl is 0.9.8e which is ancient. Is it safe to use?..

Copy link
Contributor Author

@abhiTronix abhiTronix Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CentOS 5's openssl is 0.9.8e which is ancient. Is it safe to use?..

@native-api Wow, I didn't know that will be a problem too. Anyhow, I found this simple tutorial to do that. Should I make these changes?

Copy link
Contributor

@native-api native-api Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd go the same way other ffmpeg dependencies are built but that guide looks like a good reference point. Can't say much more, it's your job to see that everything hooks up nicely.

Copy link
Contributor Author

@abhiTronix abhiTronix Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@native-api Does this library links to an apt-installed FFmpeg in any case or only use this precompiled FFmpeg? I'm not 100% sure that if this patch worked on my machine due to these changes or it used my system FFmpeg during compiling while I'm testing.

@@ -50,7 +50,7 @@ RUN yum install autoconf automake bzip2 cmake freetype-devel gcc gcc-c++ libtool
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
PATH=~/bin:$PATH && \
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --enable-libvpx --enable-shared --enable-pic --bindir="$HOME/bin" && \
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --enable-libvpx --enable-openssl --enable-protocol=file,ftp,http,https,httpproxy,hls,mmsh,mmst,pipe,rtmp,rtmps,rtmpt,rtmpts,rtp,sctp,srtp,tcp,udp --enable-shared --enable-pic --bindir="$HOME/bin" && \
Copy link
Contributor

@native-api native-api Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a particular reason to enable these specific protocols? By default, all supported protocols are enabled AFAICS.

Copy link
Contributor

@native-api native-api Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Not criticizing, just wondering since this looks like just a copied full list at first glance but it's not actually the full list.)

Copy link
Contributor Author

@abhiTronix abhiTronix Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a particular reason to enable these specific protocols? By default, all supported protocols are enabled AFAICS.

@native-api Thanks for pointing this out. No there is no specific reason, I just thought these are the most commonly used protocols. Should I remove them?

Copy link
Contributor

@native-api native-api Jul 31, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. I don't think we should change the default without a real reason (I'm not implying that there's none, just that none was presented).

- updates to OpenSSL build from scratch
- removed specific protocol
- Added neccessary dependency
@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 1, 2019

@skvark Kindly review new changes/commit I recently added. Thank you.

@native-api
Copy link
Contributor

native-api commented Aug 2, 2019

@abhiTronix Did you test your changes? The x64 dockerfile at least fails for me with ./configure: No such file or directory because the script in https://github.com/openssl/openssl/archive/OpenSSL_1_1_1c.tar.gz is called "config"; and perl-core fails to install because there's no such package.

To make it clear when you are ready to show your changes, you can make a branch for testing and merge it to the PR branch when you are ready.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 2, 2019

@native-api

Did you test your changes?

Yes, there were no errors on my machine(Ubuntu 16.04 x64). The wheel file generated, ran without whatsoever failure or error like as before.

The x64 dockerfile at least fails for me with ./configure: No such file or directory because the script in https://github.com/openssl/openssl/archive/OpenSSL_1_1_1c.tar.gz is called "config"

But all other commands in docker is called with ./configure command it and it is not config but Configure 'with capital C'. We use this configure script for getting ready to build the software on linux specific system. This is a problem with OpenSSL developers itself to rename that file, and not a mistake from my end. Anyways I'll correct it.

perl-core fails to install because there's no such package.

On what machine are you testing? this package is meant for CentOS, and it's a valid package FYI.

To make it clear when you are ready to show your changes, you can make a branch for testing and merge it to the PR branch when you are ready.

Sorry but another branch will be waste of time. If you think something is wrong, Kindly point me in that direction to solve it rather than making it more confusing. Thank you.

@native-api
Copy link
Contributor

native-api commented Aug 2, 2019

Commands specified in a Dockerfile do not run directly on your system. They instead run in the container specified in FROM. So you need to test them with docker build - <Dockerfile.
For debugging and experimentation, you can docker run -it <container in FROM> bash and run the commands manually in the resulting shell.

@skvark
Copy link
Member

skvark commented Aug 2, 2019

The manylinux base image CentOS version is 5. It has to be very old to make the resulting binaries compatible with as many as possible glibc based GNU/Linux distributions. Therefore many dependencies have to be built manually because the pre-built packages provided by CentOS repositories can be easily 10 years old or they do not simply exist in there.

I originally assumed that the manylinux image would have contained a fresh build of OpenSSL but apparently it does not. @abhiTronix, please follow @native-api's instructions on how to test the commands. What I usually do:

  1. docker run -it <container in FROM> bash
  2. Build the new library / dependency manually according to the instructions provided
  3. When everything seems to be ok, copy the commands to the Dockerfile in correct order
  4. Build the Docker image with docker build (note: this takes a lot of time even with a fast processor)
  5. Run the new container similarly as in step 1. and check that everything is ok

One addition (if possible): I would like to see also the output of ffmpeg -L command to see that the license is still LGPL.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 3, 2019

@skvark and @native-api Thank you for explaining thoroughly.
But, When I tried to run docker commands individually within centos image pulled with docker run -it centos bash command, I immediately encountered various path problems and thereby all previously compiled binaries (like yasm, nasm, OpenSSL) were unable to detect while further compiling libvpx(requires yasm) and FFmpeg binaries, and leads to build errors. I tried various methods to solve it but finally adding $HOME/ffmpeg_build and $HOME/bin to system path in container solved this problem. This is normal behavior or a bug?

 

Also, --enable-openssl activate all the protocols in the FFmpeg build and license is License: LGPL version 2.1 or later, here is the detailed ./configure output with required details:

[root@aaea5958fff2 ffmpeg]# PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --enable-openssl --enable-libvpx --enable-shared --enable-pic --bindir="$HOME/bin" 
install prefix            /root/ffmpeg_build
source path               .
C compiler                gcc
C library                 glibc
ARCH                      x86 (generic)
big-endian                no
runtime cpu detection     yes
standalone assembly       yes
x86 assembler             nasm
MMX enabled               yes
MMXEXT enabled            yes
3DNow! enabled            yes
3DNow! extended enabled   yes
SSE enabled               yes
SSSE3 enabled             yes
AESNI enabled             yes
AVX enabled               yes
AVX2 enabled              yes
AVX-512 enabled           yes
XOP enabled               yes
FMA3 enabled              yes
FMA4 enabled              yes
i686 features enabled     yes
CMOV is fast              yes
EBX available             yes
EBP available             yes
debug symbols             yes
strip symbols             yes
optimize for size         no
optimizations             yes
static                    yes
shared                    yes
postprocessing support    no
network support           yes
threading support         pthreads
safe bitstream reader     yes
texi2html enabled         no
perl enabled              yes
pod2man enabled           yes
makeinfo enabled          no
makeinfo supports HTML    no

External libraries:
iconv                   openssl
libvpx                  zlib

External libraries providing hardware acceleration:

Libraries:
avcodec                 avformat                swscale
avdevice                avutil
avfilter                swresample

Programs:
ffmpeg                  ffprobe

Enabled decoders:
aac                     flashsv2                pixlet
aac_fixed               flic                    pjs
aac_latm                flv                     png
aasc                    fmvc                    ppm
ac3                     fourxm                  prores
ac3_fixed               fraps                   prosumer
adpcm_4xm               frwu                    psd
adpcm_adx               g2m                     ptx
adpcm_afc               g723_1                  qcelp
adpcm_agm               g729                    qdm2
adpcm_aica              gdv                     qdmc
adpcm_ct                gif                     qdraw
adpcm_dtk               gremlin_dpcm            qpeg
adpcm_ea                gsm                     qtrle
adpcm_ea_maxis_xa       gsm_ms                  r10k
adpcm_ea_r1             h261                    r210
adpcm_ea_r2             h263                    ra_144
adpcm_ea_r3             h263i                   ra_288
adpcm_ea_xas            h263p                   ralf
adpcm_g722              h264                    rasc
adpcm_g726              hap                     rawvideo
adpcm_g726le            hcom                    realtext
adpcm_ima_amv           hevc                    rl2
adpcm_ima_apc           hnm4_video              roq
adpcm_ima_dat4          hq_hqa                  roq_dpcm
adpcm_ima_dk3           hqx                     rpza
adpcm_ima_dk4           huffyuv                 rscc
adpcm_ima_ea_eacs       hymt                    rv10
adpcm_ima_ea_sead       iac                     rv20
adpcm_ima_iss           idcin                   rv30
adpcm_ima_oki           idf                     rv40
adpcm_ima_qt            iff_ilbm                s302m
adpcm_ima_rad           ilbc                    sami
adpcm_ima_smjpeg        imc                     sanm
adpcm_ima_wav           imm4                    sbc
adpcm_ima_ws            indeo2                  scpr
adpcm_ms                indeo3                  screenpresso
adpcm_mtaf              indeo4                  sdx2_dpcm
adpcm_psx               indeo5                  sgi
adpcm_sbpro_2           interplay_acm           sgirle
adpcm_sbpro_3           interplay_dpcm          sheervideo
adpcm_sbpro_4           interplay_video         shorten
adpcm_swf               jacosub                 sipr
adpcm_thp               jpeg2000                smackaud
adpcm_thp_le            jpegls                  smacker
adpcm_vima              jv                      smc
adpcm_xa                kgv1                    smvjpeg
adpcm_yamaha            kmvc                    snow
agm                     lagarith                sol_dpcm
aic                     libvpx_vp8              sonic
alac                    libvpx_vp9              sp5x
alias_pix               loco                    speedhq
als                     lscr                    srgc
amrnb                   m101                    srt
amrwb                   mace3                   ssa
amv                     mace6                   stl
anm                     magicyuv                subrip
ansi                    mdec                    subviewer
ape                     metasound               subviewer1
apng                    microdvd                sunrast
aptx                    mimic                   svq1
aptx_hd                 mjpeg                   svq3
arbc                    mjpegb                  tak
ass                     mlp                     targa
asv1                    mmvideo                 targa_y216
asv2                    motionpixels            tdsc
atrac1                  movtext                 text
atrac3                  mp1                     theora
atrac3al                mp1float                thp
atrac3p                 mp2                     tiertexseqvideo
atrac3pal               mp2float                tiff
atrac9                  mp3                     tmv
aura                    mp3adu                  truehd
aura2                   mp3adufloat             truemotion1
avrn                    mp3float                truemotion2
avrp                    mp3on4                  truemotion2rt
avs                     mp3on4float             truespeech
avui                    mpc7                    tscc
ayuv                    mpc8                    tscc2
bethsoftvid             mpeg1video              tta
bfi                     mpeg2video              twinvq
bink                    mpeg4                   txd
binkaudio_dct           mpegvideo               ulti
binkaudio_rdft          mpl2                    utvideo
bintext                 msa1                    v210
bitpacked               mscc                    v210x
bmp                     msmpeg4v1               v308
bmv_audio               msmpeg4v2               v408
bmv_video               msmpeg4v3               v410
brender_pix             msrle                   vb
c93                     mss1                    vble
cavs                    mss2                    vc1
ccaption                msvideo1                vc1image
cdgraphics              mszh                    vcr1
cdxl                    mts2                    vmdaudio
cfhd                    mvc1                    vmdvideo
cinepak                 mvc2                    vmnc
clearvideo              mwsc                    vorbis
cljr                    mxpeg                   vp3
cllc                    nellymoser              vp4
comfortnoise            nuv                     vp5
cook                    on2avc                  vp6
cpia                    opus                    vp6a
cscd                    paf_audio               vp6f
cyuv                    paf_video               vp7
dca                     pam                     vp8
dds                     pbm                     vp9
dfa                     pcm_alaw                vplayer
dirac                   pcm_bluray              vqa
dnxhd                   pcm_dvd                 wavpack
dolby_e                 pcm_f16le               wcmv
dpx                     pcm_f24le               webp
dsd_lsbf                pcm_f32be               webvtt
dsd_lsbf_planar         pcm_f32le               wmalossless
dsd_msbf                pcm_f64be               wmapro
dsd_msbf_planar         pcm_f64le               wmav1
dsicinaudio             pcm_lxf                 wmav2
dsicinvideo             pcm_mulaw               wmavoice
dss_sp                  pcm_s16be               wmv1
dst                     pcm_s16be_planar        wmv2
dvaudio                 pcm_s16le               wmv3
dvbsub                  pcm_s16le_planar        wmv3image
dvdsub                  pcm_s24be               wnv1
dvvideo                 pcm_s24daud             wrapped_avframe
dxa                     pcm_s24le               ws_snd1
dxtory                  pcm_s24le_planar        xan_dpcm
dxv                     pcm_s32be               xan_wc3
eac3                    pcm_s32le               xan_wc4
eacmv                   pcm_s32le_planar        xbin
eamad                   pcm_s64be               xbm
eatgq                   pcm_s64le               xface
eatgv                   pcm_s8                  xl
eatqi                   pcm_s8_planar           xma1
eightbps                pcm_u16be               xma2
eightsvx_exp            pcm_u16le               xpm
eightsvx_fib            pcm_u24be               xsub
escape124               pcm_u24le               xwd
escape130               pcm_u32be               y41p
evrc                    pcm_u32le               ylc
exr                     pcm_u8                  yop
ffv1                    pcm_vidc                yuv4
ffvhuff                 pcm_zork                zero12v
ffwavesynth             pcx                     zerocodec
fic                     pgm                     zlib
fits                    pgmyuv                  zmbv
flac                    pgssub
flashsv                 pictor

Enabled encoders:
a64multi                libvpx_vp8              png
a64multi5               libvpx_vp9              ppm
aac                     ljpeg                   prores
ac3                     magicyuv                prores_aw
ac3_fixed               mjpeg                   prores_ks
adpcm_adx               mlp                     qtrle
adpcm_g722              movtext                 r10k
adpcm_g726              mp2                     r210
adpcm_g726le            mp2fixed                ra_144
adpcm_ima_qt            mpeg1video              rawvideo
adpcm_ima_wav           mpeg2video              roq
adpcm_ms                mpeg4                   roq_dpcm
adpcm_swf               msmpeg4v2               rv10
adpcm_yamaha            msmpeg4v3               rv20
alac                    msvideo1                s302m
alias_pix               nellymoser              sbc
amv                     opus                    sgi
apng                    pam                     snow
aptx                    pbm                     sonic
aptx_hd                 pcm_alaw                sonic_ls
ass                     pcm_dvd                 srt
asv1                    pcm_f32be               ssa
asv2                    pcm_f32le               subrip
avrp                    pcm_f64be               sunrast
avui                    pcm_f64le               svq1
ayuv                    pcm_mulaw               targa
bmp                     pcm_s16be               text
cinepak                 pcm_s16be_planar        tiff
cljr                    pcm_s16le               truehd
comfortnoise            pcm_s16le_planar        tta
dca                     pcm_s24be               utvideo
dnxhd                   pcm_s24daud             v210
dpx                     pcm_s24le               v308
dvbsub                  pcm_s24le_planar        v408
dvdsub                  pcm_s32be               v410
dvvideo                 pcm_s32le               vc2
eac3                    pcm_s32le_planar        vorbis
ffv1                    pcm_s64be               wavpack
ffvhuff                 pcm_s64le               webvtt
fits                    pcm_s8                  wmav1
flac                    pcm_s8_planar           wmav2
flashsv                 pcm_u16be               wmv1
flashsv2                pcm_u16le               wmv2
flv                     pcm_u24be               wrapped_avframe
g723_1                  pcm_u24le               xbm
gif                     pcm_u32be               xface
h261                    pcm_u32le               xsub
h263                    pcm_u8                  xwd
h263p                   pcm_vidc                y41p
huffyuv                 pcx                     yuv4
jpeg2000                pgm                     zlib
jpegls                  pgmyuv                  zmbv

Enabled hwaccels:

Enabled parsers:
aac                     dvd_nav                 mpegvideo
aac_latm                dvdsub                  opus
ac3                     flac                    png
adx                     g723_1                  pnm
av1                     g729                    rv30
avs2                    gif                     rv40
bmp                     gsm                     sbc
cavsvideo               h261                    sipr
cook                    h263                    tak
dca                     h264                    vc1
dirac                   hevc                    vorbis
dnxhd                   mjpeg                   vp3
dpx                     mlp                     vp8
dvaudio                 mpeg4video              vp9
dvbsub                  mpegaudio               xma

Enabled demuxers:
aa                      iff                     pcm_s8
aac                     ifv                     pcm_u16be
ac3                     ilbc                    pcm_u16le
acm                     image2                  pcm_u24be
act                     image2_alias_pix        pcm_u24le
adf                     image2_brender_pix      pcm_u32be
adp                     image2pipe              pcm_u32le
ads                     image_bmp_pipe          pcm_u8
adx                     image_dds_pipe          pcm_vidc
aea                     image_dpx_pipe          pjs
afc                     image_exr_pipe          pmp
aiff                    image_gif_pipe          pva
aix                     image_j2k_pipe          pvf
amr                     image_jpeg_pipe         qcp
amrnb                   image_jpegls_pipe       r3d
amrwb                   image_pam_pipe          rawvideo
anm                     image_pbm_pipe          realtext
apc                     image_pcx_pipe          redspark
ape                     image_pgm_pipe          rl2
apng                    image_pgmyuv_pipe       rm
aptx                    image_pictor_pipe       roq
aptx_hd                 image_png_pipe          rpl
aqtitle                 image_ppm_pipe          rsd
asf                     image_psd_pipe          rso
asf_o                   image_qdraw_pipe        rtp
ass                     image_sgi_pipe          rtsp
ast                     image_sunrast_pipe      s337m
au                      image_svg_pipe          sami
avi                     image_tiff_pipe         sap
avr                     image_webp_pipe         sbc
avs                     image_xpm_pipe          sbg
avs2                    image_xwd_pipe          scc
bethsoftvid             ingenient               sdp
bfi                     ipmovie                 sdr2
bfstm                   ircam                   sds
bink                    iss                     sdx
bintext                 iv8                     segafilm
bit                     ivf                     ser
bmv                     ivr                     shorten
boa                     jacosub                 siff
brstm                   jv                      sln
c93                     kux                     smacker
caf                     live_flv                smjpeg
cavsvideo               lmlm4                   smush
cdg                     loas                    sol
cdxl                    lrc                     sox
cine                    lvf                     spdif
codec2                  lxf                     srt
codec2raw               m4v                     stl
concat                  matroska                str
data                    mgsts                   subviewer
daud                    microdvd                subviewer1
dcstr                   mjpeg                   sup
dfa                     mjpeg_2000              svag
dhav                    mlp                     swf
dirac                   mlv                     tak
dnxhd                   mm                      tedcaptions
dsf                     mmf                     thp
dsicin                  mov                     threedostr
dss                     mp3                     tiertexseq
dts                     mpc                     tmv
dtshd                   mpc8                    truehd
dv                      mpegps                  tta
dvbsub                  mpegts                  tty
dvbtxt                  mpegtsraw               txd
dxa                     mpegvideo               ty
ea                      mpjpeg                  v210
ea_cdata                mpl2                    v210x
eac3                    mpsub                   vag
epaf                    msf                     vc1
ffmetadata              msnwc_tcp               vc1t
filmstrip               mtaf                    vividas
fits                    mtv                     vivo
flac                    musx                    vmd
flic                    mv                      vobsub
flv                     mvi                     voc
fourxm                  mxf                     vpk
frm                     mxg                     vplayer
fsb                     nc                      vqf
g722                    nistsphere              w64
g723_1                  nsp                     wav
g726                    nsv                     wc3
g726le                  nut                     webm_dash_manifest
g729                    nuv                     webvtt
gdv                     ogg                     wsaud
genh                    oma                     wsd
gif                     paf                     wsvqa
gsm                     pcm_alaw                wtv
gxf                     pcm_f32be               wv
h261                    pcm_f32le               wve
h263                    pcm_f64be               xa
h264                    pcm_f64le               xbin
hcom                    pcm_mulaw               xmv
hevc                    pcm_s16be               xvag
hls                     pcm_s16le               xwma
hnm                     pcm_s24be               yop
ico                     pcm_s24le               yuv4mpegpipe
idcin                   pcm_s32be
idf                     pcm_s32le

Enabled muxers:
a64                     hevc                    pcm_s24le
ac3                     hls                     pcm_s32be
adts                    ico                     pcm_s32le
adx                     ilbc                    pcm_s8
aiff                    image2                  pcm_u16be
amr                     image2pipe              pcm_u16le
apng                    ipod                    pcm_u24be
aptx                    ircam                   pcm_u24le
aptx_hd                 ismv                    pcm_u32be
asf                     ivf                     pcm_u32le
asf_stream              jacosub                 pcm_u8
ass                     latm                    pcm_vidc
ast                     lrc                     psp
au                      m4v                     rawvideo
avi                     matroska                rm
avm2                    matroska_audio          roq
avs2                    md5                     rso
bit                     microdvd                rtp
caf                     mjpeg                   rtp_mpegts
cavsvideo               mkvtimestamp_v2         rtsp
codec2                  mlp                     sap
codec2raw               mmf                     sbc
crc                     mov                     scc
dash                    mp2                     segafilm
data                    mp3                     segment
daud                    mp4                     singlejpeg
dirac                   mpeg1system             smjpeg
dnxhd                   mpeg1vcd                smoothstreaming
dts                     mpeg1video              sox
dv                      mpeg2dvd                spdif
eac3                    mpeg2svcd               spx
f4v                     mpeg2video              srt
ffmetadata              mpeg2vob                stream_segment
fifo                    mpegts                  sup
fifo_test               mpjpeg                  swf
filmstrip               mxf                     tee
fits                    mxf_d10                 tg2
flac                    mxf_opatom              tgp
flv                     null                    truehd
framecrc                nut                     tta
framehash               oga                     uncodedframecrc
framemd5                ogg                     vc1
g722                    ogv                     vc1t
g723_1                  oma                     voc
g726                    opus                    w64
g726le                  pcm_alaw                wav
gif                     pcm_f32be               webm
gsm                     pcm_f32le               webm_chunk
gxf                     pcm_f64be               webm_dash_manifest
h261                    pcm_f64le               webp
h263                    pcm_mulaw               webvtt
h264                    pcm_s16be               wtv
hash                    pcm_s16le               wv
hds                     pcm_s24be               yuv4mpegpipe

Enabled protocols:
async                   httpproxy               rtmpte
cache                   https                   rtmpts
concat                  icecast                 rtp
crypto                  md5                     srtp
data                    mmsh                    subfile
ffrtmpcrypt             mmst                    tcp
ffrtmphttp              pipe                    tee
file                    prompeg                 tls
ftp                     rtmp                    udp
gopher                  rtmpe                   udplite
hls                     rtmps                   unix
http                    rtmpt

Enabled filters:
abench                  datascope               overlay
abitscope               dcshift                 pad
acompressor             dctdnoiz                pal100bars
acontrast               deband                  pal75bars
acopy                   deblock                 palettegen
acrossfade              decimate                paletteuse
acrossover              deconvolve              pan
acrusher                dedot                   perms
acue                    deesser                 pixdesctest
addroi                  deflate                 pixscope
adeclick                deflicker               premultiply
adeclip                 dejudder                prewitt
adelay                  derain                  pseudocolor
aderivative             deshake                 psnr
adrawgraph              despill                 qp
aecho                   detelecine              random
aemphasis               dilation                readeia608
aeval                   displace                readvitc
aevalsrc                doubleweave             realtime
afade                   drawbox                 remap
afftdn                  drawgraph               removegrain
afftfilt                drawgrid                removelogo
afifo                   drmeter                 replaygain
afir                    dynaudnorm              reverse
aformat                 earwax                  rgbashift
agate                   ebur128                 rgbtestsrc
agraphmonitor           edgedetect              roberts
ahistogram              elbg                    rotate
aiir                    entropy                 scale
aintegral               equalizer               scale2ref
ainterleave             erosion                 select
alimiter                extractplanes           selectivecolor
allpass                 extrastereo             sendcmd
allrgb                  fade                    separatefields
allyuv                  fftdnoiz                setdar
aloop                   fftfilt                 setfield
alphaextract            field                   setparams
alphamerge              fieldhint               setpts
amerge                  fieldmatch              setrange
ametadata               fieldorder              setsar
amix                    fifo                    settb
amovie                  fillborders             showcqt
amplify                 firequalizer            showfreqs
amultiply               flanger                 showinfo
anequalizer             floodfill               showpalette
anlmdn                  format                  showspatial
anoisesrc               fps                     showspectrum
anull                   framepack               showspectrumpic
anullsink               framerate               showvolume
anullsrc                framestep               showwaves
apad                    freezedetect            showwavespic
aperms                  gblur                   shuffleframes
aphasemeter             gradfun                 shuffleplanes
aphaser                 graphmonitor            sidechaincompress
apulsator               greyedge                sidechaingate
arealtime               haas                    sidedata
aresample               haldclut                signalstats
areverse                haldclutsrc             silencedetect
aselect                 hdcd                    silenceremove
asendcmd                headphone               sinc
asetnsamples            hflip                   sine
asetpts                 highpass                smptebars
asetrate                highshelf               smptehdbars
asettb                  hilbert                 sobel
ashowinfo               histogram               spectrumsynth
asidedata               hqx                     split
asoftclip               hstack                  sr
asplit                  hue                     ssim
astats                  hwdownload              stereotools
astreamselect           hwmap                   stereowiden
atadenoise              hwupload                streamselect
atempo                  hysteresis              superequalizer
atrim                   idet                    surround
avectorscope            il                      swaprect
avgblur                 inflate                 swapuv
bandpass                interleave              tblend
bandreject              join                    telecine
bass                    lagfun                  testsrc
bbox                    lenscorrection          testsrc2
bench                   life                    threshold
biquad                  limiter                 thumbnail
bitplanenoise           loop                    tile
blackdetect             loudnorm                tlut2
blend                   lowpass                 tmix
bm3d                    lowshelf                tonemap
bwdif                   lumakey                 tpad
cellauto                lut                     transpose
channelmap              lut1d                   treble
channelsplit            lut2                    tremolo
chorus                  lut3d                   trim
chromahold              lutrgb                  unpremultiply
chromakey               lutyuv                  unsharp
chromashift             mandelbrot              vectorscope
ciescope                maskedclamp             vflip
codecview               maskedmerge             vfrdet
color                   maskfun                 vibrance
colorbalance            mcompand                vibrato
colorchannelmixer       mergeplanes             vignette
colorhold               mestimate               vmafmotion
colorkey                metadata                volume
colorlevels             midequalizer            volumedetect
colorspace              minterpolate            vstack
compand                 mix                     w3fdif
compensationdelay       movie                   waveform
concat                  negate                  weave
convolution             nlmeans                 xbr
convolve                noformat                xmedian
copy                    noise                   xstack
crop                    normalize               yadif
crossfeed               null                    yuvtestsrc
crystalizer             nullsink                zoompan
cue                     nullsrc
curves                  oscilloscope

Enabled bsfs:
aac_adtstoasc           h264_redundant_pps      noise
av1_frame_split         hapqa_extract           null
av1_metadata            hevc_metadata           prores_metadata
chomp                   hevc_mp4toannexb        remove_extradata
dca_core                imx_dump_header         text2movsub
dump_extradata          mjpeg2jpeg              trace_headers
eac3_core               mjpega_dump_header      truehd_core
extract_extradata       mov2textsub             vp9_metadata
filter_units            mp3_header_decompress   vp9_raw_reorder
h264_metadata           mpeg2_metadata          vp9_superframe
h264_mp4toannexb        mpeg4_unpack_bframes    vp9_superframe_split

Enabled indevs:
fbdev                   oss
lavfi                   v4l2

Enabled outdevs:
fbdev                   oss                     v4l2

License: LGPL version 2.1 or later

 

@skvark And here is the ffmpeg -L output, you asked for:

[root@aaea5958fff2 ffmpeg]# ffmpeg -L
ffmpeg version N-94435-g9a2dbfd Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-36)
  configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --enable-openssl --enable-libvpx --enable-shared --enable-pic --bindir=/root/bin
  libavutil      56. 33.100 / 56. 33.100
  libavcodec     58. 55.100 / 58. 55.100
  libavformat    58. 30.100 / 58. 30.100
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 58.100 /  7. 58.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
ffmpeg is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

ffmpeg is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with ffmpeg; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

@native-api
Copy link
Contributor

native-api commented Aug 3, 2019

image pulled with docker run -it centos bash command

Not centos but the image specified in FROM in the dockerfile -- i.e. quay.io/pypa/manylinux1_x86_64:latest or quay.io/pypa/manylinux1_i686:latest. It has many additional software installed compared to a stock CentOS 5 installation (see https://github.com/pypa/manylinux/tree/manylinux1#readme and https://github.com/pypa/manylinux/tree/manylinux1/docker if you want to know what exactly).

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 3, 2019

@native-api Thanks

I found some inconsistencies in dockers:

  1. why reinstalling old cmake in dependencies here:

https://github.com/skvark/opencv-python/blob/da7d02271d2ffca8f293ed3f3032f30881319db8/docker/Dockerfile_x86_64#L26

when we are building cmake from scratch?

  1. mercurial is not supported for centos 5 says "No package mercurial available, then why it's a dependency
    "
  2. Old OpenSSL(openssl-devel) is already a dependency for other vital packages like curl-devel & zlib-devel therefore cannot be removed:
Dependencies Resolved

============================================================================================================================================================================================================
 Package                                               Arch                                     Version                                                  Repository                                    Size
============================================================================================================================================================================================================
Installing:
 curl-devel                                            x86_64                                   7.15.5-17.el5_9                                          base                                         318 k
 zlib-devel                                            x86_64                                   1.2.3-7.el5                                              base                                         103 k
Installing for dependencies:
 e2fsprogs-devel                                       x86_64                                   1.39-37.el5                                              base                                         639 k
 keyutils-libs-devel                                   x86_64                                   1.2-1.el5                                                base                                          27 k
 krb5-devel                                            x86_64                                   1.6.1-80.el5_11                                          updates                                      1.9 M
 libidn-devel                                          x86_64                                   0.6.5-1.1                                                base                                         239 k
 libselinux-devel                                      x86_64                                   1.33.4-5.7.el5.centos                                    libselinux                                   149 k
 libsepol-devel                                        x86_64                                   1.15.2-3.el5                                             base                                         192 k
 openssl-devel                                         x86_64                                   0.9.8e-40.el5_11                                         updates                                      1.9 M

Transaction Summary
============================================================================================================================================================================================================
Install       9 Package(s)
Upgrade       0 Package(s)

@native-api
Copy link
Contributor

native-api commented Aug 3, 2019

cmake and mercurial from yum look like old leftovers and can safely be removed AFAICS.
openssl-devel must be a dependency of curl-devel. I don't know if we link anything to libcurl -- try removing it and see it something requires it; if something does then we can decide if anything needs to be done about the old openssl there. Good find!

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 3, 2019

@native-api Also old system perl is not supported by openssl, says

Perl v5.10.0 required--this is only v5.8.8, stopped at ./Configure line 12.
BEGIN failed--compilation aborted at ./Configure line 12.

We need to build perl from scratch too!

@native-api
Copy link
Contributor

native-api commented Aug 3, 2019

(Scratch my previous message about a ruling, found new evidence.)
manylinux1 dockerfile scripts build a newer version of openssl. They don't build a newer libcurl though.
So for programs that are used solely in the build process like cmake, we can link against that version since manylinux1's toolchain is not designed to last beyond its lifespan. You'd probably need to build a libcurl against it though.

The toolchain cleanup should better be done in a different PR though. Let's only do what is relevant to the fresh OpenSSL here.

curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_1_1_1c.tar.gz && \
tar -zxvf OpenSSL_1_1_1c.tar.gz && \
cd openssl-OpenSSL_1_1_1c && \
./Configure --prefix="$HOME/ffmpeg_build" --openssldir="$HOME/ffmpeg_build" shared zlib && \
Copy link
Contributor

@native-api native-api Aug 3, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OpenSSL's INSTALL doc says that config is the script that should be run by the user.

Copy link
Contributor Author

@abhiTronix abhiTronix Aug 3, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, that was a mistake, I changed it while testing.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 3, 2019

The toolchain cleanup should better be done in a different PR though. Let's only do what is relevant to the fresh OpenSSL here.

@native-api but latest OpenSSL build requires at least Perl v5.10.0 which is not present in CentOS 5 which only provide old/obsolete version v5.8.8. So we need new perl too.

@native-api
Copy link
Contributor

native-api commented Aug 3, 2019

We need to build perl from scratch too!
but latest OpenSSL build requires at least Perl v5.10.0

Use the minimal configuration that works (openssl'd build docs seem to say which Perl modules are needed), we don't need this chain reaction to continue!
Since we don't need the new perl for anything but running the script, maybe it's better to use a custom prefix for it.

Perl 5.10 is not a part of the toolchain, it's effectively a private dependency of openssl. You can as well delete it after building the library! So it is relevant. I was talking about other unrelated inconsistencies that you spotted.

abhiTronix added 3 commits Aug 4, 2019
- Added perl build from scratch
- Fixed wrong/redundant dependencies/paths
- Fixed & updated openssl installation
Updates for docker images:
- Added Perl build from scratch
- Fixed wrong/redundant dependencies/paths
- Fixed & updated OpenSSL installation
- Fixed Empty continuation lines bug & added comments
Copy link
Contributor Author

@abhiTronix abhiTronix left a comment

@native-api docker build is successful with these new changes. Kindly test and review these changes at your end. Thank you.

I also added git as a dependency as required by libvpx download.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 4, 2019

@skvark License is as follows with the recent build(ffmpeg -L):

[root@0122eceb268d ffmpeg]# ffmpeg -L
ffmpeg version N-94451-ga3adc3b Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 4.8.2 (GCC) 20140120 (Red Hat 4.8.2-15)
  configuration: --prefix=/root/ffmpeg_build --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --enable-openssl --enable-libvpx --enable-shared --enable-pic --bindir=/root/bin
  libavutil      56. 33.100 / 56. 33.100
  libavcodec     58. 55.100 / 58. 55.100
  libavformat    58. 30.100 / 58. 30.100
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 58.100 /  7. 58.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
ffmpeg is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

ffmpeg is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with ffmpeg; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

@native-api
Copy link
Contributor

native-api commented Aug 5, 2019

I give you carte blanche for including any general dockerfile cleanups into this PR if that makes your job easier.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 5, 2019

then OpenSSL compilation in i686 fails again, seemingly again due to wrong architecture:

Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1c (0x1010103fL) for linux-x86_64
<...>
apps/apps.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
/*
^
apps/bf_prefix.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
/*
^
apps/app_rand.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
/*
^
make[1]: *** [apps/apps.o] Error 1

@native-api Why is your Operating system: x86_64-whatever-linux2? Are you running both dockerfiles on same docker x64 image? See my output of ./config on Arch: i686 :

bash-3.2# cd openssl-OpenSSL_1_1_1c 
bash-3.2# PERL="$HOME/ffmpeg_build/bin/perl" ./config --prefix="$HOME/ffmpeg_build" --openssldir="$HOME/ffmpeg_build" shared zlib 
Operating system: i686-whatever-linux2
Configuring OpenSSL version 1.1.1c (0x1010103fL) for linux-x86
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************

Its clearly a problem at your end! Kindly recheck your docker build environment.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 5, 2019

i686 Dockerfile fails again at `git installation. abhiTronix#3

@native-api and No need to remove git? It's working all fine here:

bash-3.2# yum install git -y
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package git.i386 0:1.8.2.3-1.el5 set to be updated
--> Processing Dependency: perl-Git = 1.8.2.3-1.el5 for package: git
--> Processing Dependency: rsync for package: git
--> Processing Dependency: perl(Term::ReadKey) for package: git
--> Processing Dependency: perl(Git) for package: git
--> Processing Dependency: perl(Error) for package: git
--> Processing Dependency: openssh-clients for package: git
--> Running transaction check
---> Package openssh-clients.i386 0:4.3p2-82.el5 set to be updated
--> Processing Dependency: openssh = 4.3p2-82.el5 for package: openssh-clients
--> Processing Dependency: libfipscheck.so.1 for package: openssh-clients
---> Package perl-Error.noarch 1:0.17010-1.el5 set to be updated
---> Package perl-Git.i386 0:1.8.2.3-1.el5 set to be updated
---> Package perl-TermReadKey.i386 0:2.30-4.el5 set to be updated
---> Package rsync.i386 0:3.0.6-6.el5_11 set to be updated
--> Running transaction check
---> Package fipscheck-lib.i386 0:1.2.0-1.el5 set to be updated
--> Processing Dependency: /usr/bin/fipscheck for package: fipscheck-lib
---> Package openssh.i386 0:4.3p2-82.el5 set to be updated
--> Running transaction check
---> Package fipscheck.i386 0:1.2.0-1.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================================
 Package                                               Arch                                        Version                                               Repository                                    Size
============================================================================================================================================================================================================
Installing:
 git                                                   i386                                        1.8.2.3-1.el5                                         epel                                          16 M
Installing for dependencies:
 fipscheck                                             i386                                        1.2.0-1.el5                                           base                                          13 k
 fipscheck-lib                                         i386                                        1.2.0-1.el5                                           base                                         6.7 k
 openssh                                               i386                                        4.3p2-82.el5                                          base                                         291 k
 openssh-clients                                       i386                                        4.3p2-82.el5                                          base                                         455 k
 perl-Error                                            noarch                                      1:0.17010-1.el5                                       epel                                          26 k
 perl-Git                                              i386                                        1.8.2.3-1.el5                                         epel                                          46 k
 perl-TermReadKey                                      i386                                        2.30-4.el5                                            epel                                          32 k
 rsync                                                 i386                                        3.0.6-6.el5_11                                        updates                                      338 k

Transaction Summary
============================================================================================================================================================================================================
Install       9 Package(s)
Upgrade       0 Package(s)

Total download size: 17 M
Downloading Packages:
(1/9): fipscheck-lib-1.2.0-1.el5.i386.rpm                                                                                                                                            | 6.7 kB     00:00     
(2/9): fipscheck-1.2.0-1.el5.i386.rpm                                                                                                                                                |  13 kB     00:00     
(3/9): perl-Error-0.17010-1.el5.noarch.rpm                                                                                                                                           |  26 kB     00:00     
(4/9): perl-TermReadKey-2.30-4.el5.i386.rpm                                                                                                                                          |  32 kB     00:00     
(5/9): perl-Git-1.8.2.3-1.el5.i386.rpm                                                                                                                                               |  46 kB     00:00     
(6/9): openssh-4.3p2-82.el5.i386.rpm                                                                                                                                                 | 291 kB     00:01     
(7/9): rsync-3.0.6-6.el5_11.i386.rpm                                                                                                                                                 | 338 kB     00:01     
(8/9): openssh-clients-4.3p2-82.el5.i386.rpm                                                                                                                                         | 455 kB     00:01     
(9/9): git-1.8.2.3-1.el5.i386.rpm                                                                                                                                                    |  16 MB     00:45     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                       317 kB/s |  17 MB     00:55     
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : perl-Error                                                                                                                                                                           1/9 
  Installing     : perl-TermReadKey                                                                                                                                                                     2/9 
  Installing     : rsync                                                                                                                                                                                3/9 
  Installing     : fipscheck-lib                                                                                                                                                                        4/9 
  Installing     : openssh                                                                                                                                                                              5/9 
  Installing     : openssh-clients                                                                                                                                                                      6/9 
  Installing     : fipscheck                                                                                                                                                                            7/9 
  Installing     : git                                                                                                                                                                                  8/9 
  Installing     : perl-Git                                                                                                                                                                             9/9 

Installed:
  git.i386 0:1.8.2.3-1.el5                                                                                                                                                                                  

Dependency Installed:
  fipscheck.i386 0:1.2.0-1.el5        fipscheck-lib.i386 0:1.2.0-1.el5  openssh.i386 0:4.3p2-82.el5  openssh-clients.i386 0:4.3p2-82.el5  perl-Error.noarch 1:0.17010-1.el5  perl-Git.i386 0:1.8.2.3-1.el5 
  perl-TermReadKey.i386 0:2.30-4.el5  rsync.i386 0:3.0.6-6.el5_11      

Complete!

@native-api
Copy link
Contributor

native-api commented Aug 5, 2019

Here's what I'm running (Ubuntu Bionic Desktop x64):

$ git clone https://github.com/abhiTronix/opencv-python
$ cd opencv-python/docker/
$ sudo docker build - <Dockerfile_i686

I think I know why the commands succeed for you: you are running them in the shell received from sudo docker run -it quay.io/pypa/manylinux1_i686:latest bash -- i.e. in the environment before any of the Dockerfile commands have been run, not in the actual environment that this command is run in in docker build.
That's why I demand that you docker build the dockerfile as a whole before submitting it.

To get a shell in the intermediate environment after a specific command in Dockerfile is run, look at docker build output. After each Dockerfile command succeeds, it saves an intermediate container. Supply that container's ID to docker run instead of quay.io/<...>manylinux1<...> and you'll get a shell in the actual environment at that point.

@native-api
Copy link
Contributor

native-api commented Aug 5, 2019

bash-3.2# PERL="$HOME/ffmpeg_build/bin/perl" ./config --prefix="$HOME/ffmpeg_build" --openssldir="$HOME/ffmpeg_build" shared zlib 
Operating system: i686-whatever-linux2

This actually suggests the reason. If this works for you in a "clean" manylinux1 environment but not in the environment after running a few commands, then the reason for the breakage must lie in those commands!
In particular, the unnecessary install of gcc looks mightly suspicious.
You can e.g. build Perl in multiple intermediate containers and see where it starts breaking.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 6, 2019

@native-api I think we should wait for @skvark to test these two new dockerfiles with changes and revert the results. I'll make further improvements if it fails for him too as exact errors are not reproducible at my end. @skvark kindly post the error message if something fails for you.

@abhiTronix
Copy link
Contributor Author

abhiTronix commented Aug 6, 2019

@native-api Thanks for this changes. Can we finally test this issue example code too? Does this run ok at your end with final build?

@skvark
Copy link
Member

skvark commented Aug 6, 2019

I'll have a look during the weekend.

@native-api
Copy link
Contributor

native-api commented Aug 6, 2019

Does this run ok at your end with final build?

Rick Roll succeeded

@skvark
Copy link
Member

skvark commented Aug 18, 2019

I built the images locally and everything went fine. I'll merge this and the other Docker changes before building and uploading the updated images to Quay.

@skvark skvark merged commit eed0f0d into opencv:master Aug 18, 2019
@skvark
Copy link
Member

skvark commented Aug 18, 2019

Thanks!

skvark pushed a commit that referenced this pull request Sep 5, 2019
* Added OpenSSL & different protocol support to FFmpeg backend
- Fixed Docker dependencies (both x86 & x86-64)
- Fixes bug #204

* Additional Fixes
- updates to OpenSSL build from scratch
- removed specific protocol
- Added neccessary dependency

* Fixed ./Configure command

* Updates for docker images:
- Added perl build from scratch
- Fixed wrong/redundant dependencies/paths
- Fixed & updated openssl installation

* Fixed Empty continuation lines bug & added comments

* fix inconsitent spacing

* Don't add perl 5.10 to PATH

* fix syntax error

* Fixed OpenSSL build fails in i686 Dockerfile due to buggy perl source

* Fixing manylinux docker entrypoint for i686 in 32 bit images

* ENTRYPOINT not needed, it only affects "docker run" invocations

* manylinux1 provides better libcurl for cmake

* manylinux1 provides the toolchain and git

git install fails in i686, too

* cleanup tar invocations

* nasm is not installed in manylinux1

* detect i686 in openssl configure

* move perl to a separate subtree as it's a private dependency

* rm it after library build

* comment unusual openssl build step

* avoid redundant work in perl build

* build each library in a separate dockerfile command for easier debugging

* comment custom i686 step

* update dockerfile README

* opencv now bundles libjpeg-turbo

and the separate's onre buid fails dueto expired certificate at https://kent.dl.sourceforge.net
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants