From bdb3b929fba2f7989141d1b1c859f56da9bbd8d4 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 17 Jun 2022 22:49:30 +0200 Subject: Add hhvm subtasks --- rakelib/hhvm.rake | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 rakelib/hhvm.rake (limited to 'rakelib/hhvm.rake') diff --git a/rakelib/hhvm.rake b/rakelib/hhvm.rake new file mode 100644 index 0000000..cb6fc16 --- /dev/null +++ b/rakelib/hhvm.rake @@ -0,0 +1,67 @@ +# 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 + +namespace :hhvm do + desc 'Generates diffs with removed download URLs' + task :bundled_dependencies, [:version] do |_, arguments| + run_on_source arguments[:version] do |third_party| + c_make_lists = third_party + 'CMakeLists.txt' + next unless c_make_lists.exist? + + contents = c_make_lists.read + set_hhvm_start = contents.index 'SET_HHVM_THIRD_PARTY_SOURCE_ARGS(' + next if set_hhvm_start.nil? + + line = contents[..set_hhvm_start].count "\n" + in_lines = contents.lines + 4.times { in_lines.delete_at(line + 2) } + + puts Open3.capture2('diff', '-Nur', c_make_lists.to_path, '-', stdin_data: in_lines.join).first + end + end + + desc 'Generated SlackBuild code to prepare bundled dependencies' + task :bundled_code, [:version] do |_, arguments| + run_on_source arguments[:version] do |third_party| + c_make_lists = third_party + 'CMakeLists.txt' + next unless c_make_lists.exist? + + contents = c_make_lists.read + set_hhvm_start = contents.index 'SET_HHVM_THIRD_PARTY_SOURCE_ARGS(' + next if set_hhvm_start.nil? + + set_hhvm_end = contents.index ')', set_hhvm_start + set_hhvm_start += 'SET_HHVM_THIRD_PARTY_SOURCE_ARGS('.length + set_hhvm_end -= 1 + contents = contents[set_hhvm_start..set_hhvm_end].split[1..].map(&:strip) + + src = Pathname.new('third-party') + + third_party.basename + + "bundled_#{third_party.basename}-prefix" + 'src' + bundled = src + "bundled_#{third_party.basename}" + archive_name = contents[1][contents[1].rindex('/') + 1..-2] + + puts "mkdir -p #{bundled}" + puts "install -m 0644 -D $CWD/#{archive_name} #{src + archive_name}" + puts "tar -zxvf $CWD/#{archive_name} -C #{bundled}" + puts + end + end +end + +private + +def run_on_source(version, &block) + package = Package.new 'development/hhvm', + version: version, + homepage: 'https://hhvm.com/', + requires: %w[tbb glog libdwarf libmemcached dobule-conversion] + repository = SlackBuilder.clone 'https://github.com/facebook/hhvm.git', package, 'HHVM-' + + (repository + 'third-party').each_child do |third_party| + block.call third_party + end +end -- cgit v1.2.3