slackbuilder/debug/PackageKit/PackageKit.rb

76 lines
2.1 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
# frozen_string_literal: true
# This script creates a debug PackageKit build used for development.
# For the script to work PackageKit source should be in the ./PackageKit
# directory alongside this script.
require 'fileutils'
require 'pathname'
require 'open3'
CWD = Pathname.new Dir.pwd
SOURCE = CWD + 'PackageKit'
TMP = CWD + 'tmp'
DESTINATION = CWD + 'package'
BUILD = 1
ARCH = `uname -m`.strip
FileUtils.rm_rf [TMP, DESTINATION]
Dir.mkdir TMP
version = `git -C #{SOURCE} describe --tags --abbrev=0`
.strip
.delete_prefix('PACKAGEKIT_')
.gsub('_', '.')
exec_result = system 'meson',
'--buildtype=debug',
'--prefix=/usr',
'--libdir=/usr/lib64',
'--localstatedir=/var',
'--mandir=/usr/man',
'--sysconfdir=/etc',
'-Dsystemd=false',
'-Doffline_update=false',
'-Dbash_completion=false',
'-Dbash_completion_not_found=false',
'-Dpackaging_backend=slack',
'-Ddaemon_tests=true',
TMP.to_s,
SOURCE.to_s
raise 'Meson build failed' unless exec_result
exec_result = system({'DESTDIR' => DESTINATION.to_s}, 'ninja', '-C', TMP.to_s, 'install')
raise 'Ninja installation failed' unless exec_result
actual_mandir = DESTINATION + 'usr/share/man/man1'
mandir = DESTINATION + 'usr/man/man1'
FileUtils.mkdir_p mandir
Dir.new(actual_mandir).each_child do |entry|
manpage = actual_mandir + entry
Open3.popen3 'gzip', '--stdout', '-9', manpage.to_s do |stdin, stdout, stderr, wait_thr|
File.open (mandir + "#{entry}.gz").to_s, 'wb' do |file|
stdin.close
IO.copy_stream stdout, file
IO.copy_stream stderr, $stderr
stdout.close
stderr.close
wait_thr.value
end
end
end
FileUtils.rm_rf (DESTINATION + 'usr/share/man').to_s
Dir.chdir DESTINATION
package_path = CWD + "PackageKit-#{version}-#{ARCH}-#{BUILD}_debug.txz"
puts "Building #{package_path}"
system '/sbin/makepkg', '-l', 'y', '-c', 'n', package_path.to_s