inexorgame-obsolete / deprecated-cube-engine-inexor

UNMAINTAINED: Please have a look at the vulkan-renderer
https://inexor.org
zlib License
11 stars 1 forks source link

Make inexor core releases management easier for local builds #571

Open a-teammate opened 6 years ago

a-teammate commented 6 years ago

Problem:

It is neither very clear, nor very consistent how to add a local bin folder.

Currently it is as follows:

A release on github has a bin/ subfolder. the release gets downloaded and named according to the release (based on the name of the zip) and afterwards the binaries are expected to be in //bin.

In a cache folder each subdirectory becomes a release.

The problem is, that adding your local build is not so obvious: If you build inexor-core, you have the binaries in inexor-core/build/bin. Or if you make install you have the binaries additionally in inexor-core/bin.

Another note: for each different instance one needs to set which version it will want to use. x or * means the newest one. but the version can also be not a semantic version, but a name. i.e. build.

How to add local binaries?

To execute the local build in inexor-core/build/bin there is a specially crafted array in releases.toml:

explicit_release_folders in releases.toml: you add the (absolute) path to your build folder there. It will look then (like for any release), for the binaries in the bin-subfolder.

Alternatively one could symlink the build-folder to be a subfolder of a cache_folder. hence it will also be regarded as a release.

One can not simply make the cache folder point to the inexor-core directory. Although it would have the desired effect, that a build release exists, but all other directories in the inexor-core directory would also be a "release". i.e. the bin-, cmake-, dist-, doc-, inexor-, tool- and .git-release.


Suggestions

  1. Add a special rule that build is a preferred release (?)
    • Note: special rules are nasty..
  2. add an interface to ui-flex, so one can add a build-folder easily.
    • Furthermore release-providers should be easily addable.
    • This would also require that you need to apply in the same run to different instances that you want the instance to run with that particular release ("build")
  3. make explicit_release_folders disappear and instead add a whitelist attribute to a release provider
    • there are already release providers from local filesystem (i.e. an old cache directory). Cne could make it so, that it does not automatically add every subfolder, but only some, which match a specific pattern, i.e. build *
    • This way the inexor-core folder could be added as a provider for releases and the build folder gets recognized as the only release from that provider