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

Topic/boost 1.61 #2086

Merged
merged 3 commits into from
May 20, 2016
Merged

Topic/boost 1.61 #2086

merged 3 commits into from
May 20, 2016

Conversation

timblechmann
Copy link
Contributor

No description provided.

@bagong
Copy link
Contributor

bagong commented May 13, 2016

Would you be so kind to provide a few words what we can expect from this. The rapid boost updates tend to create problems on Windows, especially for VS - which is currently locked out from master following the switch from 1.59 to 1.6. It would be nice to be able to balance win and loss. Locking out VS also means we cannot test if other commits create a problem for VS. Thank you.

@timblechmann
Copy link
Contributor Author

http://www.boost.org/users/history/version_1_61_0.html

i use boost dll in supernova.

@crucialfelix
Copy link
Member

It might be good to push this to 3.9 if it is going to block Windows.

Or is Windows already blocked ?

On Sat, May 14, 2016 at 1:59 AM Tim Blechmann notifications@github.com
wrote:

http://www.boost.org/users/history/version_1_61_0.html

i use boost dll in supernova.


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
#2086 (comment)

https://twitter.com/crucialfelix
https://medium.com/@crucialfelix
http://www.mattermind.com/

@timblechmann
Copy link
Contributor Author

if people have problems with msvc and boost-1.60, then boost-1.61 won't do any harm, no? people can always use pre-build boost binaries, though. i might also give pointers how to fix build issues, but building boost is as simple as putting all sources into a library.

@bagong
Copy link
Contributor

bagong commented May 14, 2016

The more we advance in a stage where things cannot be tested on a certain platform/with a certain build environment, the bigger the risk is that more commits come in that break a platform. I know there are release notes, what I would like to know is why this is needed for SC if it breaks builds on certain platforms. Again not because I am fundamentally opposed quick updating, but because we need to balance win and loss.

Chris, putting it into "a" 3.9 branch only postpones the problem and makes the risk bigger that additional commits only widen the problem for certain platforms. This is community is still too small to maintain two branches well. The longer attention is split between two branches the bigger the risk get's that things get committed that break a platform without anybody noticing or being able to do something about it. It is true that this particular boost update doesn't add to the Windows problem, but the last one did

So the real question is general: do we want to accept commits that break a platform or not? Imho the answer is a clear no. The second question is: how to design a release process such that it creates as little as possible disruption for the overall development process. Here one component of the answer is: splitting of a release branch must be done as late as possible. One criteria for creating a release branch could be that all platforms fundamentally work before the branch is split off. Again my reason to vote for such policies is pragmatic: this community is still too small to be able to afford multiple active branches.

@timblechmann
Copy link
Contributor Author

if you don't want to break anything: don't change anything. ever. oh, and if you don't want to risk any bugs: do not try to use visual studio: it is full of known bugs, incorrect and inefficient codegen (real world experience). oh: and if you want to reduce the number of risks: only support one compiler version and one qt version.

@bagong even worse than having a small community: supercollider doesn't have any architect.

@muellmusik
Copy link
Contributor

In principle, if we're supporting three platforms then one should not push stuff that breaks (some?) builds on one of them without a fix. This is tricky, as not everyone can test (I had to rely on @bagong to help test some stuff on Windows recently, for instance), but in principle it's what we should aim for.

I suggest the following:

  1. Hold this PR for the moment
  2. Get Windows building again
  3. Test this PR on Windows and fix if necessary before merging

In future no PRs should be merged that break builds on a platform. That's far more important than any feature/functionality, so there should be a fix in place before merging. That just seems common sense, and it's not fair for Rainer and others to have to fix Windows builds because of changes others wanted.

Saying it's already broken by the last time boost was updated, or that VS is crap, are not reasonable arguments for merging this now IMO. If the decision is to not support VS anymore then fine, but again that should be done and in place.

@crucialfelix
Copy link
Member

It was 1.60 that broke the build, 1.61 shouldn't make any difference. Herr Blechmann's arguments are otherwise a bit rough.

VS should be able to handle 1.60, no?

http://www.boost.org/doc/libs/1_60_0/more/getting_started/windows.html#build-from-the-visual-studio-ide
https://studiofreya.com/2015/12/19/how-to-build-boost-1-60-with-visual-studio-2015/

@muellmusik
Copy link
Contributor

It was 1.60 that broke the build, 1.61 shouldn't make any difference.

Maybe, maybe not. Maybe even probably. But moving targets suck. Better to fix first, then test before merging this. 2 cents (1.2 cents after taxes)

@bagong
Copy link
Contributor

bagong commented May 14, 2016

I am not opposing this merge, it makes no difference for VS, it might actually help a bit (the release notes show that the boost people are aware of problems with VS). But we need that general discussion and a policy. Maybe this is not the moment for debate, but at some point we need it. Lot's of work and time get's anihilated by commits that don't pay attention to "other" platforms.

Btw, for the day that this debate is welcome and brought to a policy: I think we need to add some sector of the ARM platform to "supported", e.g. Raspberry Pi or Beaglebone black. They are likely easier to support than VS. But VS is also really important because 90% of prospective developers for Windows will be using VS. Just my 2 cent.

@bagong
Copy link
Contributor

bagong commented May 14, 2016

As to the specific problem for VS somehow related to boost, this is what Luis had to say:

"From what I saw on the previous version this was because it [boost] is using a C++11 feature that is not supported by msvc, and it is not clear when it will be. I think that part was trying to use variadic templates."

@llloret
Copy link
Member

llloret commented May 14, 2016

Msvc supports most of boost, but there are some things that are not supported. And some of those not supported features are used in sclang. There is a C++11 feature called S_FINAE, that msvc does not support completely, and it is not clear whem they will.

I agree with @muellmusik, that the best it's probably to stabilize and get Windows building on master, and then continue from there.
Otherwise it is going very very difficult to support windows.
Just my opinion, of course.

@timblechmann
Copy link
Contributor Author

I am not opposing this merge, it makes no difference for VS, it might
actually help a bit (the release notes show that the boost people are
aware of problems with VS).

which part of the release notes are you referring to (disclaimer: i'm
one of "the boost people") and in which way does that affect supercollider?

Btw, for the day that this debate is welcome and brought to a policy: I
think we need to add some sector of the ARM platform to "supported",
e.g. Raspberry Pi or Beaglebone black.

fwiw, "support" will always degrade when nobody actively maintains a
certain part: even if the code doesn't change, operating systems
introduce new APIs and deprecate/remove out old ones. apple made a
business model out of it (remember osx10.4 midi for example), on windows
tries to keep higher degree of compatibility and on linux most OS APIs
are abstracted by libraries.

this maintenance is an active process, though: if nobody spends time on
the codebase, at one point it won't work anymore.

They are likely easier to support
than VS. But VS is also really important because 90% of prospective
developers for Windows will be using VS. Just my 2 cent.

i'm using msvc in my professional life. many developers use the
microsoft compiler with qtcreator these days.

standard compliance of the microsoft compiler is very bad, which is the
reason why professional projects actually move away from using it. the
generated code is far from the quality of clang or gcc (disclaimer 2:
i've spent a fair amount of time on the audio code of a well-known
commercial drum computer)

@timblechmann
Copy link
Contributor Author

@llloret boost is full of broken compiler workarounds for msvc (i'm having a couple of them in my own boost libraries). is SFINAE really used in the sclang codebase?

@llloret
Copy link
Member

llloret commented May 14, 2016

Perhaps we can make a quick test? Compile master with the new boost, and see how it compares with the current one, and then we can make a more informed decision about whether to stabilize windows before or after.
What do you think?

@timblechmann
Copy link
Contributor Author

@llloret sounds much better than spreading any FUD

@bagong
Copy link
Contributor

bagong commented May 14, 2016

These are the build errors with boost 1.6.1, VS 2013. I don't remember the details of the build with 1.6.0, but I think they were quite similar:

"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\ALL_BUILD.vcxproj" (default target) (1) ->
"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\server\plugins\BinaryOpUGens.vcxproj" (default target) (3) ->
"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\sclang.vcxproj" (default target) (8) ->
"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj" (default target) (12) ->
(ClCompile target) ->
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<boost::result_of<F
(void)>::type> boost::async(F &&)' : expects 1 arguments - 8 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_V
S64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<T> boost::async(R
(__cdecl *)(void))' : expects 1 arguments - 8 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\lib
sclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(decay<A1>::type,decay<A2>::type)>::type> boost::async(Executor &,F &&,A1 &&,A2 &&)' : expects 4 arguments - 8 pr
ovided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(decay<A1>::type)>::type> boost::async(Executor &,F &&,A1 &&)' : expects 3 arguments - 8 provided [C:\Users\Raine
r\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(void)>::type> boost::async(Executor &,F &&)' : expects 2 arguments - 8 provided [C:\Users\Rainer\Projects\sc\sup
ercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<Rp> boost::async(E
xecutor &,R (__cdecl *)(A1 &&),A1 &&)' : expects 3 arguments - 8 provided [C:\Users\Rainer\Projects\sc\supercollider\build_mast
er_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<Rp> boost::async(E
xecutor &,R (__cdecl *)(void))' : expects 2 arguments - 8 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64
_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<boost::result_of<d
ecay<T>::type(void)>::type> boost::async(boost::launch,F &&)' : expects 2 arguments - 8 provided [C:\Users\Rainer\Projects\sc\s
upercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232): error C2780: 'boost::future<T> boost::async(bo
ost::launch,R (__cdecl *)(void))' : expects 2 arguments - 8 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS
64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1233): error C3536: 'future': cannot be used before i
t is initialized [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1233): error C2664: 'void std::vector<boost::future<v
oid>,std::allocator<_Ty>>::push_back(const boost::future<void> &)' : cannot convert argument 1 from 'int' to 'boost::future<voi
d> &&' [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<boost::result_of<F
(void)>::type> boost::async(F &&)' : expects 1 arguments - 7 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_V
S64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<T> boost::async(R
(__cdecl *)(void))' : expects 1 arguments - 7 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\lib
sclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(decay<A1>::type,decay<A2>::type)>::type> boost::async(Executor &,F &&,A1 &&,A2 &&)' : expects 4 arguments - 7 pr
ovided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(decay<A1>::type)>::type> boost::async(Executor &,F &&,A1 &&)' : expects 3 arguments - 7 provided [C:\Users\Raine
r\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(void)>::type> boost::async(Executor &,F &&)' : expects 2 arguments - 7 provided [C:\Users\Rainer\Projects\sc\sup
ercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<Rp> boost::async(E
xecutor &,R (__cdecl *)(A1 &&),A1 &&)' : expects 3 arguments - 7 provided [C:\Users\Rainer\Projects\sc\supercollider\build_mast
er_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<Rp> boost::async(E
xecutor &,R (__cdecl *)(void))' : expects 2 arguments - 7 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64
_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<boost::result_of<d
ecay<T>::type(void)>::type> boost::async(boost::launch,F &&)' : expects 2 arguments - 7 provided [C:\Users\Rainer\Projects\sc\s
upercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263): error C2780: 'boost::future<T> boost::async(bo
ost::launch,R (__cdecl *)(void))' : expects 2 arguments - 7 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS
64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1264): error C3536: 'future': cannot be used before i
t is initialized [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1264): error C2664: 'void std::vector<boost::future<v
oid>,std::allocator<_Ty>>::push_back(const boost::future<void> &)' : cannot convert argument 1 from 'int' to 'boost::future<voi
d> &&' [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<boost::result_of<F
(void)>::type> boost::async(F &&)' : expects 1 arguments - 5 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_V
S64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<T> boost::async(R
(__cdecl *)(void))' : expects 1 arguments - 5 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\lib
sclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(decay<A1>::type,decay<A2>::type)>::type> boost::async(Executor &,F &&,A1 &&,A2 &&)' : expects 4 arguments - 5 pr
ovided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(decay<A1>::type)>::type> boost::async(Executor &,F &&,A1 &&)' : expects 3 arguments - 5 provided [C:\Users\Raine
r\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<boost::result_of<d
ecay<T2>::type(void)>::type> boost::async(Executor &,F &&)' : expects 2 arguments - 5 provided [C:\Users\Rainer\Projects\sc\sup
ercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<Rp> boost::async(E
xecutor &,R (__cdecl *)(A1 &&),A1 &&)' : expects 3 arguments - 5 provided [C:\Users\Rainer\Projects\sc\supercollider\build_mast
er_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<Rp> boost::async(E
xecutor &,R (__cdecl *)(void))' : expects 2 arguments - 5 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64
_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<boost::result_of<d
ecay<T>::type(void)>::type> boost::async(boost::launch,F &&)' : expects 2 arguments - 5 provided [C:\Users\Rainer\Projects\sc\s
upercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397): error C2780: 'boost::future<T> boost::async(bo
ost::launch,R (__cdecl *)(void))' : expects 2 arguments - 5 provided [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS
64_Rl\lang\libsclang.vcxproj]
  C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1398): error C3536: 'subclassResult': cannot be used
