diff options
-rw-r--r-- | .SRCINFO | 18 | ||||
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | PKGBUILD | 28 | ||||
-rw-r--r-- | fix_ffmpeg5.patch | 159 | ||||
-rw-r--r-- | fix_operator_ambiguity.patch | 352 | ||||
-rw-r--r-- | fix_throw_specifications.patch | 24 | ||||
-rw-r--r-- | inc_boost_header.patch | 116 |
7 files changed, 685 insertions, 13 deletions
@@ -1,15 +1,15 @@ # Generated by mksrcinfo v8 -# Sat Mar 4 05:37:53 UTC 2017 +# Thu Nov 9 06:16:16 UTC 2023 pkgbase = bombono-dvd pkgdesc = DVD authoring program with nice and clean GUI pkgver = 1.2.4 - pkgrel = 2 - url = http://www.bombono.org + pkgrel = 9 + url = https://bombono.com/ install = bombono-dvd.install arch = i686 arch = x86_64 license = GPL - makedepends = scons + makedepends = scons2 depends = gtk2 depends = gtkmm depends = mjpegtools @@ -24,20 +24,28 @@ pkgbase = bombono-dvd depends = cdrkit optdepends = gvfs: web browser integration conflicts = bombono-dvd-git - source = https://github.com/muravjov/bombono-dvd/archive/1.2.4.tar.gz + source = https://github.com/bombono-dvd/bombono-dvd/archive/refs/tags/1.2.4.tar.gz source = fix_ffmpeg_codecid.patch source = fix_ptr2bool_cast.patch source = fix_c++11_literal_warnings.patch source = autoptr2uniqueptr.patch + source = inc_boost_header.patch source = fix_deprecated_boost_api.patch + source = fix_throw_specifications.patch + source = fix_operator_ambiguity.patch source = fix_ffmpeg30.patch + source = fix_ffmpeg5.patch sha256sums = 4f8c882a0c359ca8c182a627885c64aa271820eead2f9a64b34f1625c3b0a9d7 sha256sums = 63e47ffb812acb33a4d1f5d7f421eb2ccdf3ee1ce1b7f75267c32079dbc9dea1 sha256sums = b0ff83b2fad27e39dfd77d12e00c25e554fe86ee1894c2f8fbe1915a2c46dd88 sha256sums = 28be98eb36eb6422717df7048c8ee74927495e7d7829e17cb54d746befc238c4 sha256sums = 4c29e9b19ba3bcf8c42c46aaea6c1411580629e581307a91f4d085fcdaa6eab6 + sha256sums = 49f61bb2db0498440ec8926c17a88a993081a583337f41c0d9fd8f1b11b0b0ac sha256sums = a69f51f9d5bd6ebe26c13abeece9de012d110dcec944c76efbab59b6bc0ef915 + sha256sums = 72b3d6c76cbf98fb9287f7ee5b7a57b6febe2a635d50758c2451e376e3e6ca02 + sha256sums = 9d56f7d16c55a506b092dbec00789e4767963d6202d3d92b79ad389393d43c69 sha256sums = f6fd3a309987ac08b6f70132686c5a06bc7496fb6e1097539d6348f558d09502 + sha256sums = bab551ef9733eb67c1e036becec0600c31479fbdf49f6e3b4380efdcbdae726c pkgname = bombono-dvd diff --git a/.gitignore b/.gitignore index b101a9aeac20..3b71fba5add5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ bombono-dvd-*.tar.bz2 +*.pkg.tar.zst *.pkg.tar.xz *.tar.gz pkg/ @@ -3,31 +3,39 @@ pkgname=bombono-dvd pkgver=1.2.4 -pkgrel=2 +pkgrel=9 pkgdesc="DVD authoring program with nice and clean GUI" arch=('i686' 'x86_64') -url="http://www.bombono.org" +url="https://bombono.com/" license=('GPL') depends=('gtk2' 'gtkmm' 'mjpegtools' 'ffmpeg' 'libdvdread' 'dvdauthor' \ 'dvd+rw-tools' 'twolame' 'libxml++2.6' 'boost' 'enca' 'cdrkit') -makedepends=('scons') +makedepends=('scons2') optdepends=('gvfs: web browser integration') conflicts=('bombono-dvd-git') -source=("https://github.com/muravjov/${pkgname}/archive/${pkgver}.tar.gz" +source=("https://github.com/${pkgname}/${pkgname}/archive/refs/tags/${pkgver}.tar.gz" "fix_ffmpeg_codecid.patch" "fix_ptr2bool_cast.patch" "fix_c++11_literal_warnings.patch" "autoptr2uniqueptr.patch" + "inc_boost_header.patch" "fix_deprecated_boost_api.patch" - "fix_ffmpeg30.patch") + "fix_throw_specifications.patch" + "fix_operator_ambiguity.patch" + "fix_ffmpeg30.patch" + "fix_ffmpeg5.patch") install=bombono-dvd.install sha256sums=('4f8c882a0c359ca8c182a627885c64aa271820eead2f9a64b34f1625c3b0a9d7' '63e47ffb812acb33a4d1f5d7f421eb2ccdf3ee1ce1b7f75267c32079dbc9dea1' 'b0ff83b2fad27e39dfd77d12e00c25e554fe86ee1894c2f8fbe1915a2c46dd88' '28be98eb36eb6422717df7048c8ee74927495e7d7829e17cb54d746befc238c4' '4c29e9b19ba3bcf8c42c46aaea6c1411580629e581307a91f4d085fcdaa6eab6' + '49f61bb2db0498440ec8926c17a88a993081a583337f41c0d9fd8f1b11b0b0ac' 'a69f51f9d5bd6ebe26c13abeece9de012d110dcec944c76efbab59b6bc0ef915' - 'f6fd3a309987ac08b6f70132686c5a06bc7496fb6e1097539d6348f558d09502') + '72b3d6c76cbf98fb9287f7ee5b7a57b6febe2a635d50758c2451e376e3e6ca02' + '9d56f7d16c55a506b092dbec00789e4767963d6202d3d92b79ad389393d43c69' + 'f6fd3a309987ac08b6f70132686c5a06bc7496fb6e1097539d6348f558d09502' + 'bab551ef9733eb67c1e036becec0600c31479fbdf49f6e3b4380efdcbdae726c') prepare() { cd "${pkgname}-${pkgver}" @@ -37,6 +45,10 @@ prepare() { patch -Np1 -i "${srcdir}/autoptr2uniqueptr.patch" patch -Np1 -i "${srcdir}/fix_deprecated_boost_api.patch" patch -Np1 -i "${srcdir}/fix_ffmpeg30.patch" + patch -Np1 -i "${srcdir}/fix_throw_specifications.patch" + patch -Np1 -i "${srcdir}/fix_operator_ambiguity.patch" + patch -Np1 -i "${srcdir}/inc_boost_header.patch" + patch -Np1 -i "${srcdir}/fix_ffmpeg5.patch" # python2 fix for file in $(find . -name '*.py' -print); do sed -i 's_#!.*/usr/bin/python_#!/usr/bin/python2_' $file @@ -59,12 +71,12 @@ prepare() { build() { cd "${pkgname}-${pkgver}" - scons PREFIX="/usr" DESTDIR="$pkgdir" CPPFLAGS="-std=c++14 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_FILESYSTEM_NO_DEPRECATED -DBOOST_FILESYSTEM_VERSION=3" USE_EXT_BOOST=1 + scons2 PREFIX="/usr" DESTDIR="$pkgdir" CPPFLAGS="-std=c++14 -DBOOST_SYSTEM_NO_DEPRECATED -DBOOST_FILESYSTEM_NO_DEPRECATED -DBOOST_FILESYSTEM_VERSION=3" USE_EXT_BOOST=1 } package() { cd "${pkgname}-${pkgver}" - scons PREFIX="/usr" DESTDIR="$pkgdir" install + scons2 PREFIX="/usr" DESTDIR="$pkgdir" install } diff --git a/fix_ffmpeg5.patch b/fix_ffmpeg5.patch new file mode 100644 index 000000000000..371afa0388b2 --- /dev/null +++ b/fix_ffmpeg5.patch @@ -0,0 +1,159 @@ +diff -ruN old/src/mgui/ffviewer.cpp new/src/mgui/ffviewer.cpp +--- old/src/mgui/ffviewer.cpp 2022-08-26 15:51:35.995797128 +0430 ++++ new/src/mgui/ffviewer.cpp 2022-08-26 15:56:06.538840475 +0430 +@@ -37,6 +37,7 @@ + #endif + + C_LINKAGE_BEGIN ++#include <libavcodec/avcodec.h> + #include <libavutil/imgutils.h> + C_LINKAGE_END + +@@ -111,7 +112,7 @@ + + AVCodecContext* GetVideoCtx(FFData& ffv) + { +- return VideoStream(ffv)->codec; ++ return ffv.videoCtx; + } + + static bool IsValidRational(const AVRational& r) +@@ -294,6 +295,7 @@ + #else + av_close_input_file(ffi.iCtx); + #endif ++ avcodec_free_context(&ffi.videoCtx); + ffi.iCtx = 0; + } + } +@@ -437,8 +439,6 @@ + { + std::string& err_str = diag.errStr; + +- av_register_all(); +- + ASSERT( !ffi.IsOpened() ); + bool res = false; + +@@ -508,14 +508,14 @@ + for( int i=0; i < (int)ic->nb_streams; i++ ) + { + AVStream* strm = ic->streams[i]; +- AVCodecContext* avctx = strm->codec; +- if( SetIndex(video_idx, i, avctx->codec_type == AVMEDIA_TYPE_VIDEO) ) ++ AVCodecParameters* avcp = strm->codecpar; ++ if( SetIndex(video_idx, i, avcp->codec_type == AVMEDIA_TYPE_VIDEO) ) + ; + else + // для демиксера имеет значение только NONE и ALL + strm->discard = AVDISCARD_ALL; + +- SetIndex(audio_idx, i, avctx->codec_type == AVMEDIA_TYPE_AUDIO); ++ SetIndex(audio_idx, i, avcp->codec_type == AVMEDIA_TYPE_AUDIO); + } + + if( video_idx == -1 ) +@@ -562,23 +562,29 @@ + } + + // открытие кодека +- AVCodecContext* dec = ic->streams[video_idx]->codec; +- // для H.264 и плохих TS +- dec->strict_std_compliance = FF_COMPLIANCE_STRICT; ++ AVCodecParameters* decp = ic->streams[video_idx]->codecpar; + + // Chromium зачем-то выставляет явно, но такие значения уже по умолчанию + //dec->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK; + //dec->error_recognition = FF_ER_CAREFUL; + +- std::string tag_str = CodecID2Str(dec->codec_id); ++ std::string tag_str = CodecID2Str(decp->codec_id); + // AVCodec - это одиночка, а AVCodecContext - состояние для него + // в соответ. потоке контейнера +- AVCodec* codec = avcodec_find_decoder(dec->codec_id); ++ const AVCodec* codec = avcodec_find_decoder(decp->codec_id); + if( !codec ) + { + err_str = BF_("No decoder found for the stream: %1%") % tag_str % bf::stop; + return false; + } ++ AVCodecContext *dec; ++ ffi.videoCtx = dec = avcodec_alloc_context3(codec); ++ if( avcodec_parameters_to_context(dec, decp) < 0 ) ++ { ++ err_str = _("Can't copy codec parameters"); ++ return false; ++ } ++ dec->strict_std_compliance = FF_COMPLIANCE_STRICT; + + // :TRICKY: вся полезна инфо о дорожке, включая размеры видео, реально парсится + // в av_find_stream_info(), а в avcodec_open() - кодек только привязывается к +@@ -824,7 +830,15 @@ + pkt->data = 0; + pkt->size = 0; + } +- int av_res = avcodec_decode_video2(GetVideoCtx(ffv), &picture, &got_picture, pkt); ++ int av_res = avcodec_send_packet(GetVideoCtx(ffv), pkt); ++ if( av_res >= 0 ) ++ { ++ av_res = avcodec_receive_frame(GetVideoCtx(ffv), &picture); ++ if( av_res >= 0 ) ++ { ++ got_picture = 1; ++ } ++ } + #else + const uint8_t* buf = 0; + int buf_sz = 0; +@@ -870,7 +884,8 @@ + // в идеале длительность уже была рассчитана в предыдущем pkt->duration; + // пока же сделаем копипаст как в ffmpeg.c - см. особенности ffmpeg (compute_pkt_fields()) + AVStream* st = VideoStream(ffv); +- int ticks = st->parser ? st->parser->repeat_pict + 1 : dec->ticks_per_frame ; ++ AVCodecParserContext *pctx = av_stream_get_parser(st); ++ int ticks = pctx ? pctx->repeat_pict + 1 : dec->ticks_per_frame; + next_pts += VideoFrameLength(dec, ticks); + } + +@@ -1082,7 +1097,7 @@ + // переход по позиции не работает для avi, mkv - см. особенности ffmpeg + // однако для без-заголовочных демиксеров (MPEG-PS, MPEG-TS) требуется + +- typedef std::map<std::string, AVInputFormat*> Map; ++ typedef std::map<std::string, const AVInputFormat*> Map; + static Map map; + if( map.empty() ) + { +diff -ruN old/src/mgui/ffviewer.h new/src/mgui/ffviewer.h +--- old/src/mgui/ffviewer.h 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mgui/ffviewer.h 2022-08-26 16:00:47.375606645 +0430 +@@ -53,6 +53,7 @@ + // + typedef FFViewer VideoViewer; + ++struct AVCodecContext; + struct FFData; + double FrameFPS(FFData& ffv); + double Duration(FFData& ffv); +@@ -70,6 +71,7 @@ + struct FFData: public boost::noncopyable + { + AVFormatContext* iCtx; ++ AVCodecContext* videoCtx; + int videoIdx; + Point vidSz; // первоначальный размер + +diff -ruN old/src/mgui/project/media-browser.cpp new/src/mgui/project/media-browser.cpp +--- old/src/mgui/project/media-browser.cpp 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mgui/project/media-browser.cpp 2022-08-26 15:56:06.538840475 +0430 +@@ -240,8 +240,8 @@ + a_cnt = 0; + for( int i=0; i < (int)ic->nb_streams; i++ ) + { +- AVCodecContext* avctx = ic->streams[i]->codec; +- if( avctx->codec_type == AVMEDIA_TYPE_AUDIO ) ++ AVCodecParameters* avp = ic->streams[i]->codecpar; ++ if( avp->codec_type == AVMEDIA_TYPE_AUDIO ) + a_cnt++; + } + diff --git a/fix_operator_ambiguity.patch b/fix_operator_ambiguity.patch new file mode 100644 index 000000000000..5fcfaf04667c --- /dev/null +++ b/fix_operator_ambiguity.patch @@ -0,0 +1,352 @@ +diff -ruN old/src/mbase/project/serialization.h new/src/mbase/project/serialization.h +--- old/src/mbase/project/serialization.h 2017-06-01 13:54:44.086895687 +0430 ++++ new/src/mbase/project/serialization.h 2017-06-01 14:09:16.523275880 +0430 +@@ -75,7 +75,9 @@ + template<typename T> + std::string MakeString(const T& t) + { +- return (str::stream() << t).str(); ++ str::stream ss; ++ ss << t; ++ return ss.str(); + } + + template<typename T> +diff -ruN old/src/mgui/dvdimport.cpp new/src/mgui/dvdimport.cpp +--- old/src/mgui/dvdimport.cpp 2017-06-01 13:54:44.086895687 +0430 ++++ new/src/mgui/dvdimport.cpp 2017-06-01 14:06:42.488114237 +0430 +@@ -211,10 +211,11 @@ + row[VF().selState] = false; + row[VF().name] = VobFName(vob.pos); + row[VF().thumbnail] = vob.aspect == af4_3 ? pix4_3 : pix16_9; +- std::string desc = (str::stream(Mpeg::SecToHMS(vob.tmLen, true)) << ", " +- << vob.sz.x << "x" << vob.sz.y << ", " +- << (vob.aspect == af4_3 ? "4:3" : "16:9") << ", " +- << std::fixed << std::setprecision(2) << vob.Count()/512. << " " << _("MB")).str(); ++ str::stream ss (Mpeg::SecToHMS(vob.tmLen, true)); ++ ss << ", " << vob.sz.x << "x" << vob.sz.y << ", " ++ << (vob.aspect == af4_3 ? "4:3" : "16:9") << ", " ++ << std::fixed << std::setprecision(2) << vob.Count()/512. << " " << _("MB"); ++ std::string desc = ss.str(); + row[VF().desc] = desc; + } + CompleteSelection(id, false); +diff -ruN old/src/mbase/project/media.cpp new/src/mbase/project/media.cpp +--- old/src/mbase/project/media.cpp 2017-06-01 14:25:09.492134844 +0430 ++++ new/src/mbase/project/media.cpp 2017-06-01 14:37:53.196336367 +0430 +@@ -58,7 +58,9 @@ + + std::string MakeAutoName(const std::string& str, int old_sz) + { +- return (str::stream() << str << " " << old_sz+1).str(); ++ str::stream ss; ++ ss << str << " " << old_sz+1; ++ return ss.str(); + } + + void VideoMD::AddChapter(ChapterItem chp) +diff -ruN old/src/mbase/project/menu.cpp new/src/mbase/project/menu.cpp +--- old/src/mbase/project/menu.cpp 2017-06-01 14:25:09.495468141 +0430 ++++ new/src/mbase/project/menu.cpp 2017-06-01 14:39:42.004331141 +0430 +@@ -166,7 +166,9 @@ + static std::string MakeObjectPath(int idx, const char* type) + { + ASSERT( idx != NO_HNDL ); +- return (str::stream() << type << "." << idx).str(); ++ str::stream ss; ++ ss << type << "." << idx; ++ return ss.str(); + } + + std::string GetMediaRef(MediaItem mi) +@@ -197,7 +199,9 @@ + void RefMaker::Visit(VideoChapterMD& obj) + { + refStr = GetMediaRef(obj.owner); +- refStr += (str::stream() << "." << ChapterPosInt(&obj)).str(); ++ str::stream ss; ++ ss << "." << ChapterPosInt(&obj); ++ refStr += ss.str(); + } + + std::string Media2Ref(MediaItem mi) +@@ -233,8 +237,9 @@ + + std::string ThrowBadIndex(const char* prefix, int idx) + { +- throw std::runtime_error( +- (str::stream() << prefix << idx).str() ); ++ str::stream ss; ++ ss << prefix << idx; ++ throw std::runtime_error(ss.str()); + } + + MediaItem TryGetMedia(int idx) +diff -ruN old/src/mbase/project/srl-common.cpp new/src/mbase/project/srl-common.cpp +--- old/src/mbase/project/srl-common.cpp 2017-06-01 14:25:09.495468141 +0430 ++++ new/src/mbase/project/srl-common.cpp 2017-06-01 14:40:56.524722225 +0430 +@@ -36,10 +36,12 @@ + std::string ToString(const RGBA::Pixel& pxl) + { + using Mpeg::set_hms; +- return (str::stream("#") << std::hex +- << set_hms() << (int)pxl.red +- << set_hms() << (int)pxl.green +- << set_hms() << (int)pxl.blue << (int)pxl.alpha).str(); ++ str::stream ss ("#"); ++ ss << std::hex ++ << set_hms() << (int)pxl.red ++ << set_hms() << (int)pxl.green ++ << set_hms() << (int)pxl.blue << (int)pxl.alpha; ++ return ss.str(); + } + + // как pango_color_parse() +diff -ruN old/src/mgui/author/render.cpp new/src/mgui/author/render.cpp +--- old/src/mgui/author/render.cpp 2017-06-01 14:25:09.498801438 +0430 ++++ new/src/mgui/author/render.cpp 2017-06-01 14:28:08.901379890 +0430 +@@ -1307,7 +1307,9 @@ + + bool RenderMainPicture(const std::string& out_dir, Menu mn, int i) + { +- Author::Info((str::stream() << "Rendering menu \"" << mn->mdName << "\" ...").str()); ++ str::stream ss; ++ ss << "Rendering menu \"" << mn->mdName << "\" ..."; ++ Author::Info(ss.str()); + const std::string mn_dir = MakeMenuPath(out_dir, mn, i); + + if( IsMotion(mn) ) +diff -ruN old/src/mgui/author/script.cpp new/src/mgui/author/script.cpp +--- old/src/mgui/author/script.cpp 2017-06-01 14:25:09.498801438 +0430 ++++ new/src/mgui/author/script.cpp 2017-06-01 14:31:23.248978018 +0430 +@@ -130,7 +130,9 @@ + { + VideoItem vi = IsVideo(mi); + ASSERT( vi ); +- str = (str::stream() << "title " << GetAuthorNumber(vi)).str(); ++ str::stream ss; ++ ss << "title " << GetAuthorNumber(vi); ++ str = ss.str(); + } + return str; + } +@@ -179,7 +181,9 @@ + // Потому: для удоства пользователей даем создавать нулевую главу, разрешая это здесь + // (однако доп. нулевые главы будут приводить к ошибке Cannot jump to chapter N ... only M exist) + int c_num = ChapterPosInt(&obj) + (owner->List()[0]->chpTime ? 2 : 1) ; +- res = (str::stream() << "jump title " << v_num << " chapter " << c_num << ";").str(); ++ str::stream ss; ++ ss << "jump title " << v_num << " chapter " << c_num << ";"; ++ res = ss.str(); + } + + static std::string MakeButtonJump(MediaItem mi, bool vts_domain) +@@ -204,7 +208,9 @@ + if( !fs::native(name) ) + name = "Menu"; + +- std::string fname = (str::stream() << idx+1 << "." << name).str(); ++ str::stream ss; ++ ss << idx+1 << "." << name; ++ std::string fname = ss.str(); + return cnv_from_utf8 ? ConvertPathFromUtf8(fname) : fname ; + } + +@@ -626,7 +632,9 @@ + void AuthorSectionInfo(const std::string& str) + { + Author::Info("\n#", false); +- Author::Info((str::stream() << "# " << str).str(), false); ++ str::stream ss; ++ ss << "# " << str; ++ Author::Info(ss.str(), false); + Author::Info("#\n", false); + } + +@@ -1082,7 +1090,9 @@ + + static void AuthorImpl(const std::string& out_dir) + { +- AuthorSectionInfo((str::stream() << "Build DVD-Video in folder: " << out_dir).str()); ++ str::stream ss; ++ ss << "Build DVD-Video in folder: " << out_dir; ++ AuthorSectionInfo(ss.str()); + IteratePendingEvents(); + + IndexVideosForAuthoring(); +diff -ruN old/src/mgui/project/add.cpp new/src/mgui/project/add.cpp +--- old/src/mgui/project/add.cpp 2017-06-01 14:25:09.498801438 +0430 ++++ new/src/mgui/project/add.cpp 2017-06-01 14:33:26.303387642 +0430 +@@ -86,7 +86,9 @@ + + static std::string FpsToStr(const Point& frate) + { +- return (str::stream() << (double)frate.x/frate.y).str(); ++ str::stream ss; ++ ss << (double)frate.x/frate.y; ++ return ss.str(); + } + + static std::string TVTypeStr(bool is_ntsc) +@@ -163,7 +165,9 @@ + // * + bool is_aspect_ok = vid.sarCode == af4_3 || vid.sarCode == af16_9; + Point aspect = vid.SizeAspect(); +- std::string aspect_str = (str::stream() << aspect.x << ':' << aspect.y).str(); ++ str::stream ss; ++ ss << aspect.x << ':' << aspect.y; ++ std::string aspect_str = ss.str(); + SetImportError(ed, is_aspect_ok, + std::string(_("Aspect ratio")) + ": \t" + MarkError(aspect_str, is_aspect_ok), + BF_(Descriptions[2]) % tv_type % bf::stop); +diff -ruN old/src/mgui/sdk/cairo_utils.cpp new/src/mgui/sdk/cairo_utils.cpp +--- old/src/mgui/sdk/cairo_utils.cpp 2017-06-01 14:25:09.498801438 +0430 ++++ new/src/mgui/sdk/cairo_utils.cpp 2017-06-01 14:35:20.831246046 +0430 +@@ -27,6 +27,8 @@ + std::string MakeSVGFilename(const char* prefix) + { + static int idx = 1; +- return (str::stream() << prefix << "-" << Mpeg::set_hms() << idx++ << ".svg" ).str(); ++ str::stream ss; ++ ss << prefix << "-" << Mpeg::set_hms() << idx++ << ".svg"; ++ return ss.str(); + } + +diff -ruN old/src/mgui/timeline/layout.cpp new/src/mgui/timeline/layout.cpp +--- old/src/mgui/timeline/layout.cpp 2017-06-01 14:25:09.502134734 +0430 ++++ new/src/mgui/timeline/layout.cpp 2017-06-01 14:36:36.152095784 +0430 +@@ -600,8 +600,10 @@ + void FramesToTime(std::string& str, int cnt, double fps) + { + time4_t t4 = FramesToTime(cnt, fps); +- str = (str::stream() << Mpeg::set_hms() << t4.hh << ":" << Mpeg::set_hms() << t4.mm << ":" +- << Mpeg::set_hms() << t4.ss << ";" << Mpeg::set_hms() << t4.ff).str(); ++ str::stream ss; ++ ss << Mpeg::set_hms() << t4.hh << ":" << Mpeg::set_hms() << t4.mm << ":" ++ << Mpeg::set_hms() << t4.ss << ";" << Mpeg::set_hms() << t4.ff; ++ str = ss.str(); + } + + } // namespace TimeLine +diff -ruN old/src/mgui/win_utils.cpp new/src/mgui/win_utils.cpp +--- old/src/mgui/win_utils.cpp 2017-06-01 14:25:09.498801438 +0430 ++++ new/src/mgui/win_utils.cpp 2017-06-01 14:26:50.898112082 +0430 +@@ -132,7 +132,9 @@ + + std::string ColorToString(const unsigned int rgba) + { +- return (str::stream() << std::hex << (rgba >> 8)).str(); ++ str::stream ss; ++ ss << std::hex << (rgba >> 8); ++ return ss.str(); + } + + CR::Color GetBGColor(Gtk::Widget& wdg) +diff -ruN old/src/mdemux/dvdread.cpp new/src/mdemux/dvdread.cpp +--- old/src/mdemux/dvdread.cpp 2017-06-01 14:48:30.110355679 +0430 ++++ new/src/mdemux/dvdread.cpp 2017-06-01 14:50:50.141065674 +0430 +@@ -35,8 +35,10 @@ + std::string VobFName(VobPos& pos, const std::string& suffix) + { + using Mpeg::set_hms; +- return (str::stream("Video") << set_hms() << int(pos.Vts()) +- << "-" << set_hms() << pos.VobId() << suffix << ".vob").str(); ++ str::stream ss ("Video"); ++ ss << set_hms() << int(pos.Vts()) ++ << "-" << set_hms() << pos.VobId() << suffix << ".vob"; ++ return ss.str(); + } + + typedef boost::function<void(int, double)> VobTimeFnr; +@@ -282,9 +284,11 @@ + static void TryDVDReadBlocks(dvd_file_t* file, int off, size_t cnt, char* buf) + { + int real_cnt = DVDReadBlocks(file, off, cnt, (unsigned char*)buf); +- if( (int)cnt != real_cnt ) +- throw std::runtime_error( (str::stream() << real_cnt << +- " != DVDReadBlocks(" << cnt << ")").str() ); ++ if( (int)cnt != real_cnt ) { ++ str::stream ss; ++ ss << real_cnt << " != DVDReadBlocks(" << cnt << ")"; ++ throw std::runtime_error( ss.str() ); ++ } + } + + // размер буфера должен соответствовать читаемому диапазону +diff -ruN old/src/mdemux/mpeg2demux.cpp new/src/mdemux/mpeg2demux.cpp +--- old/src/mdemux/mpeg2demux.cpp 2017-06-01 14:48:30.110355679 +0430 ++++ new/src/mdemux/mpeg2demux.cpp 2017-06-01 14:55:35.784165916 +0430 +@@ -71,7 +71,9 @@ + + static std::string MakePESKey(int id, const char* ext) + { +- return (str::stream() << id << "." << ext).str(); ++ str::stream ss; ++ ss << id << "." << ext; ++ return ss.str(); + } + + static bool ReadPart(io::stream& strm, uint8_t* buf, int sz, int& len) +@@ -110,7 +112,9 @@ + ASSERT(0); + } + +- std::string header_str = (str::stream() << sample_rate << ":" << channels << ":" << bps << ".lpcm").str(); ++ str::stream ss; ++ ss << sample_rate << ":" << channels << ":" << bps << ".lpcm"; ++ std::string header_str = ss.str(); + return MakePESKey(track, header_str.c_str()); + } + +diff -ruN old/src/mdemux/seek.cpp new/src/mdemux/seek.cpp +--- old/src/mdemux/seek.cpp 2017-06-01 14:48:30.110355679 +0430 ++++ new/src/mdemux/seek.cpp 2017-06-01 14:52:09.669280234 +0430 +@@ -37,8 +37,10 @@ + int hh = min / 60; + int mm = min - hh*60; + +- return (str::stream() << set_hms() << hh << ":" +- << set_hms() << mm << ":" << set_hms() << ss).str(); ++ str::stream strss; ++ strss << set_hms() << hh << ":" ++ << set_hms() << mm << ":" << set_hms() << ss; ++ return strss.str(); + } + + bool MediaInfo::InitBegin(VideoLine& vl) +diff -ruN old/src/mlib/sdk/misc.cpp new/src/mlib/sdk/misc.cpp +--- old/src/mlib/sdk/misc.cpp 2017-06-01 14:48:30.120355606 +0430 ++++ new/src/mlib/sdk/misc.cpp 2017-06-01 14:53:25.504549937 +0430 +@@ -173,12 +173,16 @@ + std::string Double2Str(double val) + { + //return boost::format("%1%") % val % bf::stop; +- return (str::stream() << val).str(); ++ str::stream ss; ++ ss << val; ++ return ss.str(); + } + + std::string Int2Str(int val) + { +- return (str::stream() << val).str(); ++ str::stream ss; ++ ss << val; ++ return ss.str(); + } + + static bool ICaseMatch(const std::string& str, const std::string& pat_str) +diff -ruN old/src/mlib/sdk/system.cpp new/src/mlib/sdk/system.cpp +--- old/src/mlib/sdk/system.cpp 2017-06-01 14:48:30.120355606 +0430 ++++ new/src/mlib/sdk/system.cpp 2017-06-01 14:54:13.980777662 +0430 +@@ -28,7 +28,9 @@ + int GetMemSize() + { + pid_t pid = getpid(); +- std::string str = (str::stream() << "/proc/" << pid << "/statm").str(); ++ str::stream ss; ++ ss << "/proc/" << pid << "/statm"; ++ std::string str = ss.str(); + + io::stream strm(str.c_str(), iof::in); + int mem; diff --git a/fix_throw_specifications.patch b/fix_throw_specifications.patch new file mode 100644 index 000000000000..f2f4c40d4f30 --- /dev/null +++ b/fix_throw_specifications.patch @@ -0,0 +1,24 @@ +diff -ruN old/src/mbase/project/table.h new/src/mbase/project/table.h +--- old/src/mbase/project/table.h 2017-06-01 13:54:44.086895687 +0430 ++++ new/src/mbase/project/table.h 2017-06-01 13:55:58.089107253 +0430 +@@ -128,7 +128,7 @@ + void ClearSettings(); + + void Load(const std::string& fname, +- const std::string& cur_dir = std::string()) throw (std::exception); ++ const std::string& cur_dir = std::string()); + bool Save(); + + bool SaveAs(const std::string& fname, +diff -ruN old/src/mbase/project/srl-db.cpp new/src/mbase/project/srl-db.cpp +--- old/src/mbase/project/srl-db.cpp 2017-06-01 14:25:09.495468141 +0430 ++++ new/src/mbase/project/srl-db.cpp 2017-06-01 14:41:49.699901753 +0430 +@@ -102,7 +102,7 @@ + } + + void ADatabase::Load(const std::string& fname, +- const std::string& cur_dir) throw (std::exception) ++ const std::string& cur_dir) + { + try + { diff --git a/inc_boost_header.patch b/inc_boost_header.patch new file mode 100644 index 000000000000..74a0387ec06e --- /dev/null +++ b/inc_boost_header.patch @@ -0,0 +1,116 @@ +diff -ruN old/src/mbase/project/table.cpp new/src/mbase/project/table.cpp +--- old/src/mbase/project/table.cpp 2022-02-04 22:35:45.903951084 +0330 ++++ new/src/mbase/project/table.cpp 2022-02-04 22:33:44.542891731 +0330 +@@ -29,6 +29,7 @@ + #include "theme.h" + + #include <mbase/resources.h> ++#include <boost/filesystem/directory.hpp> + + + const char* APROJECT_VERSION = "1.2.4"; +diff -ruN old/src/mgui/editor/toolbar.cpp new/src/mgui/editor/toolbar.cpp +--- old/src/mgui/editor/toolbar.cpp 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mgui/editor/toolbar.cpp 2022-02-04 22:33:44.542891731 +0330 +@@ -45,6 +45,8 @@ + #include <mlib/sdk/logger.h> + #include <mlib/range/enumerate.h> + ++#include <boost/filesystem/directory.hpp> ++ + namespace Editor + { + +diff -ruN old/src/mgui/project/mconstructor.cpp new/src/mgui/project/mconstructor.cpp +--- old/src/mgui/project/mconstructor.cpp 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mgui/project/mconstructor.cpp 2022-02-04 22:33:44.542891731 +0330 +@@ -52,6 +52,8 @@ + // COPY_N_PASTE_ETALON из go-file.c, проект Gnumeric, http://projects.gnome.org/gnumeric/ + // + ++#include <boost/filesystem/directory.hpp> ++ + #ifndef GOFFICE_WITH_GNOME + static char * + check_program (char const *prog) +diff -ruN old/src/mlib/filesystem.cpp new/src/mlib/filesystem.cpp +--- old/src/mlib/filesystem.cpp 2022-02-04 22:35:45.907284447 +0330 ++++ new/src/mlib/filesystem.cpp 2022-02-04 22:33:44.542891731 +0330 +@@ -30,6 +30,7 @@ + #if BOOST_MINOR_VERSION >= 51 + #define BOOST_FS_3 boost::filesystem + #include <boost/filesystem/path_traits.hpp> // boost::filesystem::convert() ++#include <boost/filesystem/directory.hpp> + #else + #define BOOST_FS_3 boost::filesystem3 + #include <boost/filesystem/v3/path_traits.hpp> +diff -ruN old/src/mlib/read_stream.h new/src/mlib/read_stream.h +--- old/src/mlib/read_stream.h 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mlib/read_stream.h 2022-02-04 22:33:44.542891731 +0330 +@@ -22,6 +22,8 @@ + #ifndef __MLIB_READ_STREAM_H__ + #define __MLIB_READ_STREAM_H__ + ++#include <boost/mpl/bool.hpp> ++ + #include "stream.h" + #include "filesystem.h" + +diff -ruN old/src/mlib/regex.cpp new/src/mlib/regex.cpp +--- old/src/mlib/regex.cpp 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mlib/regex.cpp 2022-02-04 22:33:44.542891731 +0330 +@@ -22,7 +22,7 @@ + #include "regex.h" + #include "string.h" + +-#include <boost/regex.hpp> ++#include <boost/regex/v4/regex.hpp> + + namespace re + { +diff -ruN old/src/mlib/regex.h new/src/mlib/regex.h +--- old/src/mlib/regex.h 2022-02-04 22:35:35.320525320 +0330 ++++ new/src/mlib/regex.h 2022-02-04 22:34:29.913287618 +0330 +@@ -27,6 +27,7 @@ + #include <boost/regex/v4/regbase.hpp> + #include <boost/regex/v4/match_flags.hpp> + ++#include <boost/mpl/bool.hpp> + #include <mlib/ptr.h> + + #include <string> +diff -ruN old/src/mlib/sdk/bfs.h new/src/mlib/sdk/bfs.h +--- old/src/mlib/sdk/bfs.h 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mlib/sdk/bfs.h 2022-02-04 22:33:44.542891731 +0330 +@@ -7,6 +7,7 @@ + //#define BOOST_FILESYSTEM_NO_DEPRECATED + + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/exception.hpp> + #include <boost/filesystem/operations.hpp> + #include <boost/filesystem/convenience.hpp> // fs::create_directories() + +diff -ruN old/src/mlib/tech.h new/src/mlib/tech.h +--- old/src/mlib/tech.h 2016-04-10 15:15:39.000000000 +0430 ++++ new/src/mlib/tech.h 2022-02-04 22:33:44.542891731 +0330 +@@ -26,7 +26,7 @@ + // Технические вещи + // + #include <boost/current_function.hpp> // для BOOST_CURRENT_FUNCTION +-#include <boost/detail/endian.hpp> // для BOOST_XXX_ENDIAN ++#include <boost/predef/other/endian.h> // BOOST_ENDIAN_*_BYTE + #include <boost/version.hpp> // для BOOST_MINOR_VERSION + + // для С-шного кода в С++ +@@ -78,9 +78,9 @@ + long line, const char* function); + + // endianness +-#if defined(BOOST_BIG_ENDIAN) ++#if defined(BOOST_ENDIAN_BIG_BYTE) + # define HAS_BIG_ENDIAN +-#elif defined(BOOST_LITTLE_ENDIAN) ++#elif defined(BOOST_ENDIAN_LITTLE_BYTE) + # define HAS_LITTLE_ENDIAN + #else + # error mlib/tech.h: unknown endianness (legacy PDP arch?) |