Remove unused tasks
This commit is contained in:
parent
24e62c3439
commit
0023fe0337
108
Rakefile
108
Rakefile
@ -4,40 +4,106 @@
|
|||||||
|
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'pathname'
|
||||||
require 'digest/md5'
|
require 'digest/md5'
|
||||||
require 'net/http'
|
require 'net/http'
|
||||||
require 'open3'
|
|
||||||
require_relative 'config/config'
|
require_relative 'config/config'
|
||||||
require_relative 'lib/package'
|
require_relative 'lib/package'
|
||||||
require_relative 'lib/download'
|
require_relative 'lib/download'
|
||||||
|
|
||||||
task :dmd, [:version] do |_, arguments|
|
namespace :hhvm do
|
||||||
raise 'Version is not specified.' unless arguments.key? :version
|
def filter_set_hhvm_third_party_source_args(tokens)
|
||||||
|
args = tokens[0]
|
||||||
|
allowed_arguments = tokens[1..].each_slice(2)
|
||||||
|
.filter do |key, _value|
|
||||||
|
!key.end_with?('_URL') && !key.end_with?('_HASH')
|
||||||
|
end
|
||||||
|
|
||||||
dub_version = '1.33.0'
|
allowed_arguments
|
||||||
dscanner_version = '0.15.2'
|
.flatten
|
||||||
dcd_version = '0.15.2'
|
.prepend(" #{args}")
|
||||||
|
.join("\n ")
|
||||||
|
end
|
||||||
|
|
||||||
SlackBuilder::DmdTools.update_dmd arguments[:version]
|
def split_set_hhvm_third_party_source_args(section_content)
|
||||||
SlackBuilder::DmdTools.update_tools arguments[:version], dub_version, dscanner_version, dcd_version
|
section_content
|
||||||
|
.split("\n")
|
||||||
|
.map do |line|
|
||||||
|
hash_index = line.index '#'
|
||||||
|
line = line[...hash_index] unless hash_index.nil?
|
||||||
|
|
||||||
|
line.strip
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def rewrite_set_hhvm_third_party_source_args(contents)
|
||||||
|
set_hhvm_start = contents.index 'SET_HHVM_THIRD_PARTY_SOURCE_ARGS('
|
||||||
|
return nil if set_hhvm_start.nil?
|
||||||
|
|
||||||
|
section_contents = contents[set_hhvm_start + 'SET_HHVM_THIRD_PARTY_SOURCE_ARGS('.length..]
|
||||||
|
set_hhvm_end = section_contents.index ')'
|
||||||
|
|
||||||
|
lines = split_set_hhvm_third_party_source_args section_contents[...set_hhvm_end]
|
||||||
|
new_cmake_section = filter_set_hhvm_third_party_source_args lines.reject(&:blank?).join(' ').split
|
||||||
|
|
||||||
|
contents[...set_hhvm_start] +
|
||||||
|
"SET_HHVM_THIRD_PARTY_SOURCE_ARGS(\n#{new_cmake_section}\n)\n" +
|
||||||
|
section_contents[set_hhvm_end..]
|
||||||
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
rewritten_cmake = rewrite_set_hhvm_third_party_source_args contents
|
||||||
|
next if rewritten_cmake.nil?
|
||||||
|
|
||||||
|
puts Open3.capture2('diff', '-Nur', c_make_lists.to_path, '-', stdin_data: rewritten_cmake).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
|
end
|
||||||
|
|
||||||
task :hhvm, [:version] do |_, arguments|
|
private
|
||||||
raise 'Version is not specified.' unless arguments.key? :version
|
|
||||||
|
|
||||||
checksum = {}
|
|
||||||
checksum[:hhvm] = SlackBuilder.clone 'https://github.com/facebook/hhvm.git',
|
|
||||||
"development/hhvm/hhvm-#{arguments[:version]}.tar.xz", 'HHVM-'
|
|
||||||
|
|
||||||
|
def run_on_source(version, &block)
|
||||||
package = Package.new 'development/hhvm',
|
package = Package.new 'development/hhvm',
|
||||||
version: arguments[:version],
|
version: version,
|
||||||
homepage: 'https://hhvm.com/',
|
homepage: 'https://hhvm.com/',
|
||||||
requires: %w[tbb glog libdwarf libmemcached dobule-conversion]
|
requires: %w[tbb glog libdwarf libmemcached dobule-conversion]
|
||||||
|
repository = SlackBuilder.clone 'https://github.com/facebook/hhvm.git', package, 'HHVM-'
|
||||||
|
|
||||||
write_info package,
|
(repository + 'third-party').each_child do |third_party|
|
||||||
downloads: [
|
block.call third_party
|
||||||
Download.new(SlackBuilder.hosted_sources("/hhvm/hhvm-#{package.version}.tar.xz"), checksum[:hhvm], is64: true)
|
end
|
||||||
]
|
|
||||||
|
|
||||||
update_slackbuild_version 'development/hhvm', package.version
|
|
||||||
end
|
end
|
||||||
|
@ -416,12 +416,8 @@ main = do
|
|||||||
categories <- liftIO $ findCategory repository'
|
categories <- liftIO $ findCategory repository'
|
||||||
liftIO $ print $ splitFileName . makeRelative repository' <$> categories
|
liftIO $ print $ splitFileName . makeRelative repository' <$> categories
|
||||||
pure Nothing
|
pure Nothing
|
||||||
CommitCommand packagePath version ->
|
|
||||||
commit packagePath version >> pure Nothing
|
|
||||||
ExistsCommand urlPath -> pure . Text.pack . show
|
ExistsCommand urlPath -> pure . Text.pack . show
|
||||||
<$> remoteFileExists urlPath
|
<$> remoteFileExists urlPath
|
||||||
ArchiveCommand repo nameVersion tarball tagPrefix ->
|
|
||||||
cloneAndArchive repo nameVersion tarball tagPrefix >> pure Nothing
|
|
||||||
DownloadCommand url target
|
DownloadCommand url target
|
||||||
| Just uri' <- mkURI url -> fmap (Text.pack . show)
|
| Just uri' <- mkURI url -> fmap (Text.pack . show)
|
||||||
<$> download uri' target
|
<$> download uri' target
|
||||||
|
@ -21,9 +21,7 @@ import Options.Applicative
|
|||||||
|
|
||||||
data SlackBuilderCommand
|
data SlackBuilderCommand
|
||||||
= CategoryCommand Text
|
= CategoryCommand Text
|
||||||
| CommitCommand Text Text
|
|
||||||
| ExistsCommand Text
|
| ExistsCommand Text
|
||||||
| ArchiveCommand Text Text String Text
|
|
||||||
| DownloadCommand Text String
|
| DownloadCommand Text String
|
||||||
| CloneCommand Text Text Text
|
| CloneCommand Text Text Text
|
||||||
| DownloadAndDeployCommand Text Text
|
| DownloadAndDeployCommand Text Text
|
||||||
@ -51,9 +49,7 @@ slackBuilderParser = info slackBuilderCommand fullDesc
|
|||||||
slackBuilderCommand :: Parser SlackBuilderCommand
|
slackBuilderCommand :: Parser SlackBuilderCommand
|
||||||
slackBuilderCommand = subparser
|
slackBuilderCommand = subparser
|
||||||
$ command "category" (info categoryCommand mempty)
|
$ command "category" (info categoryCommand mempty)
|
||||||
<> command "commit" (info commitCommand mempty)
|
|
||||||
<> command "exists" (info existsCommand mempty)
|
<> command "exists" (info existsCommand mempty)
|
||||||
<> command "archive" (info archiveCommand mempty)
|
|
||||||
<> command "download" (info downloadCommand mempty)
|
<> command "download" (info downloadCommand mempty)
|
||||||
<> command "clone" (info cloneCommand mempty)
|
<> command "clone" (info cloneCommand mempty)
|
||||||
<> command "deploy" (info deployCommand mempty)
|
<> command "deploy" (info deployCommand mempty)
|
||||||
@ -61,15 +57,7 @@ slackBuilderCommand = subparser
|
|||||||
where
|
where
|
||||||
categoryCommand = CategoryCommand
|
categoryCommand = CategoryCommand
|
||||||
<$> argument str (metavar "PKGNAM")
|
<$> argument str (metavar "PKGNAM")
|
||||||
commitCommand = CommitCommand
|
|
||||||
<$> argument str (metavar "PATH")
|
|
||||||
<*> argument str (metavar "VERSION")
|
|
||||||
existsCommand = ExistsCommand <$> argument str (metavar "PATH")
|
existsCommand = ExistsCommand <$> argument str (metavar "PATH")
|
||||||
archiveCommand = ArchiveCommand
|
|
||||||
<$> argument str (metavar "REPO")
|
|
||||||
<*> argument str (metavar "NAME_VERSION")
|
|
||||||
<*> argument str (metavar "TARBALL")
|
|
||||||
<*> argument str (metavar "TAG_PREFIX")
|
|
||||||
downloadCommand = DownloadCommand
|
downloadCommand = DownloadCommand
|
||||||
<$> argument str (metavar "URI")
|
<$> argument str (metavar "URI")
|
||||||
<*> argument str (metavar "TARGET")
|
<*> argument str (metavar "TARGET")
|
||||||
|
@ -37,21 +37,4 @@ module SlackBuilder
|
|||||||
private_class_method def self.upload_command(local_path, remote_path)
|
private_class_method def self.upload_command(local_path, remote_path)
|
||||||
['scp', "slackbuilds/#{local_path}", CONFIG[:remote_path] + remote_path]
|
['scp', "slackbuilds/#{local_path}", CONFIG[:remote_path] + remote_path]
|
||||||
end
|
end
|
||||||
|
|
||||||
private_class_method def self.clone_and_archive(repo, name_version, tarball, tag_prefix = 'v')
|
|
||||||
sh './bin/slackbuilder', 'archive', repo, name_version, tarball, tag_prefix
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def write_info(package, downloads:)
|
|
||||||
File.write "slackbuilds/#{package.path}/#{package.name}.info",
|
|
||||||
info_template(package, downloads)
|
|
||||||
end
|
|
||||||
|
|
||||||
def update_slackbuild_version(package_path, version)
|
|
||||||
sh './bin/slackbuilder', 'slackbuild', package_path, version
|
|
||||||
end
|
|
||||||
|
|
||||||
def commit(package_path, version)
|
|
||||||
sh './bin/slackbuilder', 'commit', package_path, version
|
|
||||||
end
|
end
|
||||||
|
@ -21,82 +21,4 @@ class Package
|
|||||||
def name_version
|
def name_version
|
||||||
"#{name}-#{@version}"
|
"#{name}-#{@version}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.parse(path, info_contents)
|
|
||||||
current_line = String.new ''
|
|
||||||
variables = {}
|
|
||||||
|
|
||||||
info_contents.each_line(chomp: true) do |file_line|
|
|
||||||
current_line << file_line.delete_suffix('\\')
|
|
||||||
next if file_line.end_with? '\\'
|
|
||||||
|
|
||||||
variables.store(*parse_pair(current_line))
|
|
||||||
current_line.clear
|
|
||||||
end
|
|
||||||
from_hash path, variables
|
|
||||||
end
|
|
||||||
|
|
||||||
private_class_method def self.parse_pair(current_line)
|
|
||||||
variable_name, variable_value = current_line.split '='
|
|
||||||
[variable_name, variable_value[1...-1].split]
|
|
||||||
end
|
|
||||||
|
|
||||||
private_class_method def self.from_hash(path, variables)
|
|
||||||
Package.new path,
|
|
||||||
version: variables['VERSION'].join,
|
|
||||||
homepage: variables['HOMEPAGE'].join,
|
|
||||||
requires: variables['REQUIRES']
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
class Download
|
|
||||||
attr_reader :download, :md5sum
|
|
||||||
|
|
||||||
def initialize(download, md5sum, is64: false)
|
|
||||||
@download = download
|
|
||||||
@md5sum = md5sum
|
|
||||||
@is64 = is64
|
|
||||||
end
|
|
||||||
|
|
||||||
def is64?
|
|
||||||
@is64
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def info_template(package, downloads)
|
|
||||||
downloads64, downloads32 = downloads.partition(&:is64?)
|
|
||||||
download32, md5sum32, download64, md5sum64 = download_entries downloads64, downloads32
|
|
||||||
|
|
||||||
<<~INFO_FILE
|
|
||||||
PRGNAM="#{package.name}"
|
|
||||||
VERSION="#{package.version}"
|
|
||||||
HOMEPAGE="#{package.homepage}"
|
|
||||||
DOWNLOAD="#{download32}"
|
|
||||||
MD5SUM="#{md5sum32}"
|
|
||||||
DOWNLOAD_x86_64="#{download64}"
|
|
||||||
MD5SUM_x86_64="#{md5sum64}"
|
|
||||||
REQUIRES="#{requires_entry package.requires}"
|
|
||||||
MAINTAINER="Eugene Wissner"
|
|
||||||
EMAIL="belka@caraus.de"
|
|
||||||
INFO_FILE
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def requires_entry(requires)
|
|
||||||
requires * ' '
|
|
||||||
end
|
|
||||||
|
|
||||||
def download_entries(downloads64, downloads32)
|
|
||||||
download32 =
|
|
||||||
if downloads32.empty? && !downloads64.empty?
|
|
||||||
'UNSUPPORTED'
|
|
||||||
else
|
|
||||||
downloads32.map(&:download) * " \\\n "
|
|
||||||
end
|
|
||||||
md5sum32 = downloads32.map(&:md5sum) * " \\\n "
|
|
||||||
download64 = downloads64.map(&:download) * " \\\n "
|
|
||||||
md5sum64 = downloads64.map(&:md5sum) * " \\\n "
|
|
||||||
|
|
||||||
[download32, md5sum32, download64, md5sum64]
|
|
||||||
end
|
end
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
# 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
|
|
||||||
|
|
||||||
require 'rake'
|
|
||||||
require_relative '../lib/download'
|
|
||||||
|
|
||||||
module SlackBuilder
|
|
||||||
module DmdTools
|
|
||||||
extend Rake::FileUtilsExt
|
|
||||||
|
|
||||||
def self.update_dmd(version)
|
|
||||||
tarball_name = "dmd.#{version}.linux.tar.xz"
|
|
||||||
|
|
||||||
uri = URI "http://downloads.dlang.org/releases/2.x/#{version}/#{tarball_name}"
|
|
||||||
checksum = SlackBuilder.download(uri, "slackbuilds/development/dmd/#{tarball_name}")
|
|
||||||
|
|
||||||
package = Package.new 'development/dmd', version: version,
|
|
||||||
homepage: 'https://dlang.org'
|
|
||||||
|
|
||||||
write_info package, downloads: [Download.new(uri.to_s, checksum)]
|
|
||||||
|
|
||||||
update_slackbuild_version 'development/dmd', package.version
|
|
||||||
commit 'development/dmd', version
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.update_tools(version, dub_version, dscanner_version, dcd_version)
|
|
||||||
checksum = collect_checksums(version, dub_version, dscanner_version, dcd_version)
|
|
||||||
|
|
||||||
package = Package.new 'development/d-tools',
|
|
||||||
version: version,
|
|
||||||
homepage: 'https://dlang.org',
|
|
||||||
requires: ['dmd']
|
|
||||||
|
|
||||||
write_tools_info package, dub_version, dscanner_version, dcd_version, checksum
|
|
||||||
update_tools_versions dub_version, dscanner_version, dcd_version
|
|
||||||
|
|
||||||
update_slackbuild_version 'development/d-tools', package.version
|
|
||||||
commit 'development/d-tools', package.version
|
|
||||||
end
|
|
||||||
|
|
||||||
private_class_method def self.write_tools_info(package, dub_version, dscanner_version, dcd_version, checksum)
|
|
||||||
write_info package,
|
|
||||||
downloads: [
|
|
||||||
Download.new(SlackBuilder.hosted_sources("/d-tools/dub-#{dub_version}.tar.gz"), checksum[:dub]),
|
|
||||||
Download.new(SlackBuilder.hosted_sources("/d-tools/tools-#{package.version}.tar.gz"), checksum[:tools]),
|
|
||||||
Download.new(
|
|
||||||
SlackBuilder.hosted_sources("/d-tools/D-Scanner-#{dscanner_version}.tar.xz"), checksum[:dscanner]
|
|
||||||
),
|
|
||||||
Download.new(SlackBuilder.hosted_sources("/d-tools/DCD-#{dcd_version}.tar.xz"), checksum[:dcd])
|
|
||||||
]
|
|
||||||
end
|
|
||||||
|
|
||||||
private_class_method def self.collect_checksums(version, dub_version, dscanner_version, dcd_version)
|
|
||||||
checksum = {}
|
|
||||||
|
|
||||||
uri = URI "https://codeload.github.com/dlang/tools/tar.gz/v#{version}"
|
|
||||||
checksum[:tools] = SlackBuilder.download_and_deploy uri, "development/d-tools/tools-#{version}.tar.gz"
|
|
||||||
|
|
||||||
uri = URI "https://codeload.github.com/dlang/dub/tar.gz/v#{dub_version}"
|
|
||||||
checksum[:dub] = SlackBuilder.download_and_deploy uri, "development/d-tools/dub-#{dub_version}.tar.gz"
|
|
||||||
|
|
||||||
checksum[:dscanner] = SlackBuilder.clone 'https://github.com/dlang-community/D-Scanner.git',
|
|
||||||
"development/d-tools/D-Scanner-#{dscanner_version}.tar.xz"
|
|
||||||
checksum[:dcd] = SlackBuilder.clone 'https://github.com/dlang-community/DCD.git',
|
|
||||||
"development/d-tools/DCD-#{dcd_version}.tar.xz"
|
|
||||||
|
|
||||||
checksum
|
|
||||||
end
|
|
||||||
|
|
||||||
private_class_method def self.update_tools_versions(dub_version, dscanner_version, dcd_version)
|
|
||||||
slackbuild_filename = 'slackbuilds/development/d-tools/d-tools.SlackBuild'
|
|
||||||
slackbuild_contents = File.read(slackbuild_filename)
|
|
||||||
.gsub(/^DUB_VERSION=\${DUB_VERSION:-.+/,
|
|
||||||
"DUB_VERSION=${DUB_VERSION:-#{dub_version}}")
|
|
||||||
.gsub(/^DSCANNER_VERSION=\${DSCANNER_VERSION:-.+/,
|
|
||||||
"DSCANNER_VERSION=${DSCANNER_VERSION:-#{dscanner_version}}")
|
|
||||||
.gsub(/^DCD_VERSION=\${DCD_VERSION:-.+/,
|
|
||||||
"DCD_VERSION=${DCD_VERSION:-#{dcd_version}}")
|
|
||||||
File.open(slackbuild_filename, 'w') { |file| file.puts slackbuild_contents }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,104 +0,0 @@
|
|||||||
# 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
|
|
||||||
|
|
||||||
require 'pathname'
|
|
||||||
|
|
||||||
namespace :hhvm do
|
|
||||||
def filter_set_hhvm_third_party_source_args(tokens)
|
|
||||||
args = tokens[0]
|
|
||||||
allowed_arguments = tokens[1..].each_slice(2)
|
|
||||||
.filter do |key, _value|
|
|
||||||
!key.end_with?('_URL') && !key.end_with?('_HASH')
|
|
||||||
end
|
|
||||||
|
|
||||||
allowed_arguments
|
|
||||||
.flatten
|
|
||||||
.prepend(" #{args}")
|
|
||||||
.join("\n ")
|
|
||||||
end
|
|
||||||
|
|
||||||
def split_set_hhvm_third_party_source_args(section_content)
|
|
||||||
section_content
|
|
||||||
.split("\n")
|
|
||||||
.map do |line|
|
|
||||||
hash_index = line.index '#'
|
|
||||||
line = line[...hash_index] unless hash_index.nil?
|
|
||||||
|
|
||||||
line.strip
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def rewrite_set_hhvm_third_party_source_args(contents)
|
|
||||||
set_hhvm_start = contents.index 'SET_HHVM_THIRD_PARTY_SOURCE_ARGS('
|
|
||||||
return nil if set_hhvm_start.nil?
|
|
||||||
|
|
||||||
section_contents = contents[set_hhvm_start + 'SET_HHVM_THIRD_PARTY_SOURCE_ARGS('.length..]
|
|
||||||
set_hhvm_end = section_contents.index ')'
|
|
||||||
|
|
||||||
lines = split_set_hhvm_third_party_source_args section_contents[...set_hhvm_end]
|
|
||||||
new_cmake_section = filter_set_hhvm_third_party_source_args lines.reject(&:blank?).join(' ').split
|
|
||||||
|
|
||||||
contents[...set_hhvm_start] +
|
|
||||||
"SET_HHVM_THIRD_PARTY_SOURCE_ARGS(\n#{new_cmake_section}\n)\n" +
|
|
||||||
section_contents[set_hhvm_end..]
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
|
||||||
rewritten_cmake = rewrite_set_hhvm_third_party_source_args contents
|
|
||||||
next if rewritten_cmake.nil?
|
|
||||||
|
|
||||||
puts Open3.capture2('diff', '-Nur', c_make_lists.to_path, '-', stdin_data: rewritten_cmake).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
|
|
Loading…
Reference in New Issue
Block a user