Opened 7 years ago

Last modified 12 months ago

#6620 new defect

Build fails on Windows due to command line truncation

Reported by: rling Owned by:
Priority: normal Component: build system
Version: git-master Keywords:
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

The Windows command shell CMD.EXE has a 8192-character line length limit. For whatever reason, the bash shell provided by MinGW environment is subject to this limit. Building ffmpeg in MinGW bash outputs a command line that invokes ar.exe to create libavfilter.a (shown below) which exceeds 8192 characters and is truncated, causing an error opening the truncated input filename 'liba'. The problem only occurs with calls to ar.exe where hundreds of object files are given on the same command line.

There is an easy fix for this defect, by using the '@file' syntax of ar.exe to load the list of object files from a text file, as described at:
https://stackoverflow.com/questions/37504625/ar-on-msys2-shell-receives-truncated-paths-when-called-from-makefile

How to reproduce:

Rling@Nifta MINGW64 ~/Documents/Source/ffmpeg/src (master)
$ bash --version
GNU bash, version 4.3.42(5)-release (x86_64-pc-msys)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Rling@Nifta MINGW64 ~/Documents/Source/ffmpeg/src (master)
$ rm libavformat/libavformat.a

Rling@Nifta MINGW64 ~/Documents/Source/ffmpeg/src (master)
$ mingw32-make.exe --trace ffmpeg.exe
Makefile:212: target 'libavutil/' does not exist
mkdir -p libavutil/
Makefile:212: target 'libswscale/' does not exist
mkdir -p libswscale/
Makefile:212: target 'libswresample/' does not exist
mkdir -p libswresample/
Makefile:212: target 'libavcodec/' does not exist
mkdir -p libavcodec/
Makefile:212: target 'libavformat/' does not exist
mkdir -p libavformat/
Makefile:212: target 'libavfilter/' does not exist
mkdir -p libavfilter/
Makefile:212: target 'libavdevice/' does not exist
mkdir -p libavdevice/
Makefile:212: target 'libavfilter/x86/' does not exist
mkdir -p libavfilter/x86/
ffbuild/library.mak:20: update target 'libavformat/libavformat.a' due to: libavformat/3dostr.o libavformat/4xm.o libavfo
rmat/a64.o libavformat/aacdec.o libavformat/aadec.o libavformat/ac3dec.o libavformat/acm.o libavformat/act.o libavformat
/adp.o libavformat/ads.o libavformat/adtsenc.o libavformat/adxdec.o libavformat/aea.o libavformat/afc.o libavformat/aiff
dec.o libavformat/aiffenc.o libavformat/aixdec.o libavformat/allformats.o libavformat/amr.o libavformat/anm.o libavforma
t/apc.o libavformat/ape.o libavformat/apetag.o libavformat/apngdec.o libavformat/apngenc.o libavformat/aqtitledec.o liba
vformat/asf.o libavformat/asfcrypt.o libavformat/asfdec_f.o libavformat/asfdec_o.o libavformat/asfenc.o libavformat/assd
ec.o libavformat/assenc.o libavformat/ast.o libavformat/astdec.o libavformat/astenc.o libavformat/async.o libavformat/au
.o libavformat/audiointerleave.o libavformat/avc.o libavformat/avidec.o libavformat/avienc.o libavformat/avio.o libavfor
mat/aviobuf.o libavformat/avlanguage.o libavformat/avr.o libavformat/avs.o libavformat/bethsoftvid.o libavformat/bfi.o l
ibavformat/bink.o libavformat/bintext.o libavformat/bit.o libavformat/bmv.o libavformat/boadec.o libavformat/brstm.o lib
avformat/c93.o libavformat/cache.o libavformat/caf.o libavformat/cafdec.o libavformat/cafenc.o libavformat/cavsvideodec.
o libavformat/cdg.o libavformat/cdxl.o libavformat/cinedec.o libavformat/concat.o libavformat/concatdec.o libavformat/cr
cenc.o libavformat/crypto.o libavformat/cutils.o libavformat/dashenc.o libavformat/data_uri.o libavformat/dauddec.o liba
vformat/daudenc.o libavformat/dcstr.o libavformat/dfa.o libavformat/diracdec.o libavformat/dnxhddec.o libavformat/dsfdec
.o libavformat/dsicin.o libavformat/dss.o libavformat/dtsdec.o libavformat/dtshddec.o libavformat/dump.o libavformat/dv.
o libavformat/dvbsub.o libavformat/dvbtxt.o libavformat/dvenc.o libavformat/dxa.o libavformat/eacdata.o libavformat/elec
tronicarts.o libavformat/epafdec.o libavformat/ffmdec.o libavformat/ffmenc.o libavformat/ffmetadec.o libavformat/ffmetae
nc.o libavformat/fifo.o libavformat/file.o libavformat/filmstripdec.o libavformat/filmstripenc.o libavformat/flac_pictur
e.o libavformat/flacdec.o libavformat/flacenc.o libavformat/flacenc_header.o libavformat/flic.o libavformat/flvdec.o lib
avformat/flvenc.o libavformat/format.o libavformat/framecrcenc.o libavformat/framehash.o libavformat/frmdec.o libavforma
t/fsb.o libavformat/ftp.o libavformat/g722.o libavformat/g723_1.o libavformat/g729dec.o libavformat/gdv.o libavformat/ge
nh.o libavformat/gif.o libavformat/gifdec.o libavformat/gopher.o libavformat/gsmdec.o libavformat/gxf.o libavformat/gxfe
nc.o libavformat/h261dec.o libavformat/h263dec.o libavformat/h264dec.o libavformat/hashenc.o libavformat/hdsenc.o libavf
ormat/hevc.o libavformat/hevcdec.o libavformat/hls.o libavformat/hlsenc.o libavformat/hlsproto.o libavformat/hnm.o libav
format/http.o libavformat/httpauth.o libavformat/icecast.o libavformat/icodec.o libavformat/icoenc.o libavformat/id3v1.o
 libavformat/id3v2.o libavformat/id3v2enc.o libavformat/idcin.o libavformat/idroqdec.o libavformat/idroqenc.o libavforma
t/iff.o libavformat/ilbc.o libavformat/img2.o libavformat/img2_alias_pix.o libavformat/img2_brender_pix.o libavformat/im
g2dec.o libavformat/img2enc.o libavformat/ingenientdec.o libavformat/ipmovie.o libavformat/ircam.o libavformat/ircamdec.
o libavformat/ircamenc.o libavformat/isom.o libavformat/iss.o libavformat/iv8.o libavformat/ivfdec.o libavformat/ivfenc.
o libavformat/jacosubdec.o libavformat/jacosubenc.o libavformat/jvdec.o libavformat/latmenc.o libavformat/lmlm4.o libavf
ormat/loasdec.o libavformat/lrc.o libavformat/lrcdec.o libavformat/lrcenc.o libavformat/lvfdec.o libavformat/lxfdec.o li
bavformat/m4vdec.o libavformat/matroska.o libavformat/matroskadec.o libavformat/matroskaenc.o libavformat/md5proto.o lib
avformat/metadata.o libavformat/mgsts.o libavformat/microdvddec.o libavformat/microdvdenc.o libavformat/mj2kdec.o libavf
ormat/mkvtimestamp_v2.o libavformat/mlpdec.o libavformat/mlvdec.o libavformat/mm.o libavformat/mmf.o libavformat/mms.o l
ibavformat/mmsh.o libavformat/mmst.o libavformat/mov.o libavformat/mov_chan.o libavformat/movenc.o libavformat/movenccen
c.o libavformat/movenchint.o libavformat/mp3dec.o libavformat/mp3enc.o libavformat/mpc.o libavformat/mpc8.o libavformat/
mpeg.o libavformat/mpegenc.o libavformat/mpegts.o libavformat/mpegtsenc.o libavformat/mpegvideodec.o libavformat/mpjpeg.
o libavformat/mpjpegdec.o libavformat/mpl2dec.o libavformat/mpsubdec.o libavformat/msf.o libavformat/msnwc_tcp.o libavfo
rmat/mtaf.o libavformat/mtv.o libavformat/musx.o libavformat/mux.o libavformat/mvdec.o libavformat/mvi.o libavformat/mxf
.o libavformat/mxfdec.o libavformat/mxfenc.o libavformat/mxg.o libavformat/ncdec.o libavformat/network.o libavformat/nis
tspheredec.o libavformat/nsvdec.o libavformat/nullenc.o libavformat/nut.o libavformat/nutdec.o libavformat/nutenc.o liba
vformat/nuv.o libavformat/oggdec.o libavformat/oggenc.o libavformat/oggparsecelt.o libavformat/oggparsedaala.o libavform
at/oggparsedirac.o libavformat/oggparseflac.o libavformat/oggparseogm.o libavformat/oggparseopus.o libavformat/oggparses
keleton.o libavformat/oggparsespeex.o libavformat/oggparsetheora.o libavformat/oggparsevorbis.o libavformat/oggparsevp8.
o libavformat/oma.o libavformat/omadec.o libavformat/omaenc.o libavformat/options.o libavformat/os_support.o libavformat
/paf.o libavformat/pcm.o libavformat/pcmdec.o libavformat/pcmenc.o libavformat/pjsdec.o libavformat/pmpdec.o libavformat
/prompeg.o libavformat/protocols.o libavformat/psxstr.o libavformat/pva.o libavformat/pvfdec.o libavformat/qcp.o libavfo
rmat/qtpalette.o libavformat/r3d.o libavformat/rawdec.o libavformat/rawenc.o libavformat/rawutils.o libavformat/rawvideo
dec.o libavformat/rdt.o libavformat/realtextdec.o libavformat/redspark.o libavformat/replaygain.o libavformat/riff.o lib
avformat/riffdec.o libavformat/riffenc.o libavformat/rl2.o libavformat/rm.o libavformat/rmdec.o libavformat/rmenc.o liba
vformat/rmsipr.o libavformat/rpl.o libavformat/rsd.o libavformat/rso.o libavformat/rsodec.o libavformat/rsoenc.o libavfo
rmat/rtmphttp.o libavformat/rtmppkt.o libavformat/rtmpproto.o libavformat/rtp.o libavformat/rtpdec.o libavformat/rtpdec_
ac3.o libavformat/rtpdec_amr.o libavformat/rtpdec_asf.o libavformat/rtpdec_dv.o libavformat/rtpdec_g726.o libavformat/rt
pdec_h261.o libavformat/rtpdec_h263.o libavformat/rtpdec_h263_rfc2190.o libavformat/rtpdec_h264.o libavformat/rtpdec_hev
c.o libavformat/rtpdec_ilbc.o libavformat/rtpdec_jpeg.o libavformat/rtpdec_latm.o libavformat/rtpdec_mpa_robust.o libavf
ormat/rtpdec_mpeg12.o libavformat/rtpdec_mpeg4.o libavformat/rtpdec_mpegts.o libavformat/rtpdec_qcelp.o libavformat/rtpd
ec_qdm2.o libavformat/rtpdec_qt.o libavformat/rtpdec_rfc4175.o libavformat/rtpdec_svq3.o libavformat/rtpdec_vc2hq.o liba
vformat/rtpdec_vp8.o libavformat/rtpdec_vp9.o libavformat/rtpdec_xiph.o libavformat/rtpenc.o libavformat/rtpenc_aac.o li
bavformat/rtpenc_amr.o libavformat/rtpenc_chain.o libavformat/rtpenc_h261.o libavformat/rtpenc_h263.o libavformat/rtpenc
_h263_rfc2190.o libavformat/rtpenc_h264_hevc.o libavformat/rtpenc_jpeg.o libavformat/rtpenc_latm.o libavformat/rtpenc_mp
egts.o libavformat/rtpenc_mpv.o libavformat/rtpenc_vc2hq.o libavformat/rtpenc_vp8.o libavformat/rtpenc_vp9.o libavformat
/rtpenc_xiph.o libavformat/rtpproto.o libavformat/rtsp.o libavformat/rtspdec.o libavformat/rtspenc.o libavformat/s337m.o
 libavformat/samidec.o libavformat/sapdec.o libavformat/sapenc.o libavformat/sauce.o libavformat/sbgdec.o libavformat/sc
