diff --git a/.gitignore b/.gitignore index 4733316..2a82511 100644 --- a/.gitignore +++ b/.gitignore @@ -238,3 +238,15 @@ /pcs-web-ui-0.1.20.tar.gz /pcs-web-ui-node-modules-0.1.20.tar.xz /pcs-0.11.8.tar.gz +/pcs-web-ui-0.1.20.tar.gz +/pcs-web-ui-node-modules-0.1.20.tar.xz +/ffi-1.17.0.gem +/mustermann-3.0.3.gem +/nio4r-2.7.4.gem +/puma-6.4.3.gem +/rack-3.1.8.gem +/rackup-2.2.1.gem +/tilt-2.4.0.gem +/pcs-web-ui-0.1.21.tar.gz +/pcs-web-ui-node-modules-0.1.21.tar.xz +/pcs-7096a208ff39419c5a733ec68e0fe85cbc1611db.tar.gz diff --git a/pcs.spec b/pcs.spec index 776d8c1..a8814fd 100644 --- a/pcs.spec +++ b/pcs.spec @@ -1,17 +1,16 @@ Name: pcs Version: 0.11.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 # GPL-2.0-only: pcs -# Apache-2.0: tornado # MIT: backports, childprocess, dacite, ethon, mustermann, rack, # rack-protection, rack-session, rack-test, rackup, sinatra, tilt # MIT and (BSD-2-Clause or GPL-2.0-or-later): nio4r -# BSD-2-Clause or Ruby: base64, ruby2_keywords, webrick +# BSD-2-Clause or Ruby: base64, ruby2_keywords # BSD-3-Clause: puma # BSD-3-Clause and MIT: ffi -License: GPL-2.0-only AND Apache-2.0 AND MIT AND BSD-3-Clause AND (BSD-2-Clause OR Ruby) AND (BSD-2-Clause OR GPL-2.0-or-later) +License: GPL-2.0-only AND MIT AND BSD-3-Clause AND (BSD-2-Clause OR Ruby) AND (BSD-2-Clause OR GPL-2.0-or-later) URL: https://github.com/ClusterLabs/pcs Group: System Environment/Base Summary: Pacemaker/Corosync Configuration System @@ -19,37 +18,35 @@ Summary: Pacemaker/Corosync Configuration System ExclusiveArch: i686 x86_64 s390x ppc64le aarch64 # When specifying a commit, use its long hash -%global version_or_commit %{version} -# %%global version_or_commit be17a9beeb9a55e0c10a34cce5672ebe793bf650 +# %%global version_or_commit %%{version} +%global version_or_commit 7096a208ff39419c5a733ec68e0fe85cbc1611db %global pcs_source_name %{name}-%{version_or_commit} # ui_commit can be determined by hash, tag or branch -%global ui_commit 0.1.20 -%global ui_modules_version 0.1.20 +%global ui_commit 0.1.21 +%global ui_modules_version 0.1.21 %global ui_src_name pcs-web-ui-%{ui_commit} %global pcs_snmp_pkg_name pcs-snmp %global pyagentx_version 0.4.pcs.2 -%global tornado_version 6.4.0 %global dacite_version 1.8.1 %global version_rubygem_backports 3.25.0 %global version_rubygem_base64 0.2.0 %global version_rubygem_childprocess 5.0.0 %global version_rubygem_ethon 0.16.0 -%global version_rubygem_ffi 1.16.3 -%global version_rubygem_mustermann 3.0.0 -%global version_rubygem_nio4r 2.7.3 -%global version_rubygem_puma 6.4.2 -%global version_rubygem_rack 3.0.11 +%global version_rubygem_ffi 1.17.0 +%global version_rubygem_mustermann 3.0.3 +%global version_rubygem_nio4r 2.7.4 +%global version_rubygem_puma 6.4.3 +%global version_rubygem_rack 3.1.8 %global version_rubygem_rack_protection 4.0.0 %global version_rubygem_rack_session 2.0.0 %global version_rubygem_rack_test 2.1.0 -%global version_rubygem_rackup 2.1.0 +%global version_rubygem_rackup 2.2.1 %global version_rubygem_ruby2_keywords 0.0.5 %global version_rubygem_sinatra 4.0.0 -%global version_rubygem_tilt 2.3.0 -%global version_rubygem_webrick 1.8.1 +%global version_rubygem_tilt 2.4.0 %global required_pacemaker_version 2.1.0 @@ -58,14 +55,6 @@ ExclusiveArch: i686 x86_64 s390x ppc64le aarch64 %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) -#mangling shebang in /usr/lib/pcsd/vendor/bundle/ruby/gems/rack-2.0.5/test/cgi/rackup_stub.rb from /usr/bin/env ruby to #!/usr/bin/ruby -#*** WARNING: ./usr/lib/pcsd/vendor/bundle/ruby/gems/rack-2.0.5/test/cgi/sample_rackup.ru is executable but has empty or no shebang, removing executable bit -#*** WARNING: ./usr/lib/pcsd/vendor/bundle/ruby/gems/rack-2.0.5/test/cgi/lighttpd.conf is executable but has empty or no shebang, removing executable bit -#*** ERROR: ambiguous python shebang in /usr/lib/pcsd/vendor/bundle/ruby/gems/ffi-1.9.25/ext/ffi_c/libffi/generate-darwin-source-and-headers.py: #!/usr/bin/env python. Change it to python3 (or python2) explicitly. -%undefine __brp_mangle_shebangs - # https://fedoraproject.org/wiki/Changes/Avoid_usr_bin_python_in_RPM_Build#Python_bytecompilation # Enforce python3 because bytecompilation of tornado produced warnings: # DEPRECATION WARNING: python2 invoked with /usr/bin/python. @@ -82,7 +71,6 @@ ExclusiveArch: i686 x86_64 s390x ppc64le aarch64 Source0: %{url}/archive/%{?v_prefix}%{version_or_commit}/%{pcs_source_name}.tar.gz 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 Source44: https://github.com/konradhalas/dacite/archive/v%{dacite_version}/dacite-%{dacite_version}.tar.gz Source81: https://rubygems.org/downloads/backports-%{version_rubygem_backports}.gem @@ -101,7 +89,6 @@ Source93: https://rubygems.org/downloads/ruby2_keywords-%{version_rubygem_ruby2_ Source94: https://rubygems.org/downloads/base64-%{version_rubygem_base64}.gem Source95: https://rubygems.org/downloads/rack-session-%{version_rubygem_rack_session}.gem Source96: https://rubygems.org/downloads/rackup-%{version_rubygem_rackup}.gem -Source97: https://rubygems.org/downloads/webrick-%{version_rubygem_webrick}.gem Source100: https://github.com/ClusterLabs/pcs-web-ui/archive/%{ui_commit}/%{ui_src_name}.tar.gz Source101: https://github.com/ClusterLabs/pcs-web-ui/releases/download/%{ui_commit}/pcs-web-ui-node-modules-%{ui_modules_version}.tar.xz @@ -117,6 +104,8 @@ Patch0: do-not-support-cluster-setup-with-udp-u-transport.patch BuildRequires: git-core # printf from coreutils is used in makefile, head is used in spec BuildRequires: coreutils +# find is used in Makefile and also somewhere else +BuildRequires: findutils # python for pcs BuildRequires: python3 >= 3.9 BuildRequires: python3-cryptography @@ -132,6 +121,7 @@ BuildRequires: python3-lxml BuildRequires: python3-wheel # for bundled python dateutil BuildRequires: python3-setuptools_scm +BuildRequires: python3-tornado # gcc for compiling custom rubygems BuildRequires: gcc BuildRequires: gcc-c++ @@ -177,7 +167,7 @@ Requires: python3-lxml Requires: python3-setuptools Requires: python3-pycurl Requires: python3-pyparsing -Requires: python3-cryptography +Requires: python3-tornado # ruby and gems for pcsd Requires: ruby >= 2.5 Requires: rubygems @@ -206,7 +196,6 @@ Requires: logrotate # for working with qdevice certificates (certutil) Requires: nss-tools -Provides: bundled(tornado) = %{tornado_version} Provides: bundled(dacite) = %{dacite_version} Provides: bundled(backports) = %{version_rubygem_backports} Provides: bundled(base64) = %{version_rubygem_base64} @@ -224,7 +213,6 @@ Provides: bundled(rackup) = %{version_rubygem_rackup} Provides: bundled(ruby2_keywords) = %{version_rubygem_ruby2_keywords} Provides: bundled(sinatra) = %{version_rubygem_sinatra} Provides: bundled(tilt) = %{version_rubygem_tilt} -Provides: bundled(webrick) = %{version_rubygem_webrick} %description pcs is a corosync and pacemaker configuration tool. It permits users to @@ -296,8 +284,22 @@ update_times_patch(){ # * http://ftp.rpm.org/max-rpm/s1-rpm-inside-macros.html # * https://rpm-software-management.github.io/rpm/manual/autosetup.html # patch web-ui sources -%autosetup -D -T -b 100 -a 101 -S git -n %{ui_src_name} -N -%autopatch -p1 -m 201 +# -q limits verbosity of %setup macro. Only tar -xof is executed instead of tar +# -xvvof. This option has to be used as first. +# This option is used to suppress a listing of all node_modules files that is +# too long and exceeds capacity of CI log +# -n — Set Name of Build Directory +# -T — Do Not Perform Default Archive Unpacking +# -b — Unpack The nth Sources Before Changing Directory +# -a — Unpack The nth Sources After Changing Directory +# +# 1. unpack sources (-b 0) +# 2. then cd into sources tree (the setup macro itself) +# 3. then unpack node_modules into sources tree (-a 1). +%setup -q -T -b 100 -a 101 -n %{ui_src_name} +# patching is handled by applying the individual patches +# %%patch -P201 + # update_times_patch %%{PATCH201} # patch pcs sources @@ -333,18 +335,17 @@ cp -f %SOURCE93 %{rubygem_cache_dir} cp -f %SOURCE94 %{rubygem_cache_dir} cp -f %SOURCE95 %{rubygem_cache_dir} cp -f %SOURCE96 %{rubygem_cache_dir} -cp -f %SOURCE97 %{rubygem_cache_dir} # 2) prepare python bundles mkdir -p %{pcs_bundled_dir}/src cp -f %SOURCE41 rpm/ -cp -f %SOURCE42 rpm/ cp -f %SOURCE44 rpm/ %build %define debug_package %{nil} +# We left off by setting up pcs, so we are in its directory now ./autogen.sh %{configure} --enable-local-build --enable-use-local-cache-only \ --enable-individual-bundling --with-pcsd-default-cipherlist='PROFILE=SYSTEM' \ @@ -352,25 +353,34 @@ cp -f %SOURCE44 rpm/ PYTHON=%{__python3} ruby_CFLAGS="%{optflags}" ruby_LIBS="%{build_ldflags}" make all -# build pcs-web-ui -BUILD_USE_CURRENT_NODE_MODULES=true make -C %{_builddir}/%{ui_src_name} build +# Web UI build +# Switch to web ui folder first +cd ../%{ui_src_name} +./autogen.sh +%{configure} \ + --disable-cockpit \ + --with-pcsd-webui-dir="%{_libdir}/%{pcsd_public_dir}/ui" +make all %install -rm -rf $RPM_BUILD_ROOT +rm -rf %{buildroot} pwd +# Install cockpit pcs-web-ui +cd ../%{ui_src_name} +%make_install + +# symlink favicon into pcsd directories +mkdir -p %{buildroot}%{_libdir}/%{pcsd_public_dir}/ui/static/media +ln -fs /etc/favicon.png %{buildroot}%{_libdir}/%{pcsd_public_dir}/ui/static/media/favicon.png + +# Install pcs +cd ../%{pcs_source_name} %make_install # RHEL-7716 - fix rubygem permissions - remove write access for owner's group # and other users -chmod --recursive g-w,o-w ${RPM_BUILD_ROOT}%{_libdir}/%{rubygem_bundle_dir} - -# install pcs-web-ui -cp -r %{_builddir}/%{ui_src_name}/build ${RPM_BUILD_ROOT}%{_libdir}/%{pcsd_public_dir}/ui - -# symlink favicon into pcsd directories -mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/%{pcsd_public_dir}/ui/static/media -ln -fs /etc/favicon.png ${RPM_BUILD_ROOT}%{_libdir}/%{pcsd_public_dir}/ui/static/media/favicon.png +chmod --recursive g-w,o-w %{buildroot}%{_libdir}/%{rubygem_bundle_dir} # prepare license files mv %{rubygem_bundle_dir}/gems/backports-%{version_rubygem_backports}/LICENSE.txt backports_LICENSE.txt @@ -392,15 +402,11 @@ mv %{rubygem_bundle_dir}/gems/rackup-%{version_rubygem_rackup}/license.md rackup mv %{rubygem_bundle_dir}/gems/ruby2_keywords-%{version_rubygem_ruby2_keywords}/LICENSE ruby2_keywords_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 -mv %{rubygem_bundle_dir}/gems/webrick-%{version_rubygem_webrick}/LICENSE.txt webrick_LICENSE.txt 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/dacite-*/LICENSE dacite_LICENSE cp %{pcs_bundled_dir}/src/dacite-*/README.md dacite_README.md @@ -412,14 +418,28 @@ cp %{pcs_bundled_dir}/src/dacite-*/README.md dacite_README.md find-debuginfo -j2 -m -i -S debugsourcefiles.list # find-debuginfo generated some files into /usr/lib/debug and # /usr/src/debug/ that we don't want in the package -rm -rf $RPM_BUILD_ROOT%{_libdir}/debug -rm -rf $RPM_BUILD_ROOT/usr/lib/debug -rm -rf $RPM_BUILD_ROOT%{_prefix}/src/debug +rm -rf %{buildroot}%{_libdir}/debug +rm -rf %{buildroot}/usr/lib/debug +rm -rf %{buildroot}%{_prefix}/src/debug # We can remove files required for gem compilation -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/nio4r-%{version_rubygem_nio4r}/ext -rm -rf $RPM_BUILD_ROOT%{_libdir}/%{rubygem_bundle_dir}/gems/puma-%{version_rubygem_puma}/ext +rm -rf %{buildroot}%{_libdir}/%{rubygem_bundle_dir}/gems/ffi-%{version_rubygem_ffi}/ext +rm -rf %{buildroot}%{_libdir}/%{rubygem_bundle_dir}/gems/nio4r-%{version_rubygem_nio4r}/ext +rm -rf %{buildroot}%{_libdir}/%{rubygem_bundle_dir}/gems/puma-%{version_rubygem_puma}/ext + +# Sinatra contains example applications which are unnecessary (discovered by brp_mangle_shebangs) +rm -rf %{buildroot}%{_libdir}/%{rubygem_bundle_dir}/gems/sinatra-%{version_rubygem_sinatra}/examples +rm -rf %{buildroot}%{_libdir}/%{rubygem_bundle_dir}/gems/sinatra-%{version_rubygem_sinatra}/examples + +# Puma contains an unnecessary rc init script (discovered by brp_mangle_shebangs) +rm -rf %{buildroot}%{_libdir}/%{rubygem_bundle_dir}/gems/puma-%{version_rubygem_puma}/docs/jungle/rc.d +rm -rf %{buildroot}%{_libdir}/%{rubygem_bundle_dir}/gems/puma-%{version_rubygem_puma}/docs/jungle/rc.d + +# Remove unused rubygem executables with wrong shebangs (discovered by brp_mangle_shebangs) +rm -fv %{buildroot}/%{_libdir}/pcsd/vendor/bundle/gems/puma-*/bin/puma +rm -fv %{buildroot}/%{_libdir}/pcsd/vendor/bundle/gems/puma-*/bin/pumactl +rm -fv %{buildroot}/%{_libdir}/pcsd/vendor/bundle/gems/rackup-*/bin/rackup +rm -fv %{buildroot}/%{_libdir}/pcsd/vendor/bundle/gems/tilt-*/bin/tilt %check # In the building environment LC_CTYPE is set to C which causes tests to fail @@ -447,8 +467,8 @@ run_all_tests(){ test_result_python=$? #run pcsd tests and remove them - GEM_HOME=$RPM_BUILD_ROOT%{_libdir}/%{rubygem_bundle_dir} ruby \ - -I$RPM_BUILD_ROOT%{_libdir}/pcsd \ + GEM_HOME=%{buildroot}%{_libdir}/%{rubygem_bundle_dir} ruby \ + -I%{buildroot}%{_libdir}/pcsd \ -Ipcsd/test \ pcsd/test/test_all_suite.rb test_result_ruby=$? @@ -493,9 +513,7 @@ run_all_tests %files %doc CHANGELOG.md %doc README.md -%doc tornado_README.rst %doc dacite_README.md -%license tornado_LICENSE %license dacite_LICENSE %license COPYING # rubygem licenses @@ -518,12 +536,12 @@ run_all_tests %license ruby2_keywords_LICENSE %license sinatra_LICENSE %license tilt_COPYING -%license webrick_LICENSE.txt %{python3_sitelib}/* %{_sbindir}/pcs %{_sbindir}/pcsd %{_libdir}/pcs/* %{_libdir}/pcsd/* +%{_libdir}/pkgconfig/pcs.pc %{_unitdir}/pcsd.service %{_unitdir}/pcsd-ruby.service %{_datadir}/bash-completion/completions/pcs @@ -559,6 +577,14 @@ run_all_tests %license pyagentx_LICENSE.txt %changelog +* Tue Nov 19 2024 Michal Pospisil - 0.11.8-2 +- Rebased to the latest sources (see CHANGELOG.md) + Resolves: RHEL-16232, RHEL-46284, RHEL-46286, RHEL-46293, RHEL-55441, RHEL-61738, RHEL-61901 +- Updated pcs-web-ui to 0.1.21 +- Updated bundled rubygems: ffi, mustermann, puma, rack, rackup, tilt +- Removed bundled rubygem webrick +- New runtime dependency python3-tornado which has been bundled in previous versions + * Tue Jul 9 2024 Michal Pospisil - 0.11.8-1 - Updated pcs-web-ui to 0.1.20 - Rebased to the latest sources (see CHANGELOG.md) diff --git a/sources b/sources index be29bf8..3d5a089 100644 --- a/sources +++ b/sources @@ -16,8 +16,13 @@ SHA512 (rack-protection-4.0.0.gem) = 5eb33e4829e5e0d320a14d169fd007111641e388f2b SHA512 (rack-session-2.0.0.gem) = 827cd1acf20eb814adda7663f61755febd2e6acec6ee085dbc393b614a621f845dffa8f759e434055dbf029be370afeb921c8759c9e9e1fee17119830d9b2899 SHA512 (rackup-2.1.0.gem) = f2b66902b04ddce5ca9389822118244c591b5c83766a55aee88550717c8e736b1eff967927b2c6c611205dde25bf5a862edfc587fda9cb88f31cc902171f85b1 SHA512 (sinatra-4.0.0.gem) = 1eb8c6e8966461d3fa463b5c87e8bc3cd58243fc997a104671e252b866bb653dfc16d7b9f677e016ae91cb30998d72f8778eb2b2254ce27cf304944a6bfa8c05 -SHA512 (webrick-1.8.1.gem) = 3bf45e3a52190dccaa6e883923448b745a420eff2a1533eacdd2aed0e4c67f5c6d813c85606f8fc12952c004e4984fd97ebc3c361a42b49cebe5b84c8fc6e99d -SHA512 (tornado-6.4.0.tar.gz) = dc584acc14d93c7109e4744b690641ae318ee9ad2c42a4c3560c315fa8654de3a64574c7187f5afdbde2906b7cccf5725f45462e710effb6f025e5ec1a3810d4 -SHA512 (pcs-web-ui-0.1.20.tar.gz) = 83117eafbe694b133228dfd8d7de30a7cc58693b8844f7d1af9c12c02618a7af8dd10c374b56c3e722d84c5691488f25bfc3389f22954935a2e6dd42b16c7b2c -SHA512 (pcs-web-ui-node-modules-0.1.20.tar.xz) = 94cd6a306a6784c3decc351b1469efe98beadd43efbfa7848ccc6146be32f704281432669589e2c666b431a32bd6caf101fa08fb05deaab2b58a8cda8b40b85d -SHA512 (pcs-0.11.8.tar.gz) = ee5db4c39bcbdf70d8c5ff3a6154f4020e9dbc1ea4d1f3986de927cf4c45c2b14e0b2e1c8eb2b5083701aa5095202e71c5359f6c4a196f7f14d5bf4881282800 +SHA512 (ffi-1.17.0.gem) = 5cdaf19eaa499127607de7389f69b4927c7bd8a154a53071c53906050bc712b67c1fbc7b4b37fcf9a82fa6c79d705796032cd7ab61755646cfed0c2d279940a1 +SHA512 (mustermann-3.0.3.gem) = d205985a5da83d83248899642ed359056b0cdb511e77d51309319c2f8d8b6c84040e9e1d3a56b7f83a0b26aed4b344f4df371b310e419c20170f0a486e89ba6f +SHA512 (nio4r-2.7.4.gem) = 6c8280484066ffc39e98b99dfaf5a69fe2a28cafb380924f448673fda8b69b5d97f8b75b8345b91d92f6186f0664e09bec8e1c7c19c070219b030f554824d2ac +SHA512 (puma-6.4.3.gem) = e8baf137c5164f11b8563561405fc4218210707bfb15d0f21118d4be0fd0d071050c46357337a9c6fdda7ce230f3ae09ebfe9976f0a7a0243824bda7871d7a18 +SHA512 (rack-3.1.8.gem) = 7d7b3d8d40c3afc184de90c7602385854bc890ec13c98029e31db0134dbebd7655425334249c908bdb9e5fd1f15754872064611bbf1317a46c6082fd7cdf9b9d +SHA512 (rackup-2.2.1.gem) = e63c4dee6f1a677d507df0ae7bcebec88673e7a0a8d6621997949045db60801907038a148a0608f6e62864cb2ac056fca382f3438dc227b0fa7a3be52d56ea66 +SHA512 (tilt-2.4.0.gem) = 8cf5036017f501da8843340a9c574ee647074782dcb27ee0aa906fb96ad1e66b90dfb80159aa4c5e7605490058c5ae478bd0fe09f17ae50a2697327d02c814cc +SHA512 (pcs-web-ui-0.1.21.tar.gz) = 7d619457ba0e104cb96552057fedcb8a80e95be9aedd0e7decf37af7d424c0177ef6a6c0864654d16a60275ab109e29fe9c4b4d84efb620c560bf988e6c5898d +SHA512 (pcs-web-ui-node-modules-0.1.21.tar.xz) = fb69949224b5637cf7e825b3bd9694c98667513f54c044d06911cce7964ccdcc66530d46b9289f24995abaff9dd6ed62a805ab926773c595c150a70a80cc989b +SHA512 (pcs-7096a208ff39419c5a733ec68e0fe85cbc1611db.tar.gz) = ec6dcdc294633e833c537d705ab090573c5da14ca2e5331dd0b021896bed3caf9c2cf1de862f27676d735b7d1822869e44f38aaa272c336ac63e4ffaae42a954