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

Debian 11: fix typo in versioncmp() / set default php to 7.4 #2186

Merged
merged 2 commits into from
Sep 1, 2021

Conversation

bastelfreak
Copy link
Collaborator

@bastelfreak bastelfreak commented Sep 1, 2021

tl;dr $::operatingsystemrelease is different from
$::operatingsystemmajrelease. $::operatingsystemmajrelease returns
'11.0' on Debian 11, whereas $::operatingsystemmajrelease is 11.
In addition versioncmp() says that '11.0' is greater than 11.

Without this change, the module sets the default PHP version on Debian
11 to 7.2, but the actual default in Debian is 7.4:

The 7.2 currently comes from the default entry in the selector
statement:

To test:

notify { "operatingsystemrelease compared to 11: ${versioncmp($::operatingsystemrelease, '11')}":}
notify { "operatingsystemmajrelease compared to 11: ${versioncmp($::operatingsystemmajrelease, '11')}":}
notify { "operatingsystemrelease: ${::operatingsystemrelease}":}
notify { "operatingsystemmajrelease: ${::operatingsystemmajrelease}":}

which produces:

puppet apply test.pp
Notice: Compiled catalog for blal in environment production in 0.02 seconds
Notice: operatingsystemrelease compared to 11: 1
Notice: /Stage[main]/Main/Notify[operatingsystemrelease compared to 11: 1]/message: defined 'message' as 'operatingsystemrelease compared to 11: 1'
Notice: operatingsystemmajrelease compared to 11: 0
Notice: /Stage[main]/Main/Notify[operatingsystemmajrelease compared to 11: 0]/message: defined 'message' as 'operatingsystemmajrelease compared to 11: 0'
Notice: operatingsystemrelease: 11.0
Notice: /Stage[main]/Main/Notify[operatingsystemrelease: 11.0]/message: defined 'message' as 'operatingsystemrelease: 11.0'
Notice: operatingsystemmajrelease: 11.0
Notice: /Stage[main]/Main/Notify[operatingsystemmajrelease: 11.0]/message: defined 'message' as 'operatingsystemmajrelease: 11'
Notice: Applied catalog in 0.01 seconds
:~> facter operatingsystemmajrelease
11
:~> facter operatingsystemrelease
11.0

The spec tests are copied from #2181
Co-authored-by: Kienan Stewart [email protected]

@bastelfreak bastelfreak requested a review from a team as a code owner September 1, 2021 08:21
@bastelfreak bastelfreak self-assigned this Sep 1, 2021
@CLAassistant
Copy link

CLAassistant commented Sep 1, 2021

CLA assistant check
All committers have signed the CLA.

@puppet-community-rangefinder
Copy link

apache::params is a class

Breaking changes to this file WILL impact these 16 modules (exact match):
Breaking changes to this file MAY impact these 11 modules (near match):

This module is declared in 175 of 578 indexed public Puppetfiles.


These results were generated with Rangefinder, a tool that helps predict the downstream impact of breaking changes to elements used in Puppet modules. You can run this on the command line to get a full report.

Exact matches are those that we can positively identify via namespace and the declaring modules' metadata. Non-namespaced items, such as Puppet 3.x functions, will always be reported as near matches only.

tl;dr `$::operatingsystemrelease` is different from
`$::operatingsystemmajrelease`. `$::operatingsystemmajrelease` returns
'11.0' on Debian 11, whereas `$::operatingsystemmajrelease` is `11`.
In addition `versioncmp()` says that `'11.0'` is greater than `11`.

Without this change, the module sets the default PHP version on Debian
11 to 7.2, but the actual default in Debian is 7.4:
* https://packages.debian.org/bullseye/php

The 7.2 currently comes from the default entry in the selector
statement:
* https://github.com/puppetlabs/puppetlabs-apache/blob/main/manifests/params.pp#L401

To test:

```puppet
notify { "operatingsystemrelease compared to 11: ${versioncmp($::operatingsystemrelease, '11')}":}
notify { "operatingsystemmajrelease compared to 11: ${versioncmp($::operatingsystemmajrelease, '11')}":}
notify { "operatingsystemrelease: ${::operatingsystemrelease}":}
notify { "operatingsystemmajrelease: ${::operatingsystemmajrelease}":}
```

which produces:

```terminal
puppet apply test.pp
Notice: Compiled catalog for blal in environment production in 0.02 seconds
Notice: operatingsystemrelease compared to 11: 1
Notice: /Stage[main]/Main/Notify[operatingsystemrelease compared to 11: 1]/message: defined 'message' as 'operatingsystemrelease compared to 11: 1'
Notice: operatingsystemmajrelease compared to 11: 0
Notice: /Stage[main]/Main/Notify[operatingsystemmajrelease compared to 11: 0]/message: defined 'message' as 'operatingsystemmajrelease compared to 11: 0'
Notice: operatingsystemrelease: 11.0
Notice: /Stage[main]/Main/Notify[operatingsystemrelease: 11.0]/message: defined 'message' as 'operatingsystemrelease: 11.0'
Notice: operatingsystemmajrelease: 11.0
Notice: /Stage[main]/Main/Notify[operatingsystemmajrelease: 11.0]/message: defined 'message' as 'operatingsystemmajrelease: 11'
Notice: Applied catalog in 0.01 seconds
```

```terminal
:~> facter operatingsystemmajrelease
11
:~> facter operatingsystemrelease
11.0
```

The spec tests are copied from
puppetlabs#2181
Co-authored-by: Kienan Stewart <[email protected]>
@bastelfreak
Copy link
Collaborator Author

I also raised a ticket about the versioncmp behaviour: https://tickets.puppetlabs.com/browse/PUP-11235

manifests/params.pp Outdated Show resolved Hide resolved
Co-authored-by: Ewoud Kohl van Wijngaarden <[email protected]>
@ekohl ekohl merged commit ef1afcb into puppetlabs:main Sep 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants