toeb / cmakepp

An Enhancement Suite for the CMake Build System
Other
433 stars 37 forks source link

Please provide installable packages (rpm,deb) for Linux distros... #84

Closed 15knots closed 9 years ago

15knots commented 9 years ago

.. to save time, disk space and bandwidth .. to allow the use of cmakepp in build systems that diable network access during the build

I am willing to help with that.

Martin

toeb commented 9 years ago

Hi Martin,

thanks for the issue. I need some clarification Do you want to have cmakepp inside a rpm/deb or do you want to use cmakepp to retrieve these packages?

if you mean the first: I am not familiar creating install packages for linux - but I think that travis ci has a publishing mechanism for that. If so that would be the way to go as I want all releases to be automated. (after a successful build cmakepp already compiles itself into a single large cmake file which is appended then released in github's release section. ) If you would create a pull request which contains a script file in the build folder which automates the creation this would be fantastic.

If you mean the latter: creating package_sources for apt or similar would be very nice. to do that you would just have to look at existing package_sources and implement the query, resolve and pull methods.

15knots commented 9 years ago

Am Samstag, 7. M�rz 2015, 11:37:01 schrieb Tobias Becker:

Hi Martin,

Hi Tobias,

thanks for the issue. I need some clarification Do you want to have cmakepp inside a rpm/deb or do you want to use cmakepp to retrieve these

I want cmakepp inside an rpm. To accomplish that, I could first create a project on OBS https://build.opensuse.org/project/show/home:15knots where at least the SUSE distros get build. If cmakepp proves to be useful, I could later ask the SUSE guys to put it into their distro. They already have cmake https://build.opensuse.org/project/show/openSUSE:Factory

Whith OBS, it is possible to build rpms for Fedora and other rpm based distros, too. I am familiar creating rpms, .deb packages require some investigation.

OBS also has some kind of integration to github which could automatically trigger an rpm rebuild if a new relsease of cmakepp arrives.

Do you think, that would help to spread cmakepp?

BTW: The command name 'icmake' is already occupied in the linux world: linux:~ # zypper info icmake

Information for package icmake:

Repository: openSUSE-13.1-Oss Name: icmake Version: 7.20.00-2.1.2 Arch: i586 Vendor: openSUSE Installed: No Status: not installed Installed Size: 523.1 KiB Summary: A program maintenance (make) utility using a C-like grammar Description: Icmake allows the programmer to use a program language (closely resembling the well-known C-programming language) to define the actions involved in (complex) program maintenance. For this, icmake offers various special operators as well as a set of support functions that have proven to be useful in program maintenance.

Cd wrttn wtht vwls s mch trsr.

toeb commented 9 years ago

Ok sounds good.

I added an issue to rename icmake (i'll do that as soon as I get a change) as I primarily use that for testing purposes.

I am all for spreading cmakepp and I think that install packages are a good possibility - if you would take that upon yourself I would be very happy :) The only concern I have is that it has to be automatically mantained - automation is a main aspect of cmakepp I want it itself to adhere to it.

15knots commented 9 years ago

Am Samstag, 7. M�rz 2015, 12:06:27 schrieb Tobias Becker:

Ok sounds good.

I added an issue to rename icmake (i'll do that as soon as I get a change) as I primarily use that for testing purposes.

I am all for spreading cmakepp and I think that install packages are a good possibility - if you would take that upon yourself I would be very happy :)

Ok, I will setup up a home-project on OBS. Once that is building, you could add an link on the cmakepp site, where users can download RPMs.

The only concern I have is that it has to be automatically mantained - automation is a main aspect of cmakepp I want it itself to adhere to it.

Well, complete automation to build newer versions of cmakepp as rpms will not be possible: Someone has to add some changelog files:-)

Martin

Cd wrttn wtht vwls s mch trsr.

15knots commented 9 years ago

Am Samstag, 7. M�rz 2015, 12:06:27 schrieb Tobias Becker:

Ok sounds good.

https://build.opensuse.org/package/show/home:15knots/cmakepp

Will I get all the sources with the download link on github https://github.com/toeb/cmakepp/archive/master.zip ?

Cd wrttn wtht vwls s mch trsr.

toeb commented 9 years ago

you can get all sources when you download https://github.com/toeb/cmakepp/releases a release. it also privides you with a single cmake file cmakepp.cmake which contains all of cmakepp with no external dependencies

15knots commented 9 years ago

Ok, preview rpms are available at https://build.opensuse.org/package/show/home:15knots/cmakepp now. You will find some distros marked as unresolvable there, because cmakepp requires cmake 2.8.12, but some distros only have older versions. (My openSUSE 13.1 has 2.8.11, RHEL/Centos are still at 2.6.x). Would cmakepp work with 2.8.11?

I decided to build and put the all-in-one cmakepp.cmake inside the rpm instead of multiple files. Please tell me if that decision will lead to problems. cmakepp.cmake gets installed in /usr/share/cmake/Modules, is that correct?

And now for the bad news.

15knots commented 9 years ago

Am Samstag, 7. M�rz 2015, 11:37:01 schrieb Tobias Becker:

Hi Martin,

Hi Tobias,

first rpms are out. I had to truncate the descritpion inside the rpm, more than twenty lines are considered pad practice. I tried to list the most relevant features. It now reads:

URL : https://github.com/toeb/cmakepp Summary : An Enhancement Suite for CMake, the cross-platform build system Description : A feature rich set of CMake modules. Features include

Please contact me, if you fell uncomfortable with that list.

BTW: Thats a lot of features for v 0.0.7. What do you plan for v 1.0.0?

Regards, Martin

Cd wrttn wtht vwls s mch trsr.

toeb commented 9 years ago

cmakepp works with older version of cmake (I did use 2.8.7 ) but not completely - some functions will work some will not.) thats why I specified version 2.8.12 since that is the first version for which all tests work. cmake 2.11 should not be a problem. However travis-ci only tests against 2.8.12, 3.0.xx 3.1.xx

The single file solution is optimal. It does not contain anything unnecessary and should always work.

It may be put into the modules path / however it is not necessary (the best thing is if it is part of PATH) If you want to have access to the aliases cmakepp, icmakepp, ... you should run cmake -P ./cmakepp.cmake cmakepp_setup_environment once. This adds the aliases to ~/.bash-profile (I haven't tried other shells yet) (Alternatively you can specify the aliases yourself ) Also if possible the CMAKEPP_PATH variable should be set to the location of the file - however this is not a MUST

Currently the cmakepp.cmake file cannot by used by cmake's find_package however this is planned. Therefore having it in the modules path would be a good thing.

The docs are currently split up into different markdown files so they would probably not be useful for manpages. I plan on creating a single doc file in the future (if you want you can add the issue and also tell me what kind of docs would be sensible)

The test commandrunneraddruncommand is obsolete and will be removed in the next release.

I will try to create a condensed abstract less than 20 lines to explain cmakepp :) (I plan on taking some time on documenting everything and creating samples soon. But as you know that is always hard ;))

I do not have a real roadmap for cmakepp but I guess version 1.0.0 should have the completed package management and should they should be stable. As I am trying to adhere to semantic versioning (which I am failing at a bit) the 1 will be added as soon as I am happy with the interface.

toeb commented 9 years ago

AH: Thanks for your work.

Would you mind telling what is involved in releasing a newer version?

15knots commented 9 years ago

Am Sonntag, 8. M�rz 2015, 12:49:29 schrieb Tobias Becker:

cmakepp works with older version of cmake (I did use 2.8.7 ) but not completely - some functions will work some will not.) thats why I specified version 2.8.12 since that is the first version for which all tests work. cmake 2.11 should not be a problem. However travis-ci only tests against

OK, I will try to lower that limit. Adds one more distro.

...

It may be put into the modules path / however it is not necessary (the best thing is if it is part of PATH) If you want to have access to the aliases

Well, on linux, $path is for command binaries. Putting the all-in-1 cmakepp.cmake in <dir/for/cmake/modules> would allow users to sinply include(cmakepp) it. (Did not test yet)

cmakepp, icmakepp, ... you should run cmake -P ./cmakepp.cmake cmakepp_setup_environment once. This adds the aliases to ~/.bash-profile (I haven't tried other shells yet) (Alternatively you can specify the

I wasn't aware of the aliases yet, but the rpm could add a file in /etc/profile.d. This would add the aliases for each user on the system. But that's an issue for the rpm build, not for cmakepp itself. (Issue cmakepp#85 is a blocker here; but currently, users do not complain about missing aliases:-)

...

The docs are currently split up into different markdown files so they would probably not be useful for manpages. I plan on creating a single doc file in the future (if you want you can add the issue and also tell me what kind of docs would be sensible)

Well, to be honest here: I do not insist on providing offline docs with the rpm. Unless users demand offline doc in the rpm, I will be happy, if you provide online docs on github.

The test commandrunneraddruncommand is obsolete and will be removed in the next release.

The rpm build invokes cmake -P ../cmakepp.cmake test_execute_glob ../tests/**.cmake --recurse Is there a way to exclude commandrunneraddruncommand in the glob? It would be nice to run the tests in the rpm build.

I will try to create a condensed abstract less than 20 lines to explain

Let me know if it's done. I will update the rpm description accordingly then. The current description just whas a guess.

I do not have a real roadmap for cmakepp but I guess version 1.0.0 should have the completed package management and should they should be stable. As

Oops, package management ? I totally missed that. IMHO, cmakepp has lots of other valuable features. Do you plan to reinvent maven (without the angle brackets)?

I am trying to adhere to semantic versioning (which I am failing at a bit) the 1 will be added as soon as I am happy with the interface.

v 0.0.7 seems definitely too shy, if I look at the amount of code and docs. In terms of semantic versioning, 0.0.7 is the seventh bugfix version of release number zero. v 0.7.0 sounds reasonable. And don't worry, v 0.122.0 would be ok for semantic versioning (dewey decimals!)

Cd wrttn wtht vwls s mch trsr.

15knots commented 9 years ago

Am Sonntag, 8. M�rz 2015, 12:50:28 schrieb Tobias Becker:

AH: Thanks for your work.

Would you mind telling what is involved in releasing a newer version?

Sorry, I don't get that question right.

Conclusion: If the Cmakepp team decides to releae a new version and wants that to be available for end users as installable files, the Cmakepp team should inform the Packaging team. Changelog files or links to will be apperiated.

YOU code, WE package SCNR

Cd wrttn wtht vwls s mch trsr.

15knots commented 9 years ago

RPMs are published (for 7 distros). The all-in-one file cmakepp.cmake gets installed in the cmake modules dir (/usr/share/cmake/Modules/). If I add the line include(cmakepp) to my CMakeLists.txt, cmake nicely finds cmakepp.

But see issue #97

toeb commented 9 years ago

Thank You! - Shall I Close the Issue?

15knots commented 9 years ago

Yes, close this. You can re-open this when you release a new version, so I will get informed