Skip to content

Commit

Permalink
fedora almalinux: add support for package by URL
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Jan 8, 2025
1 parent 8ab086b commit 3044105
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 23 deletions.
17 changes: 10 additions & 7 deletions lib/rubygems-requirements-system/platform/debian.rb
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,7 @@ def prepare_command_lines(package)

def install_command_line(package)
if package.start_with?("https://")
package_url_template = package
os_release = OSRelease.new
package_url = package_url_template % {
distribution: os_release.id,
code_name: os_release.version_codename,
version: os_release.version,
}
package_url = resolve_package_url_template(package)
local_package = Tempfile.new([
"rubygems-requirements-system-debian",
File.extname(package),
Expand All @@ -84,6 +78,15 @@ def install_command_line(package)
def need_super_user_priviledge?
true
end

def resolve_package_url_template(package_url_template)
os_release = OSRelease.new
package_url_template % {
distribution: os_release.id,
code_name: os_release.version_codename,
version: os_release.version,
}
end
end
end
end
27 changes: 24 additions & 3 deletions lib/rubygems-requirements-system/platform/fedora.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

require_relative "red-hat-enterprise-linux"
require_relative "base"

module RubyGemsRequirementsSystem
module Platform
class Fedora < RedHatEnterpriseLinux
class Fedora < Base
Platform.register(self)

class << self
Expand All @@ -28,17 +28,38 @@ def current_platform?
end

def target?(platform)
platform == "fedora" || super
platform == "fedora"
end

def default_system_packages(packages)
packages.collect {|package| "pkgconfig(#{package.id})"}
end

private
def install_command_line(package)
if package.start_with?("https://")
package = resolve_package_url_template(package)
end
["dnf", "install", "-y", package]
end

def need_super_user_priviledge?
true
end

def resolve_package_url_template(package_url_template)
os_release = OSRelease.new
package_url_template % {
distribution: os_release.id,
major_version: major_version,
version: os_release.version,
}
end

def major_version
major_version_string = File.read("/etc/redhat-release")[/(\d+)/, 0]
Integer(major_version_string, 10)
end
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

require_relative "base"
require_relative "fedora"

module RubyGemsRequirementsSystem
module Platform
class RedHatEnterpriseLinux < Base
class RedHatEnterpriseLinux < Fedora
Platform.register(self)

class << self
Expand All @@ -34,17 +34,15 @@ def target?(platform)
when "redhat" # For backward compatibility
true
else
false
super
end
end

def default_system_packages(packages)
packages.collect {|package| "pkgconfig(#{package.id})"}
end

private

def install_command_line(package)
if package.start_with?("https://")
package = resolve_package_url_template(package)
end
if major_version >= 9
["dnf", "install", "--enablerepo=crb", "-y", package]
elsif major_version >= 8
Expand All @@ -57,11 +55,6 @@ def install_command_line(package)
def need_super_user_priviledge?
true
end

def major_version
major_version_string = File.read("/etc/redhat-release")[/(\d+)/, 0]
Integer(major_version_string, 10)
end
end
end
end
3 changes: 3 additions & 0 deletions test/fixture/dummy-groonga/dummy-groonga.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,7 @@ Gem::Specification.new do |spec|
spec.requirements << "system: groonga: debian: https://packages.groonga.org/%{distribution}/groonga-apt-source-latest-%{code_name}.deb"
spec.requirements << "system: groonga: ubuntu: ppa:groonga/ppa"
spec.requirements << "system: groonga: debian: libgroonga-dev"
spec.requirements << "system: groonga: rhel: https://apache.jfrog.io/artifactory/arrow/almalinux/%{major_version}/apache-arrow-release-latest.rpm"
spec.requirements << "system: groonga: rhel: https://packages.groonga.org/almalinux/%{major_version}/groonga-release-latest.noarch.rpm"
spec.requirements << "system: groonga: rhel: pkgconfig(groonga)"
end

0 comments on commit 3044105

Please sign in to comment.