| # -*- ruby -*- |
| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| require_relative "../helper" |
| require_relative "../package-task" |
| |
| class ApacheArrowReleasePackageTask < PackageTask |
| include Helper::ApacheArrow |
| |
| def initialize |
| release_time = detect_release_time |
| super("apache-arrow-release", |
| detect_version(release_time), |
| release_time, |
| :rc_build_type => :release) |
| end |
| |
| private |
| def repo_path |
| "#{yum_dir}/Apache-Arrow.repo" |
| end |
| |
| def define_archive_task |
| file @archive_name => [repo_path] do |
| rm_rf(@archive_base_name) |
| mkdir(@archive_base_name) |
| keys_path = "#{@archive_base_name}/KEYS" |
| download("https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/KEYS", |
| keys_path) |
| keys = File.read(keys_path, encoding: "UTF-8") |
| File.open(keys_path, "w") do |keys_file| |
| is_ed25519_key = false |
| deny_lists = [ |
| # "rpmkeys --import" reports error for these keys. |
| # It seems that a subkey of this key may be related. (Is SHA1 bad?) |
| "8CAAD602", |
| # https://github.com/apache/arrow/issues/15007 |
| # It seems that a subkey of this key may be related. |
| "B90EB64A3AF15545EC8A7B8803F0D5EA3790810C", |
| ] |
| is_denied_key = false |
| keys.each_line do |line| |
| case line.chomp |
| when /\Apub\s+ed25519\s/ |
| is_ed25519_key = true |
| next |
| when /\Apub\s+[^\/]+\/([\h]+)\s/ |
| short_finger_print = $1 |
| if deny_lists.include?(short_finger_print) |
| is_denied_key = true |
| next |
| end |
| when /\A\s+([\h]+)$/ |
| long_finger_print = $1 |
| if deny_lists.include?(long_finger_print) |
| is_denied_key = true |
| next |
| end |
| when "-----END PGP PUBLIC KEY BLOCK-----" |
| if is_ed25519_key |
| is_ed25519_key = false |
| next |
| end |
| if is_denied_key |
| is_denied_key = false |
| next |
| end |
| else |
| next if is_ed25519_key |
| next if is_denied_key |
| end |
| keys_file.print(line) |
| end |
| end |
| cp(repo_path, @archive_base_name) |
| sh("tar", "czf", @archive_name, @archive_base_name) |
| rm_rf(@archive_base_name) |
| end |
| |
| if rpm_archive_name != @archive_name |
| file rpm_archive_name => @archive_name do |
| sh("tar", "xf", @archive_name) |
| rpm_archive_base_name = File.basename(rpm_archive_name, ".tar.gz") |
| mv(@archive_base_name, rpm_archive_base_name) |
| sh("tar", "czf", rpm_archive_name, rpm_archive_base_name) |
| rm_rf(rpm_archive_base_name) |
| end |
| end |
| end |
| |
| def enable_apt? |
| false |
| end |
| end |
| |
| task = ApacheArrowReleasePackageTask.new |
| task.define |