From 380b3a9831664f8a93ac61cf4b3c0cbc5e332f1a Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Mon, 8 Jun 2026 17:51:06 +0200 Subject: [PATCH] Use packages.sury.org as the new APT source --- manifests/repo/debian.pp | 11 ++++--- manifests/repo/ubuntu.pp | 46 +++++++++++++++++++++------- spec/classes/php_repo_debian_spec.rb | 2 ++ spec/classes/php_repo_ubuntu_spec.rb | 11 ++++++- 4 files changed, 54 insertions(+), 16 deletions(-) diff --git a/manifests/repo/debian.pp b/manifests/repo/debian.pp index 6baa9000..3c62bc14 100644 --- a/manifests/repo/debian.pp +++ b/manifests/repo/debian.pp @@ -30,6 +30,7 @@ }, Boolean $dotdeb = true, Boolean $sury = true, + String[1] $key_source = 'https://packages.sury.org/php/apt.gpg', ) { assert_private() @@ -51,6 +52,10 @@ } if ($sury and versioncmp($facts['os']['release']['major'], '9') >= 0) { + apt::keyring { 'packages-sury-org.gpg': + source => $key_source, + } + apt::source { 'source_php_sury': location => 'https://packages.sury.org/php/', repos => 'main', @@ -58,10 +63,8 @@ 'src' => $include_src, 'deb' => true, }, - key => { - name => 'php-sury.gpg', - source => 'https://packages.sury.org/php/apt.gpg', - }, + keyring => '/etc/apt/keyrings/packages-sury-org.gpg', + require => Apt::Keyring['packages-sury-org.gpg'], } } } diff --git a/manifests/repo/ubuntu.pp b/manifests/repo/ubuntu.pp index 9be7ea0f..cf105d6d 100644 --- a/manifests/repo/ubuntu.pp +++ b/manifests/repo/ubuntu.pp @@ -1,28 +1,52 @@ -# Configure ubuntu ppa +# Configure ubuntu apt repo (packages.sury.org) # # === Parameters # +# [*location*] +# Location of the apt repository +# +# [*repos*] +# Apt repository names +# +# [*include_src*] +# Add source repository +# +# [*key_source*] +# URL of the GPG key file +# # [*version*] -# PHP version to manage (e.g. 5.6) +# Removed. PHP version selection via PPA is no longer supported. +# All PHP versions are available from a single repository. # class php::repo::ubuntu ( - Pattern[/^\d\.\d/] $version = '5.6', + String[1] $location = 'https://packages.sury.org/php/', + String[1] $repos = 'main', + Boolean $include_src = false, + String[1] $key_source = 'https://packages.sury.org/php/apt.gpg', + Optional[String] $version = undef, ) { if $facts['os']['name'] != 'Ubuntu' { fail("class php::repo::ubuntu does not work on OS ${facts['os']['name']}") } - include 'apt' - if ($version == '5.5') { - fail('PHP 5.5 is no longer available for download') + if $version != undef { + fail('php::repo::ubuntu: the $version parameter has been removed. packages.sury.org provides all PHP versions in a single repository.') } - $version_repo = $version ? { - '5.4' => 'ondrej/php5-oldstable', - default => 'ondrej/php' + include 'apt' + + apt::keyring { 'packages-sury-org.gpg': + source => $key_source, } - ::apt::ppa { "ppa:${version_repo}": - package_manage => true, + apt::source { 'source_php_sury': + location => $location, + repos => $repos, + include => { + 'src' => $include_src, + 'deb' => true, + }, + keyring => '/etc/apt/keyrings/packages-sury-org.gpg', + require => Apt::Keyring['packages-sury-org.gpg'], } } diff --git a/spec/classes/php_repo_debian_spec.rb b/spec/classes/php_repo_debian_spec.rb index b74e86cb..6a96778b 100644 --- a/spec/classes/php_repo_debian_spec.rb +++ b/spec/classes/php_repo_debian_spec.rb @@ -26,9 +26,11 @@ if facts[:os]['release']['major'].to_i < 9 it { is_expected.to contain_apt__source('source_php_dotdeb') } it { is_expected.not_to contain_apt__source('source_php_sury') } + it { is_expected.not_to contain_apt__keyring('packages-sury-org.gpg') } elsif facts[:os]['release']['major'].to_i >= 9 it { is_expected.not_to contain_apt__source('source_php_dotdeb') } it { is_expected.to contain_apt__source('source_php_sury') } + it { is_expected.to contain_apt__keyring('packages-sury-org.gpg') } end else it { is_expected.to compile.and_raise_error(%r{class php::repo::debian does not work on OS}) } diff --git a/spec/classes/php_repo_ubuntu_spec.rb b/spec/classes/php_repo_ubuntu_spec.rb index 8c752095..4d0cf020 100644 --- a/spec/classes/php_repo_ubuntu_spec.rb +++ b/spec/classes/php_repo_ubuntu_spec.rb @@ -12,11 +12,20 @@ describe 'works without params' do if facts[:os]['name'] == 'Ubuntu' it { is_expected.to compile.with_all_deps } - it { is_expected.to contain_apt__ppa('ppa:ondrej/php') } + it { is_expected.to contain_apt__keyring('packages-sury-org.gpg') } + it { is_expected.to contain_apt__source('source_php_sury') } else it { is_expected.to compile.and_raise_error(%r{class php::repo::ubuntu does not work on OS}) } end end + + describe 'fails when version is specified' do + if facts[:os]['name'] == 'Ubuntu' + let(:params) { { version: '8.1' } } + + it { is_expected.to compile.and_raise_error(%r{version parameter has been removed}) } + end + end end end end