cdec.o libavformat/sccenc.o libavformat/sdp.o libavformat/sdr2.o libavformat/sdsdec.o libavformat/sdxdec.o libavformat/s
egafilm.o libavformat/segment.o libavformat/shortendec.o libavformat/sierravmd.o libavformat/siff.o libavformat/smacker.
o libavformat/smjpeg.o libavformat/smjpegdec.o libavformat/smjpegenc.o libavformat/smoothstreamingenc.o libavformat/smus
h.o libavformat/sol.o libavformat/soxdec.o libavformat/soxenc.o libavformat/spdif.o libavformat/spdifdec.o libavformat/s
pdifenc.o libavformat/srtdec.o libavformat/srtenc.o libavformat/srtp.o libavformat/srtpproto.o libavformat/stldec.o liba
vformat/subfile.o libavformat/subtitles.o libavformat/subviewer1dec.o libavformat/subviewerdec.o libavformat/supdec.o li
bavformat/svag.o libavformat/swf.o libavformat/swfdec.o libavformat/swfenc.o libavformat/takdec.o libavformat/tcp.o liba
vformat/tedcaptionsdec.o libavformat/tee.o libavformat/tee_common.o libavformat/teeproto.o libavformat/thp.o libavformat
/tiertexseq.o libavformat/tls.o libavformat/tls_schannel.o libavformat/tmv.o libavformat/tta.o libavformat/ttaenc.o liba
vformat/tty.o libavformat/txd.o libavformat/udp.o libavformat/uncodedframecrcenc.o libavformat/url.o libavformat/urldeco
de.o libavformat/utils.o libavformat/v210.o libavformat/vag.o libavformat/vc1dec.o libavformat/vc1test.o libavformat/vc1
testenc.o libavformat/vivo.o libavformat/voc.o libavformat/voc_packet.o libavformat/vocdec.o libavformat/vocenc.o libavf
ormat/vorbiscomment.o libavformat/vpcc.o libavformat/vpk.o libavformat/vplayerdec.o libavformat/vqf.o libavformat/w64.o
libavformat/wavdec.o libavformat/wavenc.o libavformat/wc3movie.o libavformat/webm_chunk.o libavformat/webmdashenc.o liba
vformat/webpenc.o libavformat/webvttdec.o libavformat/webvttenc.o libavformat/westwood_aud.o libavformat/westwood_vqa.o
libavformat/wsddec.o libavformat/wtv_common.o libavformat/wtvdec.o libavformat/wtvenc.o libavformat/wv.o libavformat/wvd
ec.o libavformat/wvedec.o libavformat/wvenc.o libavformat/xa.o libavformat/xmv.o libavformat/xvag.o libavformat/xwma.o l
ibavformat/yop.o libavformat/yuv4mpegdec.o libavformat/yuv4mpegenc.o
rm -f libavformat/libavformat.a
printf "AR\t%s\n" libavformat/libavformat.a; ar rcD libavformat/libavformat.a libavformat/3dostr.o libavformat/4xm.o lib
avformat/a64.o libavformat/aacdec.o libavformat/aadec.o libavformat/ac3dec.o libavformat/acm.o libavformat/act.o libavfo
rmat/adp.o libavformat/ads.o libavformat/adtsenc.o libavformat/adxdec.o libavformat/aea.o libavformat/afc.o libavformat/
aiffdec.o libavformat/aiffenc.o libavformat/aixdec.o libavformat/allformats.o libavformat/amr.o libavformat/anm.o libavf
ormat/apc.o libavformat/ape.o libavformat/apetag.o libavformat/apngdec.o libavformat/apngenc.o libavformat/aqtitledec.o
libavformat/asf.o libavformat/asfcrypt.o libavformat/asfdec_f.o libavformat/asfdec_o.o libavformat/asfenc.o libavformat/
assdec.o libavformat/assenc.o libavformat/ast.o libavformat/astdec.o libavformat/astenc.o libavformat/async.o libavforma
t/au.o libavformat/audiointerleave.o libavformat/avc.o libavformat/avidec.o libavformat/avienc.o libavformat/avio.o liba
vformat/aviobuf.o libavformat/avlanguage.o libavformat/avr.o libavformat/avs.o libavformat/bethsoftvid.o libavformat/bfi
.o libavformat/bink.o libavformat/bintext.o libavformat/bit.o libavformat/bmv.o libavformat/boadec.o libavformat/brstm.o
 libavformat/c93.o libavformat/cache.o libavformat/caf.o libavformat/cafdec.o libavformat/cafenc.o libavformat/cavsvideo
dec.o libavformat/cdg.o libavformat/cdxl.o libavformat/cinedec.o libavformat/concat.o libavformat/concatdec.o libavforma
t/crcenc.o libavformat/crypto.o libavformat/cutils.o libavformat/dashenc.o libavformat/data_uri.o libavformat/dauddec.o
libavformat/daudenc.o libavformat/dcstr.o libavformat/dfa.o libavformat/diracdec.o libavformat/dnxhddec.o libavformat/ds
fdec.o libavformat/dsicin.o libavformat/dss.o libavformat/dtsdec.o libavformat/dtshddec.o libavformat/dump.o libavformat
/dv.o libavformat/dvbsub.o libavformat/dvbtxt.o libavformat/dvenc.o libavformat/dxa.o libavformat/eacdata.o libavformat/
electronicarts.o libavformat/epafdec.o libavformat/ffmdec.o libavformat/ffmenc.o libavformat/ffmetadec.o libavformat/ffm
etaenc.o libavformat/fifo.o libavformat/file.o libavformat/filmstripdec.o libavformat/filmstripenc.o libavformat/flac_pi
cture.o libavformat/flacdec.o libavformat/flacenc.o libavformat/flacenc_header.o libavformat/flic.o libavformat/flvdec.o
 libavformat/flvenc.o libavformat/format.o libavformat/framecrcenc.o libavformat/framehash.o libavformat/frmdec.o libavf
ormat/fsb.o libavformat/ftp.o libavformat/g722.o libavformat/g723_1.o libavformat/g729dec.o libavformat/gdv.o libavforma
t/genh.o libavformat/gif.o libavformat/gifdec.o libavformat/gopher.o libavformat/gsmdec.o libavformat/gxf.o libavformat/
gxfenc.o libavformat/h261dec.o libavformat/h263dec.o libavformat/h264dec.o libavformat/hashenc.o libavformat/hdsenc.o li
bavformat/hevc.o libavformat/hevcdec.o libavformat/hls.o libavformat/hlsenc.o libavformat/hlsproto.o libavformat/hnm.o l
ibavformat/http.o libavformat/httpauth.o libavformat/icecast.o libavformat/icodec.o libavformat/icoenc.o libavformat/id3
v1.o libavformat/id3v2.o libavformat/id3v2enc.o libavformat/idcin.o libavformat/idroqdec.o libavformat/idroqenc.o libavf
ormat/iff.o libavformat/ilbc.o libavformat/img2.o libavformat/img2_alias_pix.o libavformat/img2_brender_pix.o libavforma
t/img2dec.o libavformat/img2enc.o libavformat/ingenientdec.o libavformat/ipmovie.o libavformat/ircam.o libavformat/ircam
dec.o libavformat/ircamenc.o libavformat/isom.o libavformat/iss.o libavformat/iv8.o libavformat/ivfdec.o libavformat/ivf
enc.o libavformat/jacosubdec.o libavformat/jacosubenc.o libavformat/jvdec.o libavformat/latmenc.o libavformat/lmlm4.o li
bavformat/loasdec.o libavformat/lrc.o libavformat/lrcdec.o libavformat/lrcenc.o libavformat/lvfdec.o libavformat/lxfdec.
o libavformat/m4vdec.o libavformat/matroska.o libavformat/matroskadec.o libavformat/matroskaenc.o libavformat/md5proto.o
 libavformat/metadata.o libavformat/mgsts.o libavformat/microdvddec.o libavformat/microdvdenc.o libavformat/mj2kdec.o li
bavformat/mkvtimestamp_v2.o libavformat/mlpdec.o libavformat/mlvdec.o libavformat/mm.o libavformat/mmf.o libavformat/mms
.o libavformat/mmsh.o libavformat/mmst.o libavformat/mov.o libavformat/mov_chan.o libavformat/movenc.o libavformat/moven
ccenc.o libavformat/movenchint.o libavformat/mp3dec.o libavformat/mp3enc.o libavformat/mpc.o libavformat/mpc8.o libavfor
mat/mpeg.o libavformat/mpegenc.o libavformat/mpegts.o libavformat/mpegtsenc.o libavformat/mpegvideodec.o libavformat/mpj
peg.o libavformat/mpjpegdec.o libavformat/mpl2dec.o libavformat/mpsubdec.o libavformat/msf.o libavformat/msnwc_tcp.o lib
avformat/mtaf.o libavformat/mtv.o libavformat/musx.o libavformat/mux.o libavformat/mvdec.o libavformat/mvi.o libavformat
/mxf.o libavformat/mxfdec.o libavformat/mxfenc.o libavformat/mxg.o libavformat/ncdec.o libavformat/network.o libavformat
/nistspheredec.o libavformat/nsvdec.o libavformat/nullenc.o libavformat/nut.o libavformat/nutdec.o libavformat/nutenc.o
libavformat/nuv.o libavformat/oggdec.o libavformat/oggenc.o libavformat/oggparsecelt.o libavformat/oggparsedaala.o libav
format/oggparsedirac.o libavformat/oggparseflac.o libavformat/oggparseogm.o libavformat/oggparseopus.o libavformat/oggpa
rseskeleton.o libavformat/oggparsespeex.o libavformat/oggparsetheora.o libavformat/oggparsevorbis.o libavformat/oggparse
vp8.o libavformat/oma.o libavformat/omadec.o libavformat/omaenc.o libavformat/options.o libavformat/os_support.o libavfo
rmat/paf.o libavformat/pcm.o libavformat/pcmdec.o libavformat/pcmenc.o libavformat/pjsdec.o libavformat/pmpdec.o libavfo
rmat/prompeg.o libavformat/protocols.o libavformat/psxstr.o libavformat/pva.o libavformat/pvfdec.o libavformat/qcp.o lib
avformat/qtpalette.o libavformat/r3d.o libavformat/rawdec.o libavformat/rawenc.o libavformat/rawutils.o libavformat/rawv
ideodec.o libavformat/rdt.o libavformat/realtextdec.o libavformat/redspark.o libavformat/replaygain.o libavformat/riff.o
 libavformat/riffdec.o libavformat/riffenc.o libavformat/rl2.o libavformat/rm.o libavformat/rmdec.o libavformat/rmenc.o
libavformat/rmsipr.o libavformat/rpl.o libavformat/rsd.o libavformat/rso.o libavformat/rsodec.o libavformat/rsoenc.o lib
avformat/rtmphttp.o libavformat/rtmppkt.o libavformat/rtmpproto.o libavformat/rtp.o libavformat/rtpdec.o libavformat/rtp
dec_ac3.o libavformat/rtpdec_amr.o libavformat/rtpdec_asf.o libavformat/rtpdec_dv.o libavformat/rtpdec_g726.o libavforma
t/rtpdec_h261.o libavformat/rtpdec_h263.o libavformat/rtpdec_h263_rfc2190.o libavformat/rtpdec_h264.o libavformat/rtpdec
_hevc.o libavformat/rtpdec_ilbc.o libavformat/rtpdec_jpeg.o libavformat/rtpdec_latm.o libavformat/rtpdec_mpa_robust.o li
bavformat/rtpdec_mpeg12.o libavformat/rtpdec_mpeg4.o libavformat/rtpdec_mpegts.o libavformat/rtpdec_qcelp.o libavformat/
rtpdec_qdm2.o libavformat/rtpdec_qt.o libavformat/rtpdec_rfc4175.o libavformat/rtpdec_svq3.o libavformat/rtpdec_vc2hq.o
libavformat/rtpdec_vp8.o libavformat/rtpdec_vp9.o libavformat/rtpdec_xiph.o libavformat/rtpenc.o libavformat/rtpenc_aac.
o libavformat/rtpenc_amr.o libavformat/rtpenc_chain.o libavformat/rtpenc_h261.o libavformat/rtpenc_h263.o libavformat/rt
penc_h263_rfc2190.o libavformat/rtpenc_h264_hevc.o libavformat/rtpenc_jpeg.o libavformat/rtpenc_latm.o libavformat/rtpen
c_mpegts.o libavformat/rtpenc_mpv.o libavformat/rtpenc_vc2hq.o libavformat/rtpenc_vp8.o libavformat/rtpenc_vp9.o libavfo
rmat/rtpenc_xiph.o libavformat/rtpproto.o libavformat/rtsp.o libavformat/rtspdec.o libavformat/rtspenc.o libavformat/s33
7m.o libavformat/samidec.o libavformat/sapdec.o libavformat/sapenc.o libavformat/sauce.o libavformat/sbgdec.o libavforma
t/sccdec.o libavformat/sccenc.o libavformat/sdp.o libavformat/sdr2.o libavformat/sdsdec.o libavformat/sdxdec.o libavform
at/segafilm.o libavformat/segment.o libavformat/shortendec.o libavformat/sierravmd.o libavformat/siff.o libavformat/smac
ker.o libavformat/smjpeg.o libavformat/smjpegdec.o libavformat/smjpegenc.o libavformat/smoothstreamingenc.o libavformat/
smush.o libavformat/sol.o libavformat/soxdec.o libavformat/soxenc.o libavformat/spdif.o libavformat/spdifdec.o libavform
at/spdifenc.o libavformat/srtdec.o libavformat/srtenc.o libavformat/srtp.o libavformat/srtpproto.o libavformat/stldec.o
libavformat/subfile.o libavformat/subtitles.o libavformat/subviewer1dec.o libavformat/subviewerdec.o libavformat/supdec.
o libavformat/svag.o libavformat/swf.o libavformat/swfdec.o libavformat/swfenc.o libavformat/takdec.o libavformat/tcp.o
libavformat/tedcaptionsdec.o libavformat/tee.o libavformat/tee_common.o libavformat/teeproto.o libavformat/thp.o libavfo
rmat/tiertexseq.o libavformat/tls.o libavformat/tls_schannel.o libavformat/tmv.o libavformat/tta.o libavformat/ttaenc.o
libavformat/tty.o libavformat/txd.o libavformat/udp.o libavformat/uncodedframecrcenc.o libavformat/url.o libavformat/url
decode.o libavformat/utils.o libavformat/v210.o libavformat/vag.o libavformat/vc1dec.o libavformat/vc1test.o libavformat
/vc1testenc.o libavformat/vivo.o libavformat/voc.o libavformat/voc_packet.o libavformat/vocdec.o libavformat/vocenc.o li
bavformat/vorbiscomment.o libavformat/vpcc.o libavformat/vpk.o libavformat/vplayerdec.o libavformat/vqf.o libavformat/w6
4.o libavformat/wavdec.o libavformat/wavenc.o libavformat/wc3movie.o libavformat/webm_chunk.o libavformat/webmdashenc.o
libavformat/webpenc.o libavformat/webvttdec.o libavformat/webvttenc.o libavformat/westwood_aud.o libavformat/westwood_vq
a.o libavformat/wsddec.o libavformat/wtv_common.o libavformat/wtvdec.o libavformat/wtvenc.o libavformat/wv.o libavformat
/wvdec.o libavformat/wvedec.o libavformat/wvenc.o libavformat/xa.o libavformat/xmv.o libavformat/xvag.o libavformat/xwma
.o libavformat/yop.o libavformat/yuv4mpegdec.o libavformat/yuv4mpegenc.o
AR      libavformat/libavformat.a
C:\mingw\bin\ar.exe: liba: No such file or directory
ffbuild/library.mak:20: recipe for target 'libavformat/libavformat.a' failed
mingw32-make: *** [libavformat/libavformat.a] Error 1

