Summary: | media-video/movit-1.5.2 - resample_effect.h:44:7: error: 'unique_ptr' in namespace 'std' does not name a template type | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Erich Seifert <eseifert> |
Component: | Current packages | Assignee: | Patrick Lauer <patrick> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | atoth, dschridde+gentoobugs, egorov_egor, gentoo, ionic, jasonswaataja, kripton, phobosk, rose, voron1 |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
build.log
Revbump and revert C++11 usage. Revbump and revert C++11 usage. |
Description
Erich Seifert
2017-07-31 11:50:09 UTC
Yes, I'm observing this too on my systems. Same here. In file included from resample_effect.cpp:20:0: resample_effect.h:44:7: error: ‘unique_ptr’ in namespace ‘std’ does not name a template type std::unique_ptr<Tap<fp16_int_t>[]> bilinear_weights_fp16; ^ resample_effect.h:45:7: error: ‘unique_ptr’ in namespace ‘std’ does not name a template type std::unique_ptr<Tap<float>[]> bilinear_weights_fp32; ^ resample_effect.cpp:209:121: error: ‘unique_ptr’ has not been declared unsigned combine_many_samples(const Tap<float> *weights, unsigned src_size, unsigned src_samples, unsigned dst_samples, unique_ptr<Tap<DestFloat>[]> *bilinear_weights) ^ resample_effect.cpp:209:131: error: expected ‘,’ or ‘...’ before ‘<’ token unsigned combine_many_samples(const Tap<float> *weights, unsigned src_size, unsigned src_samples, unsigned dst_samples, unique_ptr<Tap<DestFloat>[]> *bilinear_weights) ^ resample_effect.cpp: In function ‘unsigned int movit::{anonymous}::combine_many_samples(const movit::Tap<float>*, unsigned int, unsigned int, unsigned int, int)’: resample_effect.cpp:224:2: error: ‘bilinear_weights’ was not declared in this scope bilinear_weights->reset(new Tap<DestFloat>[dst_samples * src_bilinear_samples]); ^ In file included from resample_effect.h:19:0, from resample_effect.cpp:20: resample_effect.cpp: In member function ‘void movit::SingleResamplePassEffect::update_texture(GLuint, const string&, unsigned int*)’: resample_effect.cpp:529:18: error: ‘struct movit::ScalingWeights’ has no member named ‘bilinear_weights_fp16’ assert((weights.bilinear_weights_fp16 == nullptr) != (weights.bilinear_weights_fp32 == nullptr)); ^ resample_effect.cpp:529:43: error: ‘nullptr’ was not declared in this scope assert((weights.bilinear_weights_fp16 == nullptr) != (weights.bilinear_weights_fp32 == nullptr)); ^ resample_effect.cpp:529:64: error: ‘struct movit::ScalingWeights’ has no member named ‘bilinear_weights_fp32’ assert((weights.bilinear_weights_fp16 == nullptr) != (weights.bilinear_weights_fp32 == nullptr)); ^ resample_effect.cpp:530:14: error: ‘struct movit::ScalingWeights’ has no member named ‘bilinear_weights_fp32’ if (weights.bilinear_weights_fp32 != nullptr) { ^ resample_effect.cpp:533:20: error: ‘struct movit::ScalingWeights’ has no member named ‘bilinear_weights_fp32’ pixels = weights.bilinear_weights_fp32.get(); ^ resample_effect.cpp: In function ‘movit::ScalingWeights movit::calculate_scaling_weights(unsigned int, unsigned int, float, float)’: resample_effect.cpp:635:2: error: ‘unique_ptr’ was not declared in this scope unique_ptr<Tap<float>[]> weights(new Tap<float>[dst_samples * src_samples]); ^ resample_effect.cpp:635:23: error: expected primary-expression before ‘[’ token unique_ptr<Tap<float>[]> weights(new Tap<float>[dst_samples * src_samples]); ^ resample_effect.cpp:635:24: error: expected primary-expression before ‘]’ token unique_ptr<Tap<float>[]> weights(new Tap<float>[dst_samples * src_samples]); ^ resample_effect.cpp:635:76: error: ‘weights’ was not declared in this scope unique_ptr<Tap<float>[]> weights(new Tap<float>[dst_samples * src_samples]); ^ resample_effect.cpp:659:28: error: expected primary-expression before ‘[’ token unique_ptr<Tap<fp16_int_t>[]> bilinear_weights_fp16; ^ resample_effect.cpp:659:29: error: expected primary-expression before ‘]’ token unique_ptr<Tap<fp16_int_t>[]> bilinear_weights_fp16; ^ resample_effect.cpp:659:32: error: ‘bilinear_weights_fp16’ was not declared in this scope unique_ptr<Tap<fp16_int_t>[]> bilinear_weights_fp16; ^ resample_effect.cpp:661:23: error: expected primary-expression before ‘[’ token unique_ptr<Tap<float>[]> bilinear_weights_fp32 = NULL; ^ resample_effect.cpp:661:24: error: expected primary-expression before ‘]’ token unique_ptr<Tap<float>[]> bilinear_weights_fp32 = NULL; ^ resample_effect.cpp:661:27: error: ‘bilinear_weights_fp32’ was not declared in this scope unique_ptr<Tap<float>[]> bilinear_weights_fp32 = NULL; ^ resample_effect.cpp:683:6: error: ‘struct movit::ScalingWeights’ has no member named ‘bilinear_weights_fp16’ ret.bilinear_weights_fp16 = move(bilinear_weights_fp16); ^ resample_effect.cpp:683:56: error: ‘move’ was not declared in this scope ret.bilinear_weights_fp16 = move(bilinear_weights_fp16); ^ resample_effect.cpp:684:6: error: ‘struct movit::ScalingWeights’ has no member named ‘bilinear_weights_fp32’ ret.bilinear_weights_fp32 = move(bilinear_weights_fp32); ^ This is both 1.5.1 and 1.5.2 Forget that last comment. The only consumer/dependent of media-video/movit is media-libs/mlt. mlt is already compiling using C++11 features and thus links that ABI. movit was previously C++03-compatible, but now requires C++11. Building it with C++11 features and linking against that ABI should thus be fine and carried out. (In reply to Mihai Moldovan from comment #5) > The only consumer/dependent of media-video/movit is media-libs/mlt. mlt is > already compiling using C++11 features and thus links that ABI. > > movit was previously C++03-compatible, but now requires C++11. Building it > with C++11 features and linking against that ABI should thus be fine and > carried out. Cool! But who is this a suggestion for; users or the ebuild maintainer? And do you have the concrete implications of your hints, or do you leave them to be found out by the more interested? It's a suggestion for the maintainer. I naturally can upload a patch a bit later. Actually, the author opted to continue using C++03: https://git.sesse.net/?p=movit;a=commitdiff;h=8e9f58fec54a4c879035b214fd7411f6ff7b3a32;hp=4a714eb0295835778f274b07df6acc4cb0889fa4 Instead of enabling C++11 support, that should probably be backported. Even though mixing binaries compiled against different ABIs is a bad idea in general... However, backporting this will lead to users running into #626604 instead. Let's wait a bit for that to get fixed. Created attachment 487638 [details, diff]
Revbump and revert C++11 usage.
Afterwards, please apply the patch in https://bugs.gentoo.org/show_bug.cgi?id=626604. Created attachment 487642 [details, diff]
Revbump and revert C++11 usage.
We don't need flag-o-matic. Drop it.
The new upstream release, available as part of https://gitweb.gentoo.org/repo/gentoo.git/commit/media-video/movit?id=e1f1f16eefefd7868b26068bffdec3e99077ae6d should fix the issue and make my patch obsolete. Please close this bug report. |