Sha256: edc49743355719e36e9fad8be4422e85626ce7f110f659bdd6918a41cb79400e

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

# Copyright (c) 2023 M.J.N. Corino, The Netherlands
#
# This software is released under the MIT license.

###
# wxRuby3 buildtools platform pkg manager for Debian type systems
###

module WXRuby3

  module Config

    module Platform

      module PkgManager

        PLATFORM_DEPS = %w[libgtk-3-dev libwebkit2gtk-4.0-dev libgspell-1-dev libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libcurl4-openssl-dev libsecret-1-dev libnotify-dev]

        class << self

          private

          def do_install(distro, pkgs)
            run_apt(make_install_cmd(pkgs))
          end

          def add_platform_pkgs(pkgs)
            # get architecture
            arch = expand('dpkg --print-architecture').strip
            # find pkgs we need
            PLATFORM_DEPS.inject(pkgs) do |list, pkg|
              list << pkg unless (system("dpkg-query -s \"#{pkg}:#{arch}\" >/dev/null 2>&1") ||
                                    system("dpkg-query -s \"#{pkg}:all\" >/dev/null 2>&1") ||
                                    (expand("dpkg-query -s \"#{pkg}\" 2>/dev/null").strip =~ /Architecture: (#{arch}|all)/))
              list
            end
          end

          def run_apt(cmd)
            run("DEBIAN_FRONTEND=noninteractive apt-get -q -o=Dpkg::Use-Pty=0 #{cmd}")
          end

          def update_pkgs
            run_apt('update')
          end

          def make_install_cmd(pkgs)
            # update cache
            update_pkgs
            # get list of available packages
            apt_cache = `apt-cache pkgnames`.chomp.split("\n").collect { |s| s.strip }
            # remove un-installables
            pkgs = pkgs.select { |pkg| apt_cache.include?(pkg) }
            # create install command
            "install -y #{ pkgs.join(' ') }"
          end

        end

      end

    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wxruby3-0.9.7 rakelib/lib/config/pkgman/debian.rb