Proposed fix
I worked around this defect by changing ffbuild/library.mak as follows.
Before:

$(SUBDIR)$(LIBNAME): $(OBJS)
	$(RM) $@
	$(AR) $(ARFLAGS) $(AR_O) $^
	$(RANLIB) $@

After:

$(SUBDIR)$(LIBNAME): $(OBJS)
	$(RM) $@
	$(file >objs.txt,$^)
	cat objs.txt
	$(AR) $(ARFLAGS) $(AR_O) @objs.txt
	$(RANLIB) $@

cat objs.txt is of course optional.

Change History (6)

comment:1 by Balling, 4 years ago

Is this a bad idea or what?

Given that this works fine on wsl (where configure runs much faster) I don't think a change is necessary.

Wsl is linux for all purposes.

Last edited 13 months ago by Balling (previous) (diff)

comment:2 by Carl Eugen Hoyos, 4 years ago

Given that this works fine on wsl (where configure runs much faster) I don't think a change is necessary. In any case, a patch made with git format-patch has to be posted on the FFmpeg development mailing list.

comment:3 by lifegpc, 3 years ago

Have same problems on MingW64.

comment:4 by lifegpc, 3 years ago

After I remove make version3 in my top PATH path. The problem solved. Seems already fixed in make version 4.

comment:5 by Balling, 13 months ago

Last GNU Make is version 4.3. It is fixed there, right? So closing this?

comment:6 by rokups, 12 months ago

Oddly enough vcpkg does use GNU Make 4.3 and yet i am impacted by this issue. This workaround fixes build for me. For a bit of context - i am building ffmpeg with emscripten and only this compiler produces this issue. Windows/linux builds surprisingly are fine.

Edit: ok i lied a tiny bit. Issue i am having is a flat-out "The command line is too long." error. Not quite same as truncation, but root cause is the same.

Last edited 12 months ago by rokups (previous) (diff)
Note: See TracTickets for help on using tickets.