conan-io / conan

Conan - The open-source C and C++ package manager
https://conan.io
MIT License
7.95k stars 951 forks source link

[question] disable package revisions #16553

Open Peddaahh opened 3 days ago

Peddaahh commented 3 days ago

What is your question?

Hi.

Is there a possibility to disable package revisions? Our packages are build everynight and therefore a new revision is created. The recipe stays the same but of course the binary changes (according to conanmanifest.txt too). For our use case, every change introduced, cannot happen without a new commit, which is then represented in an incremented version (MAJOR.MINOR.PATCH-commitNumber-shortHash). so actually there is no change within the same package version.

I did not find any options, to either exclude the packaged binary from revision hash calculation, or disable it. I tried setting the env CONAN_REVISIONS_ENABLED=0 however, from jenkins there are still revisions uploaded on artifactory

Have you read the CONTRIBUTING guide?

memsharded commented 3 days ago

Hi @Peddaahh

Is there a possibility to disable package revisions? Our packages are build everynight and therefore a new revision is created. The recipe stays the same but of course the binary changes (according to conanmanifest.txt too).

Revisions cannot be disabled, neither recipe-revisions, nor package-revisions. The key is to not re-build it when the binary already exists, as it would mean building again exactly the same thing that didn't have any source changes or configuration changes

or our use case, every change introduced, cannot happen without a new commit, which is then represented in an incremented version (MAJOR.MINOR.PATCH-commitNumber-shortHash). so actually there is no change within the same package version.

then, why not doing a conan create . --build=missing or something like that? It will completely avoid an unnecessary build and save time and money.

I did not find any options, to either exclude the packaged binary from revision hash calculation, or disable it.

Still not very clear why you would like to disable package-revisions. What problem you are trying so solve?

CONAN_REVISIONS_ENABLED=0

This was Conan 1 only, Conan 2 always implement revisions.

Peddaahh commented 3 days ago

yes, but it would be easier for me if revisions could be disabled... all my builds are running once @ midnight (updating other dependencies etc..) for the conan part i just build a package with export-pkg to wrap a beforehand built binary.. so this binary changes (just because of the rebuild - no code/recipe change).. but now every night a new revision gets pushed.. i do not understand how i can properly prevent this

memsharded commented 3 days ago

for the conan part i just build a package with export-pkg to wrap a beforehand built binary.. so this binary changes (just because of the rebuild - no code/recipe change).. but now every night a new revision gets pushed.. i do not understand how i can properly prevent this

Before building the binary, you could do a conan graph info and check if the binary needs to be built in the first place. Then if so, do the build and the conan export-pkg, but do nothing otherwise.

If rebuilding things is very cheap and you are not concerned about wasting CI to rebuild things over and over, then why the revisions would be an issue? Because of the storage cost? That is typically way cheaper than CPU, and it is quite simple to implement cleaning policies, removing old package revisions when you want. But in fact, even if the builds might be unnecessary, you actually want traceability, and the package-revision provides that, and you can match server artifacts to specific builds, in case some of those unnecessary builds created a problem (maybe a system malfunction, or the like).