before it is initialized [C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]

    21 Warning(s)
    32 Error(s)

@llloret
Copy link
Member

llloret commented May 14, 2016

@timblechmann, iirc, the problem were variadic templates, which I think
required some c++11 feature that was not on msvc. Perhaps it would be
possible to choose that part not using variadic templates?

On Sat, 14 May 2016, 12:46 Rainer Schütz, notifications@github.com wrote:

These are the build errors with boost 1.6.2, VS 2013. I don't remember the
details of the build with 1.6.0, but I think they were quite similar:

"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\ALL_BUILD.vcxproj"
(default target) (1) ->
"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\server\plugins\BinaryOpUGens.vcxproj"
(default target) (3) ->
"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\sclang.vcxproj"
(default target) (8) ->
"C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj"
(default target) (12) ->
(ClCompile target) ->
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future (void)>::type> boost::async(F &&)' : expects 1
arguments - 8 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_V
S64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future boost::async(R
(__cdecl *)(void))' : expects 1 arguments - 8 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\lib
sclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future ecay::type(decay::type,decay::type)>::type>
boost::async(Executor &,F &&,A1 &&,A2 &&)' : expects 4 arguments - 8 pr
ovided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future ecay::type(decay::type)>::type>
boost::async(Executor &,F &&,A1 &&)' : expects 3 arguments - 8 provided
[C:\Users\Raine
r\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future ecay::type(void)>::type> boost::async(Executor
&,F &&)' : expects 2 arguments - 8 provided [C:\Users\Rainer\Projects\sc\sup
ercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future boost::async(E
xecutor &,R (__cdecl *)(A1 &&),A1 &&)' : expects 3 arguments - 8 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_mast
er_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future boost::async(E
xecutor &,R (__cdecl *)(void))' : expects 2 arguments - 8 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64
_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future ecay::type(void)>::type>
boost::async(boost::launch,F &&)' : expects 2 arguments - 8 provided
[C:\Users\Rainer\Projects\sc\s
upercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1232):
error C2780: 'boost::future boost::async(bo
ost::launch,R (__cdecl *)(void))' : expects 2 arguments - 8 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS
64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1233):
error C3536: 'future': cannot be used before i
t is initialized
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1233):
error C2664: 'void std::vector oid>,std::allocator<_Ty>>::push_back(const
boost::future &)' : cannot convert argument 1 from 'int' to 'boost::future
d> &&'
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future (void)>::type> boost::async(F &&)' : expects 1
arguments - 7 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_V
S64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future boost::async(R
(__cdecl *)(void))' : expects 1 arguments - 7 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\lib
sclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future ecay::type(decay::type,decay::type)>::type>
boost::async(Executor &,F &&,A1 &&,A2 &&)' : expects 4 arguments - 7 pr
ovided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future ecay::type(decay::type)>::type>
boost::async(Executor &,F &&,A1 &&)' : expects 3 arguments - 7 provided
[C:\Users\Raine
r\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future ecay::type(void)>::type> boost::async(Executor
&,F &&)' : expects 2 arguments - 7 provided [C:\Users\Rainer\Projects\sc\sup
ercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future boost::async(E
xecutor &,R (__cdecl *)(A1 &&),A1 &&)' : expects 3 arguments - 7 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_mast
er_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future boost::async(E
xecutor &,R (__cdecl *)(void))' : expects 2 arguments - 7 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64
_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future ecay::type(void)>::type>
boost::async(boost::launch,F &&)' : expects 2 arguments - 7 provided
[C:\Users\Rainer\Projects\sc\s
upercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1263):
error C2780: 'boost::future boost::async(bo
ost::launch,R (__cdecl *)(void))' : expects 2 arguments - 7 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS
64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1264):
error C3536: 'future': cannot be used before i
t is initialized
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1264):
error C2664: 'void std::vector oid>,std::allocator<_Ty>>::push_back(const
boost::future &)' : cannot convert argument 1 from 'int' to 'boost::future
d> &&'
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future (void)>::type> boost::async(F &&)' : expects 1
arguments - 5 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_V
S64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future boost::async(R
(__cdecl *)(void))' : expects 1 arguments - 5 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\lib
sclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future ecay::type(decay::type,decay::type)>::type>
boost::async(Executor &,F &&,A1 &&,A2 &&)' : expects 4 arguments - 5 pr
ovided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future ecay::type(decay::type)>::type>
boost::async(Executor &,F &&,A1 &&)' : expects 3 arguments - 5 provided
[C:\Users\Raine
r\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future ecay::type(void)>::type> boost::async(Executor
&,F &&)' : expects 2 arguments - 5 provided [C:\Users\Rainer\Projects\sc\sup
ercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future boost::async(E
xecutor &,R (__cdecl *)(A1 &&),A1 &&)' : expects 3 arguments - 5 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_mast
er_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future boost::async(E
xecutor &,R (__cdecl *)(void))' : expects 2 arguments - 5 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64
_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future ecay::type(void)>::type>
boost::async(boost::launch,F &&)' : expects 2 arguments - 5 provided
[C:\Users\Rainer\Projects\sc\s
upercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1397):
error C2780: 'boost::future boost::async(bo
ost::launch,R (__cdecl *)(void))' : expects 2 arguments - 5 provided
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS
64_Rl\lang\libsclang.vcxproj]
C:\Users\Rainer\Projects\sc\supercollider\lang\LangSource\PyrObject.cpp(1398):
error C3536: 'subclassResult': cannot be used
before it is initialized
[C:\Users\Rainer\Projects\sc\supercollider\build_master_VS64_Rl\lang\libsclang.vcxproj]

21 Warning(s)
32 Error(s)


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#2086 (comment)

@timblechmann
Copy link
Contributor Author

@llloret can you try to define BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD? boost thread can be customized quite well (compare external_libraries/boost/boost/thread/detail/config.hpp).

variadic templates are "supported" according to https://msdn.microsoft.com/en-US/library/hh567368.aspx. which doesn't mean anything, though.

otherwise it should be trivial to replace the asynchronous function calls in buildBigMethodMatrix and the like with std::async( std::launch::deferred, ... ) in the msvc-specific codepath at the cost of increased class library compile time.

@llloret
Copy link
Member

llloret commented May 14, 2016

I can try that tonight, @timblechmann.

@bagong
Copy link
Contributor

bagong commented May 14, 2016

On OSX supernova build breaks here:

CompileC buildmaster/server/supernova/SuperCollider.build/Release/libsupernova.build/Objects-normal/x86_64/sc_synthdef.o server/supernova/sc/sc_synthdef.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Users/rainer/Projects/supercollider
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch x86_64 -fmessage-length=80 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -fcolor-diagnostics -Wno-trigraphs -fpascal-strings -O3 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Release\" -DSUPERNOVA -DNOVA_SIMD -DDLOPEN -DPORTAUDIO_BACKEND -DBOOST_CHRONO_HEADER_ONLY -DBOOST_NO_AUTO_PTR -DSC_FFT_VDSP -DBOOST_THREAD_USE_LIB -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.11 -Wno-sign-conversion -I/Users/rainer/Projects/supercollider/buildmaster/server/supernova/Release/include -I/Users/rainer/Projects/supercollider/buildmaster/common -I/Users/rainer/Projects/supercollider/external_libraries -I/Users/rainer/Projects/supercollider/external_libraries/nova-simd -I/Users/rainer/Projects/supercollider/external_libraries/nova-tt -I/Users/rainer/Projects/supercollider/external_libraries/boost -I/Users/rainer/Projects/supercollider/external_libraries/libsndfile -I/Users/rainer/Projects/supercollider/include/plugin_interface -I/Users/rainer/Projects/supercollider/include/common -I/Users/rainer/Projects/supercollider/common -I/Users/rainer/Projects/supercollider/include/server -I/Users/rainer/Projects/supercollider/server/scsynth -I/Users/rainer/Projects/supercollider/external_libraries/boost_endian -I/Users/rainer/Projects/supercollider/external_libraries/boost_sync/include -I/Users/rainer/Projects/supercollider/server/supernova -I/usr/local/Cellar/portaudio/19.20140130/include -I/usr/local/opt/libsndfile/include -I/Users/rainer/Projects/supercollider/external_libraries/oscpack_1_1_0 -I/Users/rainer/Projects/supercollider/external_libraries/TLSF-2.4.6/src -I/Users/rainer/Projects/supercollider/buildmaster/server/supernova/SuperCollider.build/Release/libsupernova.build/DerivedSources/x86_64 -I/Users/rainer/Projects/supercollider/buildmaster/server/supernova/SuperCollider.build/Release/libsupernova.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Users/rainer/Projects/supercollider/buildmaster/server/supernova/Release -msse -msse -msse2 -std=c++11 -stdlib=libc++ -DNDEBUG -fvisibility=hidden -MMD -MT dependencies -MF /Users/rainer/Projects/supercollider/buildmaster/server/supernova/SuperCollider.build/Release/libsupernova.build/Objects-normal/x86_64/sc_synthdef.d --serialize-diagnostics /Users/rainer/Projects/supercollider/buildmaster/server/supernova/SuperCollider.build/Release/libsupernova.build/Objects-normal/x86_64/sc_synthdef.dia -c /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp -o /Users/rainer/Projects/supercollider/buildmaster/server/supernova/SuperCollider.build/Release/libsupernova.build/Objects-normal/x86_64/sc_synthdef.o
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:27:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.hpp:30:
In file included from /Users/rainer/Projects/supercollider/server/supernova/utilities/named_hash_entry.hpp:27:
/Users/rainer/Projects/supercollider/external_libraries/nova-tt/nova-tt/rw_mutex.hpp:49:13: warning:
      unused variable 'status' [-Wunused-variable]
        int status = pthread_rwlock_init(&rwlock, NULL);
            ^
/Users/rainer/Projects/supercollider/external_libraries/nova-tt/nova-tt/rw_mutex.hpp:55:13: warning:
      unused variable 'status' [-Wunused-variable]
        int status = pthread_rwlock_destroy(&rwlock);
            ^
/Users/rainer/Projects/supercollider/external_libraries/nova-tt/nova-tt/rw_mutex.hpp:61:13: warning:
      unused variable 'status' [-Wunused-variable]
        int status = pthread_rwlock_wrlock(&rwlock);
            ^
/Users/rainer/Projects/supercollider/external_libraries/nova-tt/nova-tt/rw_mutex.hpp:89:13: warning:
      unused variable 'status' [-Wunused-variable]
        int status = pthread_rwlock_unlock(&rwlock);
            ^
/Users/rainer/Projects/supercollider/external_libraries/nova-tt/nova-tt/rw_mutex.hpp:95:13: warning:
      unused variable 'status' [-Wunused-variable]
        int status = pthread_rwlock_rdlock(&rwlock);
            ^
/Users/rainer/Projects/supercollider/external_libraries/nova-tt/nova-tt/rw_mutex.hpp:237:13: warning:
      unused variable 'status' [-Wunused-variable]
        int status = pthread_rwlock_unlock(&rwlock);
            ^
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:28:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_ugen_factory.hpp:27:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synth.hpp:29:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synth_definition.hpp:26:
/Users/rainer/Projects/supercollider/server/supernova/server/synth_definition.hpp:88:14: warning:
      unused variable 'success' [-Wunused-variable]
        bool success = slot_resolver_map.insert(*elem).second;
             ^
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:28:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_ugen_factory.hpp:27:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synth.hpp:31:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/../server/synth.hpp:27:
In file included from /Users/rainer/Projects/supercollider/server/supernova/server/node_types.hpp:28:
/Users/rainer/Projects/supercollider/server/supernova/utilities/static_pool.hpp:70:21: warning:
      unused variable 'status' [-Wunused-variable]
        std::size_t status = init_memory_pool(bytes, data_.pool.begin());
                    ^
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:27:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.hpp:27:
/Users/rainer/Projects/supercollider/external_libraries/boost/boost/align/aligned_allocator.hpp:99:15: error:
      static_cast from 'const nova::symbol *' to 'void *' is not allowed
        ::new(static_cast<void*>(ptr)) U(std::forward<Args>(args)...);
              ^~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:19:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:439:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:628:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1647:18: note:
      in instantiation of function template specialization
      'boost::alignment::aligned_allocator<std::__1::__tree_node<std::__1::__value_type<nova::symbol,
      int>, void *>, 64>::construct<const nova::symbol, const nova::symbol &>'
      requested here
            {__a.construct(__p, _VSTD::forward<_Args>(__args)...);}
                 ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1493:14: note:
      in instantiation of function template specialization
      'std::__1::allocator_traits<boost::alignment::aligned_allocator<std::__1::__tree_node<std::__1::__value_type<nova::symbol,
      int>, void *>, 64> >::__construct<const nova::symbol, const nova::symbol
      &>' requested here
            {__construct(__has_construct<allocator_type, _Tp*, _Args...>(),
             ^
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:27:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.hpp:23:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:1522:20: note:
      in instantiation of function template specialization
      'std::__1::allocator_traits<boost::alignment::aligned_allocator<std::__1::__tree_node<std::__1::__value_type<nova::symbol,
      int>, void *>, 64> >::construct<const nova::symbol, const nova::symbol &>'
      requested here
    __node_traits::construct(__na, _VSTD::addressof(__h->__value_.__cc.f...
                   ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:1538:29: note:
      in instantiation of member function 'std::__1::map<nova::symbol, int,
      std::__1::less<nova::symbol>,
      boost::alignment::aligned_allocator<std::__1::pair<nova::symbol, int>, 64>
      >::__construct_node_with_key' requested here
        __node_holder __h = __construct_node_with_key(__k);
                            ^
/Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:235:22: note:
      in instantiation of member function 'std::__1::map<nova::symbol, int,
      std::__1::less<nova::symbol>,
      boost::alignment::aligned_allocator<std::__1::pair<nova::symbol, int>, 64>
      >::operator[]' requested here
        parameter_map[data] = index;
                     ^
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_synthdef.cpp:28:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_ugen_factory.hpp:28:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/sc_plugin_interface.hpp:25:
In file included from /Users/rainer/Projects/supercollider/server/supernova/sc/../server/audio_bus_manager.hpp:26:
/Users/rainer/Projects/supercollider/external_libraries/nova-tt/nova-tt/rw_spinlock.hpp:172:20: warning:
      private field 'padding' is not used [-Wunused-private-field]
    boost::uint8_t padding[padding_bytes];
                   ^
9 warnings and 1 error generated.

@bagong
Copy link
Contributor

bagong commented May 14, 2016

Something is weird with the travis build. Set to deployment target 10.9 and didn't install libsndfile. I like that supernova is added, but then portaudio needs to be installed too.

Oh, you made additions, @timblechmann ... I don't know why deployment target was set to 10.9 rather than 10.7, and why libsndfile wasn't installed. Both shouldn't be case, as far as I know...

@bagong
Copy link
Contributor

bagong commented May 14, 2016

Portaudio!
The old build script also installed readline and had deployment target set to 10.7
I think these are accidental omissions from @scztt when he cleaned up the script while he added the tests.

@bagong
Copy link
Contributor

bagong commented May 14, 2016

Haha, timing overlapp! Sorry...

@bagong
Copy link
Contributor

bagong commented May 14, 2016

Oh, the build system is still Mavericks (10.9). I can't see which XCode version that is. On 10.9 the SuperNova build breaks too, @miczac found that some time ago.

I think some time ago we also said it would be good to update the build system to 10.10...

This builds for me on El-Capitan/XCode 7.3.1, even with Deployment Target set to 10.7. But: if I run the build on 10.7 the server doesn't start with segmentation fault. SuperNova also doesn't boot, the message is more specific:

Supernova booting
Available Audio Devices:
0: AC97 Audio Controller (2 inputs, 2 outputs)

0 0opening portaudio device name: AC97 Audio Controller / AC97 Audio Controller
opening portaudio device name: AC97 Audio Controller / AC97 Audio Controller
dyld: lazy symbol binding failed: Symbol not found: _AudioUnitSetProperty
  Referenced from: /Users/rs/Desktop/SuperCollider/SuperCollider.app/Contents/Resources/./../MacOS/libportaudio.2.dylib
  Expected in: /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox

dyld: Symbol not found: _AudioUnitSetProperty
  Referenced from: /Users/rs/Desktop/SuperCollider/SuperCollider.app/Contents/Resources/./../MacOS/libportaudio.2.dylib
  Expected in: /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox

Trace/BPT trap: 5

Maybe the homebrew el-capitan install of portaudio is not portable to 10.7?

@bagong
Copy link
Contributor

bagong commented May 14, 2016

Or maybe we need to compile portaudio ourselves? ;)

@bagong
Copy link
Contributor

bagong commented May 15, 2016

OSX travis breaks with "pip not found now", seems python needs to be installed via homebrew to be complete and up to date?

While travis seems to be showing lot's of problems with this, my conclusion is, that the problems don't have to do anything with the actual PR, which is unproblematic, as far as I can see. It would have been nice to have had a few human readable words why we want it, as it is usual in other PRs, but well...

  • the VS problems are the same as with 1.6.0. One little difference: a new deprecation warning (which pops up all over the place (both in VS and MinGW):
C:/Users/Rainer/Projects/sc/supercollider/external_libraries/boost/boost/detail/winapi/GetLastError.hpp:20:17: note: #pragma message: This header is deprecated, use boost/detail/winapi/get_last_error.hpp instead.
 #pragma message "This header is deprecated, use boost/detail/winapi/get_last_error.hpp instead."

But it's a warning and it seems pretty superficial. As @llloret was so kind to say he would be willing to look into the predating MSVC problem I think he might look into that at the same time?

  • MinGW build is fine (same deprecation warning)
  • The OSX problems have nothing to do with this PR. Even the SuperNova breakage already existed in 1.6.0.
  • I am sure Linux is tested

The OSX experiments have shown another interesting aspect of the "general" discussion: how conservative to be with toolchains and backwards compatibility.

I would suggest to take the travis stuff out of this PR and make a separate one in which we discuss the issues on OSX. I like that SuperNova becomes part of the standard build. But that might imply that we lose 10.7 compatibility, and it means that the releases uses portaudio instead of coreaudio by default. These are important questions that should be discussed appropriately. Maybe using a 10.10 build system will allow to keep 10.7 compatibility, I'll try that...

So without the travis stuff this seems good. More needs to be done for travis anyways, so imho it's better to separate that out.

@timblechmann
Copy link
Contributor Author

While travis seems to be showing lot's of problems with this, my
conclusion is, that the problems don't have to do anything with the
actual PR, which is unproblematic, as far as I can see. It would be nice
to have had a few human readable words why we want it, as it is usual in
other PRs, but well...

  • the VS problems are the same as with 1.6.1. One little difference: a
    new deprecation warning (which pops up all over the place (both in
    VS and MinGW):

fyi, there is no 1.6.1, but 1.61.

|C:/Users/Rainer/Projects/sc/supercollider/external_libraries/boost/boost/detail/winapi/GetLastError.hpp:20:17:
note: #pragma message: This header is deprecated, use
boost/detail/winapi/get_last_error.hpp instead. #pragma message "This
header is deprecated, use boost/detail/winapi/get_last_error.hpp instead." |

please note that there is a difference between internal deprecation
warnings of external libraries and deprecation warnings emitted from
supercollider's sources. sc uses a lot of deprecated APIs, mainly carbon
stuff, which will eventually be removed from sdks and binaries and at
one point code will stop to compile and binaries will stop to run.

fwiw, there are much more harmful warnings (e.g. the hidparser warning,
which shows a programming error). i'd recommend to try to understand the
warnings before complaining about them.

But that might imply that
we lose 10.7 compatibility,

might? please go into details about this. travis builds have been
compiled with 10.9 compatibility before. btw, is apple still supporting
10.7?

and it means that the releases uses
portaudio instead of coreaudio by default.

this is totally wrong

please try to verify your claims and make sure to understand what you
are talking about: doing wrong claims, people might end up believing
your statements without trying to verify them.

@bagong
Copy link
Contributor

bagong commented May 15, 2016

I've described the problem I found with 10.7 support one message before the one you are referring to. I am currently inspecting if they can be avoided by using 10.10/XCode 6.1 as build system.

and it means that the releases uses
portaudio instead of coreaudio by default.
this is totally wrong

In my understanding supernova requires portaudio, and the travis builds are used for releases. So would you please explain what is wrong?

Tim is this confrontative tone really needed? Don't you see that I am putting a lot of time into supporting your PR? You quote sections of my post, ignoring the other stuff I said about what you quoted. Come on, let's get to a cooperative attitude. I certainly don't mind learning from you, but I really dislike the implicit aggressivity.

@bagong
Copy link
Contributor

bagong commented May 15, 2016

;)

As opposed to my previous statement I found now that it is possible to build SC with el-capitan/XCode 7.3 such that it runs on 10.7. It is enough to set CMAKE_OSX_DEPLOYMENT_TARGET to 10.7. The "missing SDK" message has no consequences. So changing travis to el-capitan seems to be unproblematic.

But - and I stress: unfortunately - adding supernova to the build does break portability. The resulting build does not only not run properly on 10.7, it doesn't even run on 10.10, it only runs on the build machine. My guess is that this has to do with portaudio more than anything else. And there are two issues:

  • supernova misses a framework. Maybe this could be solved as part of the install?
  • scsynth segfaults! How could that happen because of adding supernova to the build?

@timblechmann
Copy link
Contributor Author

But - and I stress: /unfortunately/ - adding supernova to the build does
break portability. The resulting SC does not only not run on 10.7, it
doesn't even run on 10.10, it only runs on the build machine. My guess
is that this has to do with portaudio more than anything else.

my guess is that it is related to using homebrew builds will have a
minimum requirement.

And there
are two issues

  • supernova misses a framework. Maybe this could be solved as part of
    the install?

framework or library?

using fixup_bundle might be required:
https://cmake.org/cmake/help/v3.0/module/BundleUtilities.html

  • scsynth segfaults! How could that happen because of adding supernova
    to the build?

i won't speculate about crash reports without backtrace.

fwiw, i guess someone with an personal interest into osx builds of
supercollider will need to have a look. i've spent the timeframe i could
devote into this issue for this month.

@bagong
Copy link
Contributor

bagong commented May 15, 2016

As to the framework/library question, please look earlier in this thread, I posted what I saw.
As to the scsynth crash: I am sure better reports could be done. I feel though that I have already done more than I can afford.

As to your PR, if others agree: the travis changes don't really belong here, but they are okay, pending two changes:

  • supernova needs to be removed again
  • the deployment target needs to be set to 10.7

Thank you.

@muellmusik
Copy link
Contributor

A separate issue, but I wouldn't make 10.7 support a priority. It's 3 versions and 5 years ago, and was very unpopular. Supporting old OSs is fine but it needs people committed to that.

On 15 May 2016, at 11:49, Rainer Schütz notifications@github.com wrote:

As to the framework/library question, please look earlier in this thread, I posted what I saw.
As to the scsynth crash: I am sure better reports could be done. I feel though that I have already done more than I can afford.

As to your PR, if others agree: the travis changes don't really belong here, but they are okay, pending two changes:

supernova needs to be removed again
the deployment target needs to be set to 10.7
Thank you.


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub

@bagong
Copy link
Contributor

bagong commented May 15, 2016

@muellmusik , at this point it costs us nothing to keep 10.7. We've discussed that broadly for Windows. SC shifting it's minimum required version has unexpected side effect, e.g. for sister projects, who might have their own policies. And what about complex installations of which SC is a part, where people would have to spend months to renew their installations. In the end let's not forget the ones that can't afford to update. So to me the most rational consideration that remained in that Windows discussion was: change it if it is objectively necessary to solve a "real" problem. I don't see this here at all...

I am sure Scott C. (@scztt) only set it to 10.9 by accident. This setting even excludes 10.8, and I am sure Scott wouldn't do that without consulting others.

SuperNova is not locked out for the time being because of the 10.7 setting, it is a portability problem with portaudio, and this even seems to create problems for scsynth. We can build supernova like before, with or without deployment target set to 10.7.

@muellmusik
Copy link
Contributor

If it truly costs nothing, then fine of course. If it costs something, that should be weighed.

Developer time is a cost. In many cases it's a lot. I'm not saying drop 10.7, but I think it should be low on the priority list as benefits are small and decreasing. In none of the cases mentioned below would people be forced to update to latest SC. In many cases they'd prefer not to.

On 15 May 2016, at 13:07, Rainer Schütz notifications@github.com wrote:

@muellmusik , at this point it costs us nothing to keep 10.7. We've discussed that broadly for Windows. SC shifting it's minimum required version has unexpected side effect, e.g. for sister projects, who might have their own policies. And what about complex installations of which SC is a part, where people would have to spend months to renew their installations. In the end let's not forget the ones that can't afford to update. So to me the most rational consideration that remained in that Windows discussion was: change it if it is objectively necessary to solve a "real" problem. I don't this here at all...


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub

@bagong
Copy link
Contributor

bagong commented May 15, 2016

Agreed

@llloret
Copy link
Member

llloret commented May 16, 2016

Hi, @timblechmann,

regarding your suggestion:

@llloret can you try to define BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD? boost thread can be customized quite well (compare external_libraries/boost/boost/thread/detail/config.hpp).

After studying the code, I have tried defining the opposite BOOST_THREAD_PROVIDES_VARIADIC_THREAD, and all compilation errors are gone, except two. Not quite sure what to do on them. Could you advise?

10>D:\sc\supercollider\lang\LangSource\PyrObject.cpp(1233): error C2664: 'void std::vector<boost::future<void>,std::allocator<_Ty>>::push_back(const boost::future<void> &)' : cannot convert argument 1 from 'boost::future<int>' to 'boost::future<void> &&'
and
10>D:\sc\supercollider\lang\LangSource\PyrObject.cpp(1264): error C2664: 'void std::vector<boost::future<void>,std::allocator<_Ty>>::push_back(const boost::future<void> &)' : cannot convert argument 1 from 'boost::future<int>' to 'boost::future<void> &&'

If this works we could be one step closer to having a common code base for all OSs, which would be great...

Thanks

@llloret
Copy link
Member

llloret commented May 16, 2016

This might be a false positive... if I comment the lines that are having the issue, I get other errors. Let me have another look...

@llloret
Copy link
Member

llloret commented May 16, 2016

Nah, it does not seem to work with the BOOST_THREAD_PROVIDES_VARIADIC_THREAD, nor BOOST_THREAD_DONT_PROVIDE_VARIADIC_THREAD.

I want to explore the other approach that @timblechmann suggested:

otherwise it should be trivial to replace the asynchronous function calls in buildBigMethodMatrix and the like with std::async( std::launch::deferred, ... ) in the msvc-specific codepath at the cost of increased class library compile time.

Tim, can you provide some more guidance? In the world I come from, we don't use std::async not boost::async, so it may be trivial for you, but nor for me :( (But I am eager to learn more). I could look at this myself, but if you have some concrete advise, I could narrow it down quicker.

@llloret
Copy link
Member

llloret commented May 16, 2016

Ok, from what I understand, in some places it would be a matter of changing, boost::async with std::async, and then:

for( auto & future : binsortedClassRowFuture ) {
        while( !future.is_ready() )
            pool.schedule_one_or_yield();
    }

with

for( auto & future : binsortedClassRowFuture ) {
        future.wait();
}

Does that look about right?

@llloret
Copy link
Member

llloret commented May 16, 2016

Ok, I think I have something that seems to work. Although I do not much about that area of the code, and there might be something wrong. I will issue a separate PR so that you can check the code, and see if it looks about right.

This would allow to compile sclang under master again.

@timblechmann
Copy link
Contributor Author

@llloret i'd say that std::async with std::launch::deferred should be a fallback for msvc: then msvc will use lazy evaluation while other compilers can use the thread-pool to make use of multiple cores for compiling the class library.

@llloret
Copy link
Member

llloret commented May 16, 2016

And what about using std::async with std::launch::async? Seems to be working, and should use a separate thread, right?

@llloret
Copy link
Member

llloret commented May 16, 2016

Tim, if I issue a PR, could you have a look?

@llloret
Copy link
Member

llloret commented May 16, 2016

@timblechmann, I have issued #2091. Perhaps you can have a look and comment if this is what you had in mind. If not, at least is an initial base that we can work on, to get to a common code base.

@bagong
Copy link
Contributor

bagong commented May 16, 2016

Builds fine on RPi3 and in conjunction with @llloret 's fixes for MSVC also on Windows. I think there is no reason left not to merge.

@bagong
Copy link
Contributor

bagong commented May 20, 2016

So I think this is proven not to create problems. Thanks for maintaining boost, Tim!

@bagong bagong merged commit 5ec78c2 into supercollider:master May 20, 2016
@smoge smoge mentioned this pull request Apr 26, 2024
4 tasks
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.

5 participants