class GNOME2::Rake::NativeBinaryBuildTask
Public Class Methods
new(package)
click to toggle source
# File lib/gnome2/rake/native-binary-build-task.rb, line 25 def initialize(package) @package = package end
Public Instance Methods
define()
click to toggle source
# File lib/gnome2/rake/native-binary-build-task.rb, line 29 def define namespace :native do namespace :builder do task :before define_build_tasks build_tasks = build_packages.collect do |package| "native:builder:build:#{package.name}" end task :build => build_tasks task :after end desc "Build binaries for build environment" task :build => [ "native:builder:before", "native:builder:build", "native:builder:after", ] end end
Private Instance Methods
build_package_task_body(package)
click to toggle source
# File lib/gnome2/rake/native-binary-build-task.rb, line 76 def build_package_task_body(package) package_tmp_dir = @package.tmp_dir + "native" + package.name rm_rf(package_tmp_dir) mkdir_p(package_tmp_dir) tar_full_path = @package.download_dir + package.archive_base_name Dir.chdir(package_tmp_dir.to_s) do sh("tar", "xf", tar_full_path.to_s) or exit(false) end package_dir_path = package_tmp_dir + package.base_name + package.base_dir_in_package Dir.chdir(package_dir_path.to_s) do package.native.patches.each do |patch| sh("patch -p1 < #{@package.patches_dir}/#{patch}") end build_dir = "build" env = [] env << "PKG_CONFIG_PATH=#{pkg_config_path}" env << "GLIB_COMPILE_SCHEMAS=glib-compile-schemas" sh("env", *env, "meson", build_dir, "--prefix=#{dist_dir}", "--libdir=lib") or exit(false) sh("env", *env, "nice", "ninja", "-C", build_dir) or exit(false) sh("env", *env, "ninja", "-C", build_dir, "install") or exit(false) end end
build_packages()
click to toggle source
# File lib/gnome2/rake/native-binary-build-task.rb, line 107 def build_packages @package.external_packages.select do |package| package.native.build? end end
define_build_tasks()
click to toggle source
# File lib/gnome2/rake/native-binary-build-task.rb, line 51 def define_build_tasks namespace :build do build_packages.each do |package| namespace package.name do download_task = "source:downloader:download:#{package.name}" built_file = package.native.built_file if built_file built_file = dist_dir + built_file file built_file.to_s do ::Rake::Task[download_task].invoke build_package_task_body(package) end task :build => built_file.to_s else task :build => [download_task] do build_package_task_body(package) end end end desc "Build #{package.label} and install it into #{dist_dir}." task package.name => "native:builder:build:#{package.name}:build" end end end
dist_dir()
click to toggle source
# File lib/gnome2/rake/native-binary-build-task.rb, line 113 def dist_dir @package.native.absolute_binary_dir end
pkg_config_path()
click to toggle source
# File lib/gnome2/rake/native-binary-build-task.rb, line 117 def pkg_config_path dist_dir + "lib/pkgconfig" end