diff --git a/.gitignore b/.gitignore index 4d3a5d4..8a3aace 100644 --- a/.gitignore +++ b/.gitignore @@ -9,14 +9,15 @@ SOURCES/ffi-1.13.1.gem SOURCES/json-2.3.0.gem SOURCES/mustermann-1.1.1.gem SOURCES/open4-1.3.4-1.gem -SOURCES/pcs-0.10.8.tar.gz -SOURCES/pcs-web-ui-0.1.5.tar.gz -SOURCES/pcs-web-ui-node-modules-0.1.5.tar.xz +SOURCES/pcs-0.10.8.181-47e9.tar.gz +SOURCES/pcs-web-ui-0.1.6.tar.gz +SOURCES/pcs-web-ui-node-modules-0.1.6.tar.xz SOURCES/pyagentx-0.4.pcs.2.tar.gz SOURCES/python-dateutil-2.8.1.tar.gz SOURCES/rack-2.2.3.gem SOURCES/rack-protection-2.0.8.1.gem SOURCES/rack-test-1.1.0.gem +SOURCES/rexml-3.2.5.gem SOURCES/ruby2_keywords-0.0.2.gem SOURCES/sinatra-2.0.8.1.gem SOURCES/thin-1.7.2.gem diff --git a/.pcs.metadata b/.pcs.metadata index 1b31355..46ea0d8 100644 --- a/.pcs.metadata +++ b/.pcs.metadata @@ -9,14 +9,15 @@ cfa25e7a3760c3ec16723cb8263d9b7a52d0eadf SOURCES/ffi-1.13.1.gem 0230e8c5a37f1543982e5b04be503dd5f9004b47 SOURCES/json-2.3.0.gem 50a4e37904485810cb05e27d75c9783e5a8f3402 SOURCES/mustermann-1.1.1.gem 41a7fe9f8e3e02da5ae76c821b89c5b376a97746 SOURCES/open4-1.3.4-1.gem -0e6b705715023ec5224ca05e977b8888f2a1b1e6 SOURCES/pcs-0.10.8.tar.gz -f23b14786b1911d498612bf0e90f344bcc4915c3 SOURCES/pcs-web-ui-0.1.5.tar.gz -57beab1c4bed96d7f9fc35261e96f78babb06980 SOURCES/pcs-web-ui-node-modules-0.1.5.tar.xz +cda150aa3e2e5b5c84ec4f462914e167c6a2526c SOURCES/pcs-0.10.8.181-47e9.tar.gz +0d5a8c5f3c2888e19de1f7180401bbfcfd423e24 SOURCES/pcs-web-ui-0.1.6.tar.gz +3d401b7048e51cb097c3b55c77492e76dde1d443 SOURCES/pcs-web-ui-node-modules-0.1.6.tar.xz 3176b2f2b332c2b6bf79fe882e83feecf3d3f011 SOURCES/pyagentx-0.4.pcs.2.tar.gz bd26127e57f83a10f656b62c46524c15aeb844dd SOURCES/python-dateutil-2.8.1.tar.gz 345b7169d4d2d62176a225510399963bad62b68f SOURCES/rack-2.2.3.gem 1f046e23baca8beece3b38c60382f44aa2b2cb41 SOURCES/rack-protection-2.0.8.1.gem b80bc5ca38a885e747271675ba91dd3d02136bf1 SOURCES/rack-test-1.1.0.gem +e7f48fa5fb2d92e6cb21d6b1638fe41a5a7c4287 SOURCES/rexml-3.2.5.gem 0be571aacb5d6a212a30af3f322a7000d8af1ef9 SOURCES/ruby2_keywords-0.0.2.gem 04cca7a5d9d641fe076e4e24dc5b6ff31922f4c3 SOURCES/sinatra-2.0.8.1.gem 41395e86322ffd31f3a7aef1f697bda3e1e2d6b9 SOURCES/thin-1.7.2.gem diff --git a/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch b/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch index a0a7aab..112e1d0 100644 --- a/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch +++ b/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch @@ -1,19 +1,19 @@ -From ab9fd9f223e805247319ac5a7318c15417197a0a Mon Sep 17 00:00:00 2001 +From 34df297266fb33d2cc062f2a5a584183a450d763 Mon Sep 17 00:00:00 2001 From: Ivan Devat Date: Tue, 20 Nov 2018 15:03:56 +0100 -Subject: [PATCH] do not support cluster setup with udp(u) transport +Subject: [PATCH 2/2] do not support cluster setup with udp(u) transport --- - pcs/pcs.8 | 2 ++ + pcs/pcs.8.in | 2 ++ pcs/usage.py | 1 + pcsd/public/css/style.css | 3 +++ 3 files changed, 6 insertions(+) -diff --git a/pcs/pcs.8 b/pcs/pcs.8 -index edfdd039..8caf087f 100644 ---- a/pcs/pcs.8 -+++ b/pcs/pcs.8 -@@ -424,6 +424,8 @@ By default, encryption is enabled with cipher=aes256 and hash=sha256. To disable +diff --git a/pcs/pcs.8.in b/pcs/pcs.8.in +index 205fdc4e..dfa7f1ea 100644 +--- a/pcs/pcs.8.in ++++ b/pcs/pcs.8.in +@@ -420,6 +420,8 @@ By default, encryption is enabled with cipher=aes256 and hash=sha256. To disable Transports udp and udpu: .br @@ -23,10 +23,10 @@ index edfdd039..8caf087f 100644 .br Transport options are: ip_version, netmtu diff --git a/pcs/usage.py b/pcs/usage.py -index baedb347..f576eaf2 100644 +index cec99ef2..30515ebb 100644 --- a/pcs/usage.py +++ b/pcs/usage.py -@@ -852,6 +852,7 @@ Commands: +@@ -853,6 +853,7 @@ Commands: hash=sha256. To disable encryption, set cipher=none and hash=none. Transports udp and udpu: @@ -35,7 +35,7 @@ index baedb347..f576eaf2 100644 support traffic encryption nor compression. Transport options are: diff --git a/pcsd/public/css/style.css b/pcsd/public/css/style.css -index b857cbae..b8d48d92 100644 +index 2f26e831..a7702ac4 100644 --- a/pcsd/public/css/style.css +++ b/pcsd/public/css/style.css @@ -949,6 +949,9 @@ table.args-table td.reg { @@ -49,5 +49,5 @@ index b857cbae..b8d48d92 100644 #csetup-transport-options.knet .without-knet { -- -2.26.2 +2.31.1 diff --git a/SOURCES/fix-wrong-name-for-library-command.patch b/SOURCES/fix-wrong-name-for-library-command.patch new file mode 100644 index 0000000..f98d9a8 --- /dev/null +++ b/SOURCES/fix-wrong-name-for-library-command.patch @@ -0,0 +1,151 @@ +From 79570d1d344de985e40602d373eebcf6e94b83d9 Mon Sep 17 00:00:00 2001 +From: Ivan Devat +Date: Thu, 10 Jun 2021 14:52:15 +0200 +Subject: [PATCH 1/2] fix wrong name for library command + +--- + pcs/cli/common/lib_wrapper.py | 8 ++++---- + pcs/cli/constraint_colocation/command.py | 2 +- + pcs/cli/constraint_order/command.py | 4 +++- + pcs/cli/constraint_ticket/command.py | 4 ++-- + pcs_test/tier0/cli/common/test_lib_wrapper.py | 6 +++--- + pcs_test/tier0/cli/constraint_ticket/test_command.py | 8 ++++---- + 6 files changed, 17 insertions(+), 15 deletions(-) + +diff --git a/pcs/cli/common/lib_wrapper.py b/pcs/cli/common/lib_wrapper.py +index d9a6bd26..c41ce875 100644 +--- a/pcs/cli/common/lib_wrapper.py ++++ b/pcs/cli/common/lib_wrapper.py +@@ -230,7 +230,7 @@ def load_module(env, middleware_factory, name): + env, + middleware.build(middleware_factory.cib), + { +- "set": constraint_colocation.create_with_set, ++ "create_with_set": constraint_colocation.create_with_set, + "show": constraint_colocation.show, + }, + ) +@@ -240,7 +240,7 @@ def load_module(env, middleware_factory, name): + env, + middleware.build(middleware_factory.cib), + { +- "set": constraint_order.create_with_set, ++ "create_with_set": constraint_order.create_with_set, + "show": constraint_order.show, + }, + ) +@@ -250,9 +250,9 @@ def load_module(env, middleware_factory, name): + env, + middleware.build(middleware_factory.cib), + { +- "set": constraint_ticket.create_with_set, ++ "create_with_set": constraint_ticket.create_with_set, + "show": constraint_ticket.show, +- "add": constraint_ticket.create, ++ "create": constraint_ticket.create, + "remove": constraint_ticket.remove, + }, + ) +diff --git a/pcs/cli/constraint_colocation/command.py b/pcs/cli/constraint_colocation/command.py +index f5cf91ab..10539aa6 100644 +--- a/pcs/cli/constraint_colocation/command.py ++++ b/pcs/cli/constraint_colocation/command.py +@@ -18,7 +18,7 @@ def create_with_set(lib, argv, modifiers): + """ + modifiers.ensure_only_supported("-f", "--force") + command.create_with_set( +- lib.constraint_colocation.set, ++ lib.constraint_colocation.create_with_set, + argv, + modifiers, + ) +diff --git a/pcs/cli/constraint_order/command.py b/pcs/cli/constraint_order/command.py +index 04a49c8e..7251a4a7 100644 +--- a/pcs/cli/constraint_order/command.py ++++ b/pcs/cli/constraint_order/command.py +@@ -17,7 +17,9 @@ def create_with_set(lib, argv, modifiers): + * -f - CIB file + """ + modifiers.ensure_only_supported("--force", "-f") +- command.create_with_set(lib.constraint_order.set, argv, modifiers) ++ command.create_with_set( ++ lib.constraint_order.create_with_set, argv, modifiers ++ ) + + + def show(lib, argv, modifiers): +diff --git a/pcs/cli/constraint_ticket/command.py b/pcs/cli/constraint_ticket/command.py +index 7823981e..b4cd2bcd 100644 +--- a/pcs/cli/constraint_ticket/command.py ++++ b/pcs/cli/constraint_ticket/command.py +@@ -20,7 +20,7 @@ def create_with_set(lib, argv, modifiers): + """ + modifiers.ensure_only_supported("--force", "-f") + command.create_with_set( +- lib.constraint_ticket.set, ++ lib.constraint_ticket.create_with_set, + argv, + modifiers, + ) +@@ -50,7 +50,7 @@ def add(lib, argv, modifiers): + if resource_role: + options["rsc-role"] = resource_role + +- lib.constraint_ticket.add( ++ lib.constraint_ticket.create( + ticket, + resource_id, + options, +diff --git a/pcs_test/tier0/cli/common/test_lib_wrapper.py b/pcs_test/tier0/cli/common/test_lib_wrapper.py +index 3a8188c6..33538685 100644 +--- a/pcs_test/tier0/cli/common/test_lib_wrapper.py ++++ b/pcs_test/tier0/cli/common/test_lib_wrapper.py +@@ -25,8 +25,8 @@ class LibraryWrapperTest(TestCase): + mock_middleware_factory.cib = dummy_middleware + mock_middleware_factory.corosync_conf_existing = dummy_middleware + mock_env = mock.MagicMock() +- Library(mock_env, mock_middleware_factory).constraint_order.set( +- "first", second="third" +- ) ++ Library( ++ mock_env, mock_middleware_factory ++ ).constraint_order.create_with_set("first", second="third") + + mock_order_set.assert_called_once_with(lib_env, "first", second="third") +diff --git a/pcs_test/tier0/cli/constraint_ticket/test_command.py b/pcs_test/tier0/cli/constraint_ticket/test_command.py +index 118bfa22..ca4835c3 100644 +--- a/pcs_test/tier0/cli/constraint_ticket/test_command.py ++++ b/pcs_test/tier0/cli/constraint_ticket/test_command.py +@@ -24,12 +24,12 @@ class AddTest(TestCase): + ) + lib = mock.MagicMock() + lib.constraint_ticket = mock.MagicMock() +- lib.constraint_ticket.add = mock.MagicMock() ++ lib.constraint_ticket.create = mock.MagicMock() + + command.add(lib, ["argv"], _modifiers()) + + mock_parse_add.assert_called_once_with(["argv"]) +- lib.constraint_ticket.add.assert_called_once_with( ++ lib.constraint_ticket.create.assert_called_once_with( + "ticket", + "resource_id", + {"loss-policy": "fence"}, +@@ -60,12 +60,12 @@ class AddTest(TestCase): + ) + lib = mock.MagicMock() + lib.constraint_ticket = mock.MagicMock() +- lib.constraint_ticket.add = mock.MagicMock() ++ lib.constraint_ticket.create = mock.MagicMock() + + command.add(lib, ["argv"], _modifiers()) + + mock_parse_add.assert_called_once_with(["argv"]) +- lib.constraint_ticket.add.assert_called_once_with( ++ lib.constraint_ticket.create.assert_called_once_with( + "ticket", + "resource_id", + {"loss-policy": "fence", "rsc-role": "resource_role"}, +-- +2.31.1 + diff --git a/SOURCES/pcsd-bundle-config-2 b/SOURCES/pcsd-bundle-config-2 deleted file mode 100644 index c067a62..0000000 --- a/SOURCES/pcsd-bundle-config-2 +++ /dev/null @@ -1,5 +0,0 @@ ---- -BUNDLE_FROZEN: '1' -BUNDLE_PATH: vendor/bundle -BUNDLE_DISABLE_SHARED_GEMS: '1' -BUNDLE_BUILD: --with-ldflags="-Wl,-z,now -Wl,-z,relro" diff --git a/SPECS/pcs.spec b/SPECS/pcs.spec index 9725456..e6d6dbc 100644 --- a/SPECS/pcs.spec +++ b/SPECS/pcs.spec @@ -1,6 +1,6 @@ Name: pcs Version: 0.10.8 -Release: 1%{?dist} +Release: 2%{?dist} # https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/ # https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses # GPLv2: pcs @@ -12,21 +12,21 @@ Release: 1%{?dist} # (GPLv2 or Ruby) and BSD: thin # BSD or Ruby: open4, ruby2_keywords # BSD and MIT: ffi -License: GPLv2 and ASL 2.0 and MIT and BSD and (GPLv2 or Ruby) and (BSD or Ruby) and (ASL 2.0 or BSD) +License: GPLv2 and ASL 2.0 and MIT and BSD and (GPLv2 or Ruby) and (BSD or Ruby) and (ASL 2.0 or BSD). URL: https://github.com/ClusterLabs/pcs Group: System Environment/Base Summary: Pacemaker Configuration System #building only for architectures with pacemaker and corosync available ExclusiveArch: i686 x86_64 s390x ppc64le aarch64 -%global version_or_commit %{version} -# %%global version_or_commit 508b3999eb02b4901e83b8e780af8422b522ad30 +# %%global version_or_commit %%{version} +%global version_or_commit %{version}.181-47e9 %global pcs_source_name %{name}-%{version_or_commit} # ui_commit can be determined by hash, tag or branch -%global ui_commit 0.1.5 -%global ui_modules_version 0.1.5 +%global ui_commit 0.1.6 +%global ui_modules_version 0.1.6 %global ui_src_name pcs-web-ui-%{ui_commit} %global pcs_snmp_pkg_name pcs-snmp @@ -47,6 +47,7 @@ ExclusiveArch: i686 x86_64 s390x ppc64le aarch64 %global version_rubygem_rack 2.2.3 %global version_rubygem_rack_protection 2.0.8.1 %global version_rubygem_rack_test 1.1.0 +%global version_rubygem_rexml 3.2.5 %global version_rubygem_ruby2_keywords 0.0.2 %global version_rubygem_sinatra 2.0.8.1 %global version_rubygem_thin 1.7.2 @@ -55,20 +56,13 @@ ExclusiveArch: i686 x86_64 s390x ppc64le aarch64 # javascript bundled libraries for old web-ui %global ember_version 1.4.0 %global handlebars_version 1.2.1 -%global jquery_ui_version 1.10.1 -%global jquery_version 1.9.1 - -# We do not use _libdir macro because upstream is not prepared for it. -# Pcs does not include binaries and thus it should live in /usr/lib. Tornado -# and gems include binaries and thus it should live in /usr/lib64. But the -# path to tornado/gems is hardcoded in pcs sources. Modify hard links in pcs -# sources is not the way since then rpmdiff complains that the same file has -# different content in different architectures. -%global pcs_libdir %{_prefix}/lib -%global bundled_src_dir pcs/bundled +%global jquery_ui_version 1.12.1 +%global jquery_version 3.6.0 + +%global pcs_bundled_dir pcs_bundled %global pcsd_public_dir pcsd/public -%global rubygem_cache_dir pcsd/vendor/cache -%global rubygem_bundle_dir pcsd/vendor/bundle/ruby +%global rubygem_bundle_dir pcsd/vendor/bundle +%global rubygem_cache_dir %{rubygem_bundle_dir}/cache # mangling shebang in /usr/lib/pcsd/vendor/bundle/ruby/gems/rack-2.0.5/test/cgi/test from /usr/bin/env ruby to #!/usr/bin/ruby #*** ERROR: ./usr/lib/pcsd/vendor/bundle/ruby/gems/rack-2.0.5/test/cgi/test.ru has shebang which doesn't start with '/' (../../bin/rackup) @@ -87,7 +81,6 @@ ExclusiveArch: i686 x86_64 s390x ppc64le aarch64 Source0: %{url}/archive/%{version_or_commit}/%{pcs_source_name}.tar.gz Source1: HAM-logo.png -Source2: pcsd-bundle-config-2 Source41: https://github.com/ondrejmular/pyagentx/archive/v%{pyagentx_version}/pyagentx-%{pyagentx_version}.tar.gz Source42: https://github.com/tornadoweb/tornado/archive/v%{tornado_version}/tornado-%{tornado_version}.tar.gz @@ -99,6 +92,7 @@ Source81: https://rubygems.org/downloads/backports-%{version_rubygem_backports}. Source82: https://rubygems.org/downloads/ethon-%{version_rubygem_ethon}.gem Source83: https://rubygems.org/downloads/ffi-%{version_rubygem_ffi}.gem Source84: https://rubygems.org/downloads/json-%{version_rubygem_json}.gem +Source85: https://rubygems.org/downloads/rexml-%{version_rubygem_rexml}.gem Source86: https://rubygems.org/downloads/mustermann-%{version_rubygem_mustermann}.gem # We needed to re-upload open4 rubygem because of issues with sources in gating. # Unfortunately, there was no newer version available, therefore we had to @@ -122,6 +116,7 @@ Source101: https://github.com/idevat/pcs-web-ui/releases/download/%{ui_modules_v # Z-streams are exception here: they can come from upstream but should be # applied at the end to keep z-stream changes as straightforward as possible. # Patch1: bzNUMBER-01-name.patch +Patch1: fix-wrong-name-for-library-command.patch # Downstream patches do not come from upstream. They adapt pcs for specific # RHEL needs. @@ -136,7 +131,12 @@ BuildRequires: platform-python BuildRequires: python3-devel BuildRequires: platform-python-setuptools BuildRequires: python3-pycurl +BuildRequires: python3-pip BuildRequires: python3-pyparsing +BuildRequires: python3-cryptography +BuildRequires: python3-lxml +# for building bundled python packages +BuildRequires: python3-wheel # for bundled python dateutil BuildRequires: python3-setuptools_scm # gcc for compiling custom rubygems @@ -146,15 +146,13 @@ BuildRequires: gcc-c++ BuildRequires: ruby >= 2.2.0 BuildRequires: ruby-devel BuildRequires: rubygems +BuildRequires: rubygem-bundler # ruby libraries for tests BuildRequires: rubygem-test-unit # for touching patch files (sanitization function) BuildRequires: diffstat # for post, preun and postun macros BuildRequires: systemd -# for tests -BuildRequires: python3-lxml -BuildRequires: python3-pyOpenSSL # pcsd fonts and font management tools for creating symlinks to fonts BuildRequires: fontconfig BuildRequires: liberation-sans-fonts @@ -166,6 +164,15 @@ BuildRequires: redhat-logos # for building web ui BuildRequires: npm +# cluster stack packages for pkg-config +BuildRequires: booth +BuildRequires: corosync-qdevice-devel +BuildRequires: corosynclib-devel >= 3.0 +BuildRequires: fence-agents-common +BuildRequires: pacemaker-libs-devel >= 2.0.0 +BuildRequires: resource-agents +BuildRequires: sbd + # python and libraries for pcs, setuptools for pcs entrypoint Requires: platform-python Requires: python3-lxml @@ -173,14 +180,12 @@ Requires: platform-python-setuptools Requires: python3-clufter => 0.70.0 Requires: python3-pycurl Requires: python3-pyparsing +Requires: python3-cryptography # ruby and gems for pcsd Requires: ruby >= 2.2.0 Requires: rubygems # for killall Requires: psmisc -# for working with certificates (validation etc.) -Requires: openssl -Requires: python3-pyOpenSSL # cluster stack and related packages Requires: pcmk-cluster-manager >= 2.0.0 Suggests: pacemaker @@ -218,6 +223,7 @@ Provides: bundled(open4) = %{version_rubygem_open4} Provides: bundled(rack) = %{version_rubygem_rack} Provides: bundled(rack_protection) = %{version_rubygem_rack_protection} Provides: bundled(rack_test) = %{version_rubygem_rack_test} +Provides: bundled(rexml) = %{version_rubygem_rexml} Provides: bundled(ruby2_keywords) = %{version_rubygem_ruby2_keywords} Provides: bundled(sinatra) = %{version_rubygem_sinatra} Provides: bundled(thin) = %{version_rubygem_thin} @@ -240,7 +246,7 @@ Summary: Pacemaker cluster SNMP agent # https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses # GPLv2: pcs # BSD-2-Clause: pyagentx -License: GPLv2 and BSD-2-Clause +License: GPLv2 and BSD-2-Clause. URL: https://github.com/ClusterLabs/pcs # tar for unpacking pyagetx source tar ball @@ -297,10 +303,10 @@ update_times_patch(){ update_times ${patch_file_name} `diffstat -p1 -l ${patch_file_name}` } -# update_times_patch %%{PATCH1} +update_times_patch %{PATCH1} update_times_patch %{PATCH101} -cp -f %SOURCE1 pcsd/public/images +cp -f %SOURCE1 %{pcsd_public_dir}/images # prepare dirs/files necessary for building web ui # inside SOURCE100 is only directory %%{ui_src_name} tar -xzf %SOURCE100 -C %{pcsd_public_dir} @@ -308,104 +314,54 @@ tar -xf %SOURCE101 -C %{pcsd_public_dir}/%{ui_src_name} # prepare dirs/files necessary for building all bundles # ----------------------------------------------------- -# 1) configuration for rubygems -mkdir -p pcsd/.bundle -cp -f %SOURCE2 pcsd/.bundle/config - -# 2) rubygems sources -mkdir -p pcsd/vendor/cache -cp -f %SOURCE81 pcsd/vendor/cache -cp -f %SOURCE82 pcsd/vendor/cache -cp -f %SOURCE83 pcsd/vendor/cache -cp -f %SOURCE84 pcsd/vendor/cache -cp -f %SOURCE86 pcsd/vendor/cache +# 1) rubygems sources + +mkdir -p %{rubygem_cache_dir} +cp -f %SOURCE81 %{rubygem_cache_dir} +cp -f %SOURCE82 %{rubygem_cache_dir} +cp -f %SOURCE83 %{rubygem_cache_dir} +cp -f %SOURCE84 %{rubygem_cache_dir} +cp -f %SOURCE85 %{rubygem_cache_dir} +cp -f %SOURCE86 %{rubygem_cache_dir} # For reason why we are renaming open4 rubygem, see comment of source # definition above. -cp -f %SOURCE87 pcsd/vendor/cache/open4-%{version_rubygem_open4}.gem -cp -f %SOURCE88 pcsd/vendor/cache -cp -f %SOURCE89 pcsd/vendor/cache -cp -f %SOURCE90 pcsd/vendor/cache -cp -f %SOURCE91 pcsd/vendor/cache -cp -f %SOURCE92 pcsd/vendor/cache -cp -f %SOURCE93 pcsd/vendor/cache -cp -f %SOURCE94 pcsd/vendor/cache -cp -f %SOURCE95 pcsd/vendor/cache -cp -f %SOURCE96 pcsd/vendor/cache - - -# 3) dir for python bundles -mkdir -p %{bundled_src_dir} - -# 4) sources for pyagentx -tar -xzf %SOURCE41 -C %{bundled_src_dir} -mv %{bundled_src_dir}/pyagentx-%{pyagentx_version} %{bundled_src_dir}/pyagentx -update_times %SOURCE41 `find %{bundled_src_dir}/pyagentx -follow` -cp %{bundled_src_dir}/pyagentx/LICENSE.txt pyagentx_LICENSE.txt -cp %{bundled_src_dir}/pyagentx/CONTRIBUTORS.txt pyagentx_CONTRIBUTORS.txt -cp %{bundled_src_dir}/pyagentx/README.md pyagentx_README.md - -# 5) sources for tornado -tar -xzf %SOURCE42 -C %{bundled_src_dir} -mv %{bundled_src_dir}/tornado-%{tornado_version} %{bundled_src_dir}/tornado -update_times %SOURCE42 `find %{bundled_src_dir}/tornado -follow` -cp %{bundled_src_dir}/tornado/LICENSE tornado_LICENSE -cp %{bundled_src_dir}/tornado/README.rst tornado_README.rst - -# 6) sources for python dataclasses -tar -xzf %SOURCE43 -C %{bundled_src_dir} -mv %{bundled_src_dir}/dataclasses-%{dataclasses_version} %{bundled_src_dir}/dataclasses -update_times %SOURCE43 `find %{bundled_src_dir}/dataclasses -follow` -cp %{bundled_src_dir}/dataclasses/LICENSE.txt dataclasses_LICENSE.txt -cp %{bundled_src_dir}/dataclasses/README.rst dataclasses_README.rst - -# 7) sources for python dacite -tar -xzf %SOURCE44 -C %{bundled_src_dir} -mv %{bundled_src_dir}/dacite-%{dacite_version} %{bundled_src_dir}/dacite -update_times %SOURCE44 `find %{bundled_src_dir}/dacite -follow` -cp %{bundled_src_dir}/dacite/LICENSE dacite_LICENSE -cp %{bundled_src_dir}/dacite/README.md dacite_README.md - -# 8) sources for python dateutil -tar -xzf %SOURCE45 -C %{bundled_src_dir} -mv %{bundled_src_dir}/python-dateutil-%{dateutil_version} %{bundled_src_dir}/python-dateutil -update_times %SOURCE45 `find %{bundled_src_dir}/python-dateutil -follow` -cp %{bundled_src_dir}/python-dateutil/LICENSE dateutil_LICENSE -cp %{bundled_src_dir}/python-dateutil/README.rst dateutil_README.rst +cp -f %SOURCE87 %{rubygem_cache_dir}/open4-%{version_rubygem_open4}.gem +cp -f %SOURCE88 %{rubygem_cache_dir} +cp -f %SOURCE89 %{rubygem_cache_dir} +cp -f %SOURCE90 %{rubygem_cache_dir} +cp -f %SOURCE91 %{rubygem_cache_dir} +cp -f %SOURCE92 %{rubygem_cache_dir} +cp -f %SOURCE93 %{rubygem_cache_dir} +cp -f %SOURCE94 %{rubygem_cache_dir} +cp -f %SOURCE95 %{rubygem_cache_dir} +cp -f %SOURCE96 %{rubygem_cache_dir} + + +# 2) prepare python bundles +mkdir -p %{pcs_bundled_dir}/src +cp -f %SOURCE41 rpm/ +cp -f %SOURCE42 rpm/ +cp -f %SOURCE43 rpm/ +cp -f %SOURCE44 rpm/ +cp -f %SOURCE45 rpm/ %build %define debug_package %{nil} +./autogen.sh +%{configure} --enable-local-build --enable-use-local-cache-only PYTHON=%{__python3} +make all + %install rm -rf $RPM_BUILD_ROOT pwd -# build bundled rubygems (in main install it is disabled by BUILD_GEMS=false) -mkdir -p %{rubygem_bundle_dir} -# The '-g' cflags option is needed for generation of MiniDebugInfo for shared -# libraries from rubygem extensions -# Currently used rubygems with extensions: eventmachine, ffi, json, thin -# There was rpmdiff issue with missing .gnu_debugdata section -# see https://docs.engineering.redhat.com/display/HTD/rpmdiff-elf-stripping -gem install \ - --force --verbose --no-rdoc --no-ri -l --no-user-install \ - -i %{rubygem_bundle_dir} \ - %{rubygem_cache_dir}/backports-%{version_rubygem_backports}.gem \ - %{rubygem_cache_dir}/daemons-%{version_rubygem_daemons}.gem \ - %{rubygem_cache_dir}/ethon-%{version_rubygem_ethon}.gem \ - %{rubygem_cache_dir}/eventmachine-%{version_rubygem_eventmachine}.gem \ - %{rubygem_cache_dir}/ffi-%{version_rubygem_ffi}.gem \ - %{rubygem_cache_dir}/json-%{version_rubygem_json}.gem \ - %{rubygem_cache_dir}/mustermann-%{version_rubygem_mustermann}.gem \ - %{rubygem_cache_dir}/open4-%{version_rubygem_open4}.gem \ - %{rubygem_cache_dir}/rack-protection-%{version_rubygem_rack_protection}.gem \ - %{rubygem_cache_dir}/rack-test-%{version_rubygem_rack_test}.gem \ - %{rubygem_cache_dir}/rack-%{version_rubygem_rack}.gem \ - %{rubygem_cache_dir}/ruby2_keywords-%{version_rubygem_ruby2_keywords}.gem \ - %{rubygem_cache_dir}/sinatra-%{version_rubygem_sinatra}.gem \ - %{rubygem_cache_dir}/thin-%{version_rubygem_thin}.gem \ - %{rubygem_cache_dir}/tilt-%{version_rubygem_tilt}.gem \ - -- '--with-ldflags="-Wl,-z,relro -Wl,-z,ibt -Wl,-z,now -Wl,--gc-sections"' \ - '--with-cflags="-g -O2 -ffunction-sections"' +%make_install + +# build web ui and put it to pcsd +make -C %{pcsd_public_dir}/%{ui_src_name} build +mv %{pcsd_public_dir}/%{ui_src_name}/build ${RPM_BUILD_ROOT}%{_libdir}/%{pcsd_public_dir}/ui +rm -r %{pcsd_public_dir}/%{ui_src_name} # prepare license files # some rubygems do not have a license file (ruby2_keywords, thin) @@ -426,36 +382,25 @@ mv %{rubygem_bundle_dir}/gems/rack-test-%{version_rubygem_rack_test}/MIT-LICENSE mv %{rubygem_bundle_dir}/gems/sinatra-%{version_rubygem_sinatra}/LICENSE sinatra_LICENSE mv %{rubygem_bundle_dir}/gems/tilt-%{version_rubygem_tilt}/COPYING tilt_COPYING -# build web ui and put it to pcsd -make -C %{pcsd_public_dir}/%{ui_src_name} build -mv %{pcsd_public_dir}/%{ui_src_name}/build pcsd/public/ui -rm -r %{pcsd_public_dir}/%{ui_src_name} +# symlink favicon into pcsd directories +ln -fs /etc/favicon.png ${RPM_BUILD_ROOT}%{_libdir}/%{pcsd_public_dir}/images/favicon.png -# main pcs install -make install \ - DESTDIR=$RPM_BUILD_ROOT \ - PREFIX=%{_prefix} \ - SYSTEMD_UNIT_DIR=%{_unitdir} \ - LIB_DIR=%{pcs_libdir} \ - PYTHON=%{__python3} \ - PYTHON_SITELIB=%{python3_sitelib} \ - BASH_COMPLETION_DIR=%{_datadir}/bash-completion/completions \ - BUNDLE_PYAGENTX_SRC_DIR=`readlink -f %{bundled_src_dir}/pyagentx` \ - BUNDLE_TORNADO_SRC_DIR=`readlink -f %{bundled_src_dir}/tornado` \ - BUNDLE_DACITE_SRC_DIR=`readlink -f %{bundled_src_dir}/dacite` \ - BUNDLE_DATEUTIL_SRC_DIR=`readlink -f %{bundled_src_dir}/python-dateutil` \ - BUNDLE_DATACLASSES_SRC_DIR=`readlink -f %{bundled_src_dir}/dataclasses` \ - BUILD_GEMS=false \ - SYSTEMCTL_OVERRIDE=true \ - hdrdir="%{_includedir}" \ - rubyhdrdir="%{_includedir}" \ - includedir="%{_includedir}" -# symlink favicon into pcsd directories -ln -fs /etc/favicon.png ${RPM_BUILD_ROOT}%{pcs_libdir}/%{pcsd_public_dir}/images/favicon.png +cp %{pcs_bundled_dir}/src/pyagentx-*/LICENSE.txt pyagentx_LICENSE.txt +cp %{pcs_bundled_dir}/src/pyagentx-*/CONTRIBUTORS.txt pyagentx_CONTRIBUTORS.txt +cp %{pcs_bundled_dir}/src/pyagentx-*/README.md pyagentx_README.md + +cp %{pcs_bundled_dir}/src/tornado-*/LICENSE tornado_LICENSE +cp %{pcs_bundled_dir}/src/tornado-*/README.rst tornado_README.rst + +cp %{pcs_bundled_dir}/src/dataclasses-*/LICENSE.txt dataclasses_LICENSE.txt +cp %{pcs_bundled_dir}/src/dataclasses-*/README.rst dataclasses_README.rst + +cp %{pcs_bundled_dir}/src/dacite-*/LICENSE dacite_LICENSE +cp %{pcs_bundled_dir}/src/dacite-*/README.md dacite_README.md -#after the ruby gem compilation we do not need ruby gems in the cache -rm -r -v $RPM_BUILD_ROOT%{pcs_libdir}/%{rubygem_cache_dir} +cp %{pcs_bundled_dir}/src/python-dateutil-*/LICENSE dateutil_LICENSE +cp %{pcs_bundled_dir}/src/python-dateutil-*/README.rst dateutil_README.rst # We are not building debug package for pcs but we need to add MiniDebuginfo # to the bundled shared libraries from rubygem extensions in order to satisfy @@ -465,14 +410,15 @@ rm -r -v $RPM_BUILD_ROOT%{pcs_libdir}/%{rubygem_cache_dir} /usr/lib/rpm/find-debuginfo.sh -j2 -m -i -S debugsourcefiles.list # find-debuginfo.sh generated some files into /usr/lib/debug and # /usr/src/debug/ that we don't want in the package -rm -rf $RPM_BUILD_ROOT%{pcs_libdir}/debug +rm -rf $RPM_BUILD_ROOT%{_libdir}/debug +rm -rf $RPM_BUILD_ROOT/usr/lib/debug rm -rf $RPM_BUILD_ROOT%{_prefix}/src/debug # We can remove files required for gem compilation -rm -rf $RPM_BUILD_ROOT%{pcs_libdir}/%{rubygem_bundle_dir}/gems/eventmachine-%{version_rubygem_eventmachine}/ext -rm -rf $RPM_BUILD_ROOT%{pcs_libdir}/%{rubygem_bundle_dir}/gems/ffi-%{version_rubygem_ffi}/ext -rm -rf $RPM_BUILD_ROOT%{pcs_libdir}/%{rubygem_bundle_dir}/gems/json-%{version_rubygem_json}/ext -rm -rf $RPM_BUILD_ROOT%{pcs_libdir}/%{rubygem_bundle_dir}/gems/thin-%{version_rubygem_thin}/ext +rm -rf $RPM_BUILD_ROOT%{_libdir}/%{rubygem_bundle_dir}/gems/eventmachine-%{version_rubygem_eventmachine}/ext +rm -rf $RPM_BUILD_ROOT%{_libdir}/%{rubygem_bundle_dir}/gems/ffi-%{version_rubygem_ffi}/ext +rm -rf $RPM_BUILD_ROOT%{_libdir}/%{rubygem_bundle_dir}/gems/json-%{version_rubygem_json}/ext +rm -rf $RPM_BUILD_ROOT%{_libdir}/%{rubygem_bundle_dir}/gems/thin-%{version_rubygem_thin}/ext %check # In the building environment LC_CTYPE is set to C which causes tests to fail @@ -495,8 +441,7 @@ run_all_tests(){ # passing outside the mock environment. # TODO: Investigate the issue - BUNDLED_LIB_LOCATION=$RPM_BUILD_ROOT%{pcs_libdir}/pcs/bundled/packages \ - %{__python3} pcs_test/suite.py --tier0 -v --vanilla --all-but \ + %{__python3} pcs_test/suite --tier0 -v --vanilla --all-but \ pcs_test.tier0.lib.commands.test_resource_agent.DescribeAgentUtf8.test_describe \ pcs_test.tier0.daemon.app.test_app_remote.SyncConfigMutualExclusive.test_get_not_locked \ pcs_test.tier0.daemon.app.test_app_remote.SyncConfigMutualExclusive.test_post_not_locked \ @@ -504,11 +449,10 @@ run_all_tests(){ test_result_python=$? #run pcsd tests and remove them - pcsd_dir=$RPM_BUILD_ROOT%{pcs_libdir}/pcsd - GEM_HOME=$RPM_BUILD_ROOT%{pcs_libdir}/%{rubygem_bundle_dir} ruby \ - -I${pcsd_dir} \ - -I${pcsd_dir}/test \ - ${pcsd_dir}/test/test_all_suite.rb + GEM_HOME=$RPM_BUILD_ROOT%{_libdir}/%{rubygem_bundle_dir} ruby \ + -I$RPM_BUILD_ROOT%{_libdir}/pcsd \ + -Ipcsd/test \ + pcsd/test/test_all_suite.rb test_result_ruby=$? if [ $test_result_python -ne 0 ]; then @@ -518,12 +462,8 @@ run_all_tests(){ } remove_all_tests() { - pcsd_dir=$RPM_BUILD_ROOT%{pcs_libdir}/pcsd - #remove pcsd tests, we do not distribute them in the rpm - rm -r -v ${pcsd_dir}/test - # remove javascript testing files - rm -r -v ${pcsd_dir}/public/js/dev + rm -r -v $RPM_BUILD_ROOT%{_libdir}/%{pcsd_public_dir}/js/dev } run_all_tests @@ -587,19 +527,11 @@ remove_all_tests %license rack-test_MIT-LICENSE.txt %license sinatra_LICENSE %license tilt_COPYING -%{python3_sitelib}/pcs -%{python3_sitelib}/pcs-%{version}-py3.*.egg-info +%{python3_sitelib}/* %{_sbindir}/pcs %{_sbindir}/pcsd -%{pcs_libdir}/pcs/pcs_internal -%{pcs_libdir}/pcsd/* -%{pcs_libdir}/pcsd/.bundle/config -%{pcs_libdir}/pcs/bundled/packages/tornado* -%{pcs_libdir}/pcs/bundled/packages/dacite* -%{pcs_libdir}/pcs/bundled/packages/dataclasses* -%{pcs_libdir}/pcs/bundled/packages/dateutil* -%{pcs_libdir}/pcs/bundled/packages/python_dateutil* -%{pcs_libdir}/pcs/bundled/packages/__pycache__/dataclasses.cpython-36.pyc +%{_libdir}/pcs/* +%{_libdir}/pcsd/* %{_unitdir}/pcsd.service %{_unitdir}/pcsd-ruby.service %{_datadir}/bash-completion/completions/pcs @@ -617,22 +549,13 @@ remove_all_tests %ghost %config(noreplace) %attr(0644,root,root) %{_sharedstatedir}/pcsd/pcs_users.conf %{_mandir}/man8/pcs.* %{_mandir}/man8/pcsd.* -%exclude %{pcs_libdir}/pcsd/*.debian -%exclude %{pcs_libdir}/pcsd/pcsd.service -%exclude %{pcs_libdir}/pcsd/pcsd-ruby.service -%exclude %{pcs_libdir}/pcsd/pcsd.conf -%exclude %{pcs_libdir}/pcsd/pcsd.8 -%exclude %{pcs_libdir}/pcsd/public/js/dev/* -%exclude %{pcs_libdir}/pcsd/Gemfile -%exclude %{pcs_libdir}/pcsd/Gemfile.lock -%exclude %{pcs_libdir}/pcsd/Makefile -%exclude %{python3_sitelib}/pcs/bash_completion -%exclude %{python3_sitelib}/pcs/pcs.8 -%exclude %{python3_sitelib}/pcs/pcs +%exclude %{_libdir}/pcs/pcs_snmp_agent +%exclude %{_libdir}/pcs/%{pcs_bundled_dir}/packages/pyagentx* + %files -n %{pcs_snmp_pkg_name} -%{pcs_libdir}/pcs/pcs_snmp_agent -%{pcs_libdir}/pcs/bundled/packages/pyagentx* +%{_libdir}/pcs/pcs_snmp_agent +%{_libdir}/pcs/%{pcs_bundled_dir}/packages/pyagentx* %{_unitdir}/pcs_snmp_agent.service %{_datadir}/snmp/mibs/PCMK-PCS*-MIB.txt %{_mandir}/man8/pcs_snmp_agent.* @@ -644,6 +567,11 @@ remove_all_tests %license pyagentx_LICENSE.txt %changelog +* Thu Jun 10 2021 Miroslav Lisik - 0.10.8-2 +- Rebased to latest upstream sources (see CHANGELOG.md) +- Updated pcs-web-ui +- Resolves: rhbz#1285269 rhbz#1290830 rhbz#1720221 rhbz#1841019 rhbz#1854238 rhbz#1882291 rhbz#1885302 rhbz#1886342 rhbz#1896458 rhbz#1922996 rhbz#1927384 rhbz#1927394 rhbz#1930886 rhbz#1935594 + * Mon Feb 01 2021 Miroslav Lisik - 0.10.8-1 - Rebased to latest upstream sources (see CHANGELOG.md) - Updated pcs-web-ui