OS: Slackware64-current
cmake-3.5.2-x86_64-1
When trying to build the ppsspp git master I get this, is there anything you can do about it? This makes building ppsspp incompatible with Slackware 14.2 and current, I would not surprised at this being true for other distros too.
CMake Error at CMakeLists.txt:2 (cmake_minimum_required):
CMake 3.6 or higher is required. You are running version 3.5.2
-- Configuring incomplete, errors occurred!
Update cmake to 3.6
While updating to cmake 3.6 is fine for my own personal uses, that is not fine for the ppsspp build script at slackbuilds.org and this freezes ppsspp at around 2016.07.25_fa3f219 for Slackware users...
Then the script needs to be updated.
I'm not sure you understand? Cmake is provided in a full slackware install and upgrading it is entirely up to Pat, Slackware's bdfl. While slackbuilds.org provides scripts to build additional software not included in a full slackware install like ppsspp and must be compatible with any dependencies already included in the stable Slackware version (14.2 currently) such as cmake for it be included at slackbuilds.org.
Requiring cmake 3.6 unfortunately puts me in the position where I can not offer an up to date ppsspp build script for Slackware users until potentially the next slackware release which could be years away and makes it harder for anyone to report bugs or contribute to ppsspp with a Slackware install.
Upgrade CMake to 3.6 on slackbuilds.org then. CMake 3.7 is almost out, why would they want the latest version of PPSSPP but not the latest version of CMake?
Cmake is not available from slackbuilds.org, its provided in a base slackware full install and it will probably never be upgraded in Slackware-14.2.
It might be upgraded in slackware-current, but that only means the next stable version of slackware will be compatible with ppsspp and won't be enough for slackbuilds.org until that time. Honestly though cmake is not going to be upgraded in slackware just for ppsspp and that decision is entirely out of my hands. If you don't want to fix this that is fine, but it would be great if ppsspp made some efforts to be compatible with downstream.
For what its worth I have made the request for it to be upgraded in slackware-current, but we will not know until it is actually upgraded.
Additionally it seems all that is needed to work around this is the following sed, although I do not care for this hack.
sed -i 's/VERSION 3.6/VERSION 3.5.2/' CMakeLists.txt
This makes me wonder why cmake 3.6 is required to begin with?
Well, if users want a stable distribution, I don't get why they would want a bleeding edge version of any software.
Also, as part of your build, you can either:
There are a few reasons, the ppsspp stable release packages do not build because they are missing both the .git directory and the required submodules. This has left packaging the source up to me. Another reason is that using an up to date ppsspp allows users to report issues without worrying that the issue has since been fixed. Whether ppsspp is bleeding edge or not does not really change how stable slackware 14.2 is.
I assume there is a good reason for requiring cmake 3.6 but it means it won't build out of the box on many systems now (without having to compile cmake also). Eg. Debian Jessie, Ubuntu 16.04 and so on.
Well, it never does anyway, you always have to install something.
As for CMake, you can always use brewlinux to install it from command line or just get the prebuild package from CMake's website and you'll have newer software that what's available in your distribution, which is really nice for development.
Just remember that Windows and OSX have no problem installing newer software. Don't tell me that the almighty Linux (or BSDs) just can't do that because you _have_ to use the distribution's packages.
You just don't understand how it works. Expecting every user of any distribution to upgrade cmake just for ppsspp is not going to work. You're going to have to choose between upgrading cmake for no good reason and not giving a figurative middle finger to distro and package maintainers.
How widespread is cmake 3.5 at this point, could that be a baseline, if we decide we can live without the latest fancy features of 3.6?
You don't have to upgrade your distro's CMake. You can install another one on the side and use that.
And I repeat, if you want stable software, use stable software. Don't try to use a live tip of the tree software. If you insist on doing so, then you have to realize that you may need more than one tip of the tree software in order to use it.
Wanting one but not the other doesn't make sense.
I was skeptical about the claims concerning dolphin, so I asked them directly. This seems like a reasonable approach.
07:44 <orbea> hi, I've noticed that dolphin currently requires cmake 2.8.8. If and when this is updated would it be a version compatible with downstream distros? I mean like stable versions of slackware, debian or etc.
07:57 <@delroth> orbea: I don't think we aim at staying compatible with old distros.
07:57 <@delroth> it's a tradeoff
07:57 <@delroth> just like with compiler versions
07:58 <@delroth> if there's a strong use case for going to higher versions we'll do it and leave developers on N years old distros behind
07:58 <@delroth> upgrade or install backports :)
07:58 <@delroth> I think in general we try to keep compatibility with the latest ubuntu lts
07:58 <@delroth> but we've broken debian stable a few times
07:58 * orbea looks what version they are using
07:59 <orbea> 2.8.12 it seems
07:59 <orbea> that would be fine
08:00 <orbea> thanks for the answers :)
No, latest Ubuntu LTS is 16.04, it doesn't have 2.8.12.
Then there's is the distinction between "try" and "must". You can have latest CMake even on 14.04 as we did here: https://github.com/hrydgard/ppsspp/blob/master/.travis.sh#L70
Then adding it to the PATH just works. Also, you can use brewlinux (that's just 1 line to install brewlinux and another one to install CMake with it).
Alright, it seems I was reading outdated ubuntu documentation.
16.04 seems to have cmake 3.5.1 which still is not compatible with the ppsspp master.
As far as Slackware is concerned, I would probably hack ppsspp so it would work with older cmake versions before I would require users to build an additional cmake for ppsspp.
just FYI Debian Jessie (on which a fair number of other distros are based on - Raspbian / Steam OS etc) has cmake 3.0.2 which may well be too old, so I do understand if you need newer features - but if it was a minor thing to support an older version, it is worth it imho.
Well, you don't want Debian stable on anything but servers. If you want a workstation, you need another distribution or just stop considering running recent software on it, that's not what it is made for.
If you _really_ want more recent software layered on top, use backports or brewlinux, it just works and you get the latest software.
I'm very well aware of what version 16.04 has, and still, it doesn't change that I want features from 3.6. Communities don't have to build PPSSPP, only developers do, and they can install newer software when required from a backport. And there's very few of them.
As for your builds, nothing prevents you from upgrading the CMake package from a backport or have a cmake-next package that installs on the side and use it.
Installing a software from a centralized repository is convenience, not an absolute rule.
If I'd go by other distributions, well, Arch has the latest version. If you want latest version of software, maybe you should consider using it.
Lots of Debian Jessie based distros are used in desktop environments. I mentioned two - which are not aimed for the server. I'm also not saying you should make anything compatible, unless it is trivial to do so.
I maintain RetroPie and am already building cmake before building ppsspp. It just takes a lot longer :)
ppsspp is not provided in a central repository for slackware, slackbuilds.org does not provide binary packages, but it is a repository of build scripts. Anytime a slackware user wants to install ppsspp with a slackware package they will most likely build it themselves. Cmake is not provided at slackbuilds.org, but included in a base slackware install which are binary packages. Backports and brewlinux do not apply here and are not good suggestions.
Its unfortunate that you are not reasonable or willing to compromise, I guess discussing this with you is thus pointless.
@hrydgard It seems if you want to support most distros like those based on debian stable an old cmake like 2.8.12 would be a good choice. If you want to support more modern stable distros like slackware 14.2 or ubuntu 16.04 then cmake 3.5 might be a good choice. Otherwise you could do what orphis suggests and limit the number of people that can build / install ppspp and then report bugs or even contribute to the project.
It's also possible to provide binary packages for those distributions so that users don't have to install dev packages and tools just to test a software.
@hrydgard Please do me a favor and decide on this issue relatively soon? Whether you fix it or close it as won't fix this discussion has greatly turned me off of the ppsspp project and I don't really want anything to do with supporting it for slackware anymore. I'm still debating this with myself, but I may just suggest removing it from slackbuilds.org in the future when my current build script becomes outdated. I didn't come here to explain basic concepts to orphis.
I'm sorry if this offends you, but you are using a 3rd party "package" manager for a distribution to provide up to date packages and it won't update packages that collide with the main distribution. This is clearly not working. It has nothing to do with Slackware, just users of that package manager that has made some choices that conflict with developers interest.
If the distribution doesn't provide up to date packages and that's what you want, then I suggest you use one like Arch or Gentoo.
Otherwise, I suggest you, instead of using slackbuilds, spend some time using Linuxbrew, which is working on many Linux distributions and has potentially more users. The ppsspp recipe for it is right now macOS centric but it should be easy to fix that (in addition to the link error I got when I tried it).
I'm having a look at making it work right now, but no harm if you beat me to it.
How do i update CMake, can someone please tell me?
@Orphis You do not understand this issue or how slackware works one bit, you should stop replying since explaining it to you is clearly hopeless. Suffice to say, your understanding is entirely wrong as are your conclusions and your suggestions are just awful. I won't bother repeating why once again...
The part that offends me is not the issue, but that it has become clear that working with the ppsspp upstream requires dealing with idiots such as yourself. Its not worth the time or pain, there are projects with nicer, more reasonable and capable devs that are more worth my time. I'm sorry you made it this way.
@MaquinaDelMisterio That depends on what operating system you are using. You should ask a forum or irc channel specific to your operating system.
Im on Mac OS X if you know how i can do it, i will appreciated too much.
I don't use osx so I'm not sure what the proper method would be, but you could probably grab a precompiled binary or compile it yourself from the cmake website. This link should help you get started.
On MacOSX you could also install using brew, after installing the installer at http://brew.sh/ just
brew install cmake
@orbea Orphis is a very competent build engineer, though as he's mostly worked on proprietary development lately where distribution is no issue at all, he'll be biased towards using the latest and greatest. I'm sorry for your frustration, but I mostly agree with him - as it's trivial and quick to use a modern CMake even on Windows, it does seem rather strange that you can't do it easily on Slack. It should not come as a surprise that to build the bleeding edge of something, you'll need reasonably up to date infrastructure.
@orbea @hrydgard Guys thanks. Happens that already had installed cmake port from macports so just followed the command that was on the build readmetxt from ppsspp for iOS that tell you how to install it, but as i already had it installed it told me that the files were old and have to update them and gave me a line.
By the way, PPSSPP iOS build is crazy and wont open. I just installed latest dev build from yesterday. Also freezed my ipad.
@orbea Please no name calling, that's very unprofessional.
If you have an issue, you have to be creative in order to solve it. I won't accept "it's no possible" as a valid reason. You could always have the CMake sources in your DOWNLOAD section to build CMake before PPSSPP and use it for your build (even though you'd only be installing PPSSPP and not CMake).
But instead you decided that's there's no other solution, only regressing to older software would work. It's sad.
I don't believe in artificial limitations. There are only easy tasks and slightly more involved tasks. Sure it's not an easy one, there's probably no easy solution for Slackware. The slightly more advanced ones are still possible. I suggested a few. Why can't you do any of those beside "that's not how it's done"?
There's a lot of people doing a ton of things for bad or good reasons, it doesn't mean you can't challenge any of them.
@MaquinaDelMisterio What iPad model was that?
Unfortunately, we don't have any dev working on iOS right now and can only check that it builds, not that it runs. I'll try to get someone to have a look!
@Orphis Was on an iPad Pro 12.9" on iOS 10.1 to use the app everytime it freezes i have to reboot my device if not it wont open. Its acting very weird.
@hrydgard I've already explained this, its not what I can or can not do on Slackware. Its what every user who wants to use my ppsspp build script can do. The choices are that ppsspp maintains compatibility with downstream, I hack the CMakeLists.txt, I try to submit a cmake-next script to SBo (They may not accept it) or I build cmake in the ppsspp build script (Ugly solution). The first two choices are the only reasonable ones, however I have lost interest in dealing with an unfriendly upstream and will now suggest that SBo either finds someone willing to deal with idiots or outright remove ppsspp from slackbuilds.org when my current script no longer works. Its not a good practice to alienate potential contributors with socially inept attack dogs as orphis who did not even try to understand what position he has left package maintainers in and engages lame techniques as ad nauseam. I've already done my fair share of work in providing ppsspp for slackware by creating a compliant source package on my own, the least you could do is meet me halfway.
Anyways, this has gone on long enough, I will just close this issue on account of ppsspp lacking a friendly or helpful upstream.
@orbea I'm sad to see you go, but there's a tricky balance here.
On one side it's keeping compatibility with old stuff. If supporting older systems is not too much trouble, that can sometimes help keeping contributors around. For example, this was clearly not the case for Symbian, and it has very few users these days and they can easily use older builds, so we dropped it.
On the other side, it's about keeping contributors that like using new stuff - and often the new stuff really makes sense. CMake has in later versions gained a lot of nice ways to set target specific flags instead of globally, that can help make the build process cleaner and more consistent.
So it really boils down to a classic leadership question about weighing pros and cons while at the same time keeping people with conflicting interests happy, and I never claimed to be very good at those... I'm still not completely sure about this one, but I do know that I wish Slackware would use something newer than 2.8... The last release of 2.8 was in 2013.
Slackware is on 3.5.2, not 2.8 (Ubuntu 14.04 is 2.8.12, but dropping that should be safe). Even debian-stable is above 2.8, at 3.0.2.
My recommendation would be follow latest Ubuntu LTS: 3.5.1. But it's your choice.
I suggested 2.8.12 it was the oldest that worked on Linux and would of supported pretty much every distribution including the many based on debian stable. As far as Slackware is concerned 3.5.2 is all that would need to be supported and following the latest Ubuntu LTS seems like a sane compromise. However I only lost interest because if reporting issues means dealing with stressful discussions like this then I really have better things to do.
What features do we lose by requiring CMake 3.5.1 instead of 3.6?
I realize Android may require 3.6, and maybe The Great Build System Commandments demand that One Does Not Require Newer CMake Only On Some Platforms. But, presumably, if the regular CMake file does not use the 3.6 things, we might be able to require 3.5.1?
Nothing really stood out to me after a brief skim of the 3.6 new features, but I don't know CMake at all anyway. One of the Ninja things looked useful for avoiding clean rebuilds after major system updates.
-[Unknown]
We talked about moving Windows to CMake too. From 3.6, they added the VS_STARTUP_PROJECT property which we'll need and some other fixes related to recent VS toolchains.
Fixes in the Ninja generator (which is much better than Make).
Fixes in FindPkgconfig in 3.6 that will help to reduce code to detect libraries from the system.
Fixes in CPack to generate proper .deb packages.
The Android toolchain from Google works from 3.6. We don't want to use the full Android Studio integration, but we want their toolchain instead of the current one that doesn't support recent NDKs.
Also, bug fixes aren't listed in the changelog. I remember there were a few that seemed critical to me and got fixed in 3.6.
@hrydgard and @unknownbrackets
Just a heads up.
Thu Jan 12 01:15:52 UTC 2017
d/cmake-3.7.1-x86_64-1.txz: Upgraded.
http://www.slackware.com/changelog/current.php?cpu=i386
That said...
CMAKE_SYSTEM_PROCESSOR: x86_64
Generating for x86, Release
Generating for x86_64, Release
CMake Error at ext/CMakeLists.txt:7 (add_subdirectory):
The source directory
/tmp/SBo/ppsspp/ext/glslang
does not contain a CMakeLists.txt file.
You aren't handling your build system very well...
Have you ever thought about porting your efforts over to libretro? That way you would have easier cross platform support, a frontend that actually works and you could ditch this unfortunate, slow and broken cmake. Just a suggestion...
Too bad 3.7.2 was released a bit before they upgraded. Oh well.
You need to sync and update your submodules for that issue.
Also, the submodule for glslang has been updated and points to a new location. If I remember correctly, you were shipping them in different archives, right? So you'll need to update them.
Well, actually I was being dumb and didn't look at the git submodule update --init command in my build script close enough, in the past neither glslang or --recursive was required.
Most helpful comment
@orbea I'm sad to see you go, but there's a tricky balance here.
On one side it's keeping compatibility with old stuff. If supporting older systems is not too much trouble, that can sometimes help keeping contributors around. For example, this was clearly not the case for Symbian, and it has very few users these days and they can easily use older builds, so we dropped it.
On the other side, it's about keeping contributors that like using new stuff - and often the new stuff really makes sense. CMake has in later versions gained a lot of nice ways to set target specific flags instead of globally, that can help make the build process cleaner and more consistent.
So it really boils down to a classic leadership question about weighing pros and cons while at the same time keeping people with conflicting interests happy, and I never claimed to be very good at those... I'm still not completely sure about this one, but I do know that I wish Slackware would use something newer than 2.8... The last release of 2.8 was in 2013.