Skip to content

Commit

Permalink
Add rubygems for profiling and performance analyzing
Browse files Browse the repository at this point in the history
  • Loading branch information
m-bucher committed Nov 7, 2023
1 parent e7442c8 commit 9bb5f38
Show file tree
Hide file tree
Showing 10 changed files with 283 additions and 16 deletions.
20 changes: 13 additions & 7 deletions comps/comps-foreman-el8.xml
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@
<packagereq type="default">rubygem-mail</packagereq>
<packagereq type="default">rubygem-marcel</packagereq>
<packagereq type="default">rubygem-memoist</packagereq>
<packagereq type="default">rubygem-memory_profiler</packagereq>
<packagereq type="default">rubygem-method_source</packagereq>
<packagereq type="default">rubygem-mime-types</packagereq>
<packagereq type="default">rubygem-mime-types-data</packagereq>
Expand Down Expand Up @@ -251,6 +252,7 @@
<packagereq type="default">rubygem-rack</packagereq>
<packagereq type="default">rubygem-rack-cors</packagereq>
<packagereq type="default">rubygem-rack-jsonp</packagereq>
<packagereq type="default">rubygem-rack-mini-profiler</packagereq>
<packagereq type="default">rubygem-rack-protection</packagereq>
<packagereq type="default">rubygem-rack-test</packagereq>
<packagereq type="default">rubygem-rails</packagereq>
Expand Down Expand Up @@ -295,6 +297,7 @@
<packagereq type="default">rubygem-sprockets-rails</packagereq>
<packagereq type="default">rubygem-sqlite3</packagereq>
<packagereq type="default">rubygem-sshkey</packagereq>
<packagereq type="default">rubygem-stackprof</packagereq>
<packagereq type="default">rubygem-statsd-instrument</packagereq>
<packagereq type="default">rubygem-text</packagereq>
<packagereq type="default">rubygem-thor</packagereq>
Expand Down Expand Up @@ -410,8 +413,8 @@
<packagereq type="default">rubygem-google-apis-pubsub_v1-doc</packagereq>
<packagereq type="default">rubygem-google-apis-sqladmin_v1beta4-doc</packagereq>
<packagereq type="default">rubygem-google-apis-storage_v1-doc</packagereq>
<packagereq type="default">rubygem-googleauth-doc</packagereq>
<packagereq type="default">rubygem-google-cloud-env-doc</packagereq>
<packagereq type="default">rubygem-googleauth-doc</packagereq>
<packagereq type="default">rubygem-graphql-batch-doc</packagereq>
<packagereq type="default">rubygem-graphql-doc</packagereq>
<packagereq type="default">rubygem-gssapi-doc</packagereq>
Expand All @@ -421,8 +424,8 @@
<packagereq type="default">rubygem-highline-doc</packagereq>
<packagereq type="default">rubygem-hocon-doc</packagereq>
<packagereq type="default">rubygem-http-accept-doc</packagereq>
<packagereq type="default">rubygem-httpclient-doc</packagereq>
<packagereq type="default">rubygem-http-cookie-doc</packagereq>
<packagereq type="default">rubygem-httpclient-doc</packagereq>
<packagereq type="default">rubygem-i18n-doc</packagereq>
<packagereq type="default">rubygem-ipaddress-doc</packagereq>
<packagereq type="default">rubygem-journald-logger-doc</packagereq>
Expand All @@ -441,6 +444,7 @@
<packagereq type="default">rubygem-mail-doc</packagereq>
<packagereq type="default">rubygem-marcel-doc</packagereq>
<packagereq type="default">rubygem-memoist-doc</packagereq>
<packagereq type="default">rubygem-memory_profiler-doc</packagereq>
<packagereq type="default">rubygem-method_source-doc</packagereq>
<packagereq type="default">rubygem-mime-types-data-doc</packagereq>
<packagereq type="default">rubygem-mime-types-doc</packagereq>
Expand All @@ -449,12 +453,12 @@
<packagereq type="default">rubygem-multi_json-doc</packagereq>
<packagereq type="default">rubygem-multipart-post-doc</packagereq>
<packagereq type="default">rubygem-mustermann-doc</packagereq>
<packagereq type="default">rubygem-net_http_unix-doc</packagereq>
<packagereq type="default">rubygem-net-ldap-doc</packagereq>
<packagereq type="default">rubygem-net-ping-doc</packagereq>
<packagereq type="default">rubygem-netrc-doc</packagereq>
<packagereq type="default">rubygem-net-scp-doc</packagereq>
<packagereq type="default">rubygem-net-ssh-doc</packagereq>
<packagereq type="default">rubygem-net_http_unix-doc</packagereq>
<packagereq type="default">rubygem-netrc-doc</packagereq>
<packagereq type="default">rubygem-nio4r-doc</packagereq>
<packagereq type="default">rubygem-nokogiri-doc</packagereq>
<packagereq type="default">rubygem-oauth-doc</packagereq>
Expand All @@ -477,6 +481,7 @@
<packagereq type="default">rubygem-rack-cors-doc</packagereq>
<packagereq type="default">rubygem-rack-doc</packagereq>
<packagereq type="default">rubygem-rack-jsonp-doc</packagereq>
<packagereq type="default">rubygem-rack-mini-profiler-doc</packagereq>
<packagereq type="default">rubygem-rack-protection-doc</packagereq>
<packagereq type="default">rubygem-rack-test-doc</packagereq>
<packagereq type="default">rubygem-rails-doc</packagereq>
Expand All @@ -498,15 +503,15 @@
<packagereq type="default">rubygem-roadie-doc</packagereq>
<packagereq type="default">rubygem-roadie-rails-doc</packagereq>
<packagereq type="default">rubygem-rsec-doc</packagereq>
<packagereq type="default">rubygem-ruby-libvirt-doc</packagereq>
<packagereq type="default">rubygem-ruby2_keywords-doc</packagereq>
<packagereq type="default">rubygem-ruby2ruby-doc</packagereq>
<packagereq type="default">rubygem-rubyipmi-doc</packagereq>
<packagereq type="default">rubygem-ruby-libvirt-doc</packagereq>
<packagereq type="default">rubygem-ruby_parser-doc</packagereq>
<packagereq type="default">rubygem-rubyipmi-doc</packagereq>
<packagereq type="default">rubygem-safemode-doc</packagereq>
<packagereq type="default">rubygem-sass-rails-doc</packagereq>
<packagereq type="default">rubygem-sassc-doc</packagereq>
<packagereq type="default">rubygem-sassc-rails-doc</packagereq>
<packagereq type="default">rubygem-sass-rails-doc</packagereq>
<packagereq type="default">rubygem-scoped_search-doc</packagereq>
<packagereq type="default">rubygem-sd_notify-doc</packagereq>
<packagereq type="default">rubygem-secure_headers-doc</packagereq>
Expand All @@ -521,6 +526,7 @@
<packagereq type="default">rubygem-sprockets-rails-doc</packagereq>
<packagereq type="default">rubygem-sqlite3-doc</packagereq>
<packagereq type="default">rubygem-sshkey-doc</packagereq>
<packagereq type="default">rubygem-stackprof-doc</packagereq>
<packagereq type="default">rubygem-statsd-instrument-doc</packagereq>
<packagereq type="default">rubygem-text-doc</packagereq>
<packagereq type="default">rubygem-thor-doc</packagereq>
Expand Down
14 changes: 7 additions & 7 deletions comps/comps-foreman-plugins-el8.xml
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@
<packagereq type="default">rubygem-ffi-compiler-doc</packagereq>
<packagereq type="default">rubygem-fog-kubevirt-doc</packagereq>
<packagereq type="default">rubygem-fog-proxmox-doc</packagereq>
<packagereq type="default">rubygem-foreman-tasks-doc</packagereq>
<packagereq type="default">rubygem-foreman_acd-doc</packagereq>
<packagereq type="default">rubygem-foreman_ansible-doc</packagereq>
<packagereq type="default">rubygem-foreman_azure_rm-doc</packagereq>
Expand Down Expand Up @@ -271,7 +272,6 @@
<packagereq type="default">rubygem-foreman_snapshot_management-doc</packagereq>
<packagereq type="default">rubygem-foreman_statistics-doc</packagereq>
<packagereq type="default">rubygem-foreman_supervisory_authority-doc</packagereq>
<packagereq type="default">rubygem-foreman-tasks-doc</packagereq>
<packagereq type="default">rubygem-foreman_templates-doc</packagereq>
<packagereq type="default">rubygem-foreman_vault-doc</packagereq>
<packagereq type="default">rubygem-foreman_vmwareannotations-doc</packagereq>
Expand All @@ -280,14 +280,14 @@
<packagereq type="default">rubygem-fugit-doc</packagereq>
<packagereq type="default">rubygem-gapic-common-doc</packagereq>
<packagereq type="default">rubygem-git-doc</packagereq>
<packagereq type="default">rubygem-googleapis-common-protos-doc</packagereq>
<packagereq type="default">rubygem-googleapis-common-protos-types-doc</packagereq>
<packagereq type="default">rubygem-google-cloud-common-doc</packagereq>
<packagereq type="default">rubygem-google-cloud-compute-doc</packagereq>
<packagereq type="default">rubygem-google-cloud-compute-v1-doc</packagereq>
<packagereq type="default">rubygem-google-cloud-core-doc</packagereq>
<packagereq type="default">rubygem-google-cloud-errors-doc</packagereq>
<packagereq type="default">rubygem-google-protobuf-doc</packagereq>
<packagereq type="default">rubygem-googleapis-common-protos-doc</packagereq>
<packagereq type="default">rubygem-googleapis-common-protos-types-doc</packagereq>
<packagereq type="default">rubygem-graphite-api-doc</packagereq>
<packagereq type="default">rubygem-grpc-doc</packagereq>
<packagereq type="default">rubygem-hammer_cli_foreman_admin-doc</packagereq>
Expand All @@ -306,10 +306,10 @@
<packagereq type="default">rubygem-hammer_cli_foreman_tasks-doc</packagereq>
<packagereq type="default">rubygem-hammer_cli_foreman_templates-doc</packagereq>
<packagereq type="default">rubygem-hammer_cli_foreman_webhooks-doc</packagereq>
<packagereq type="default">rubygem-httparty-doc</packagereq>
<packagereq type="default">rubygem-http-doc</packagereq>
<packagereq type="default">rubygem-http-form_data-doc</packagereq>
<packagereq type="default">rubygem-http_parser.rb-doc</packagereq>
<packagereq type="default">rubygem-httparty-doc</packagereq>
<packagereq type="default">rubygem-infoblox-doc</packagereq>
<packagereq type="default">rubygem-interactor-doc</packagereq>
<packagereq type="default">rubygem-jgrep-doc</packagereq>
Expand All @@ -318,12 +318,12 @@
<packagereq type="default">rubygem-kubeclient-doc</packagereq>
<packagereq type="default">rubygem-logify-doc</packagereq>
<packagereq type="default">rubygem-mqtt-doc</packagereq>
<packagereq type="default">rubygem-ms_rest_azure-doc</packagereq>
<packagereq type="default">rubygem-ms_rest-doc</packagereq>
<packagereq type="default">rubygem-ms_rest_azure-doc</packagereq>
<packagereq type="default">rubygem-multi_xml-doc</packagereq>
<packagereq type="default">rubygem-netbox-client-ruby-doc</packagereq>
<packagereq type="default">rubygem-net-ssh-gateway-doc</packagereq>
<packagereq type="default">rubygem-net-ssh-multi-doc</packagereq>
<packagereq type="default">rubygem-netbox-client-ruby-doc</packagereq>
<packagereq type="default">rubygem-newt-doc</packagereq>
<packagereq type="default">rubygem-openscap-doc</packagereq>
<packagereq type="default">rubygem-openscap_parser-doc</packagereq>
Expand All @@ -344,6 +344,7 @@
<packagereq type="default">rubygem-ruby-hmac-doc</packagereq>
<packagereq type="default">rubygem-ruby-nmap-doc</packagereq>
<packagereq type="default">rubygem-sentry-raven-doc</packagereq>
<packagereq type="default">rubygem-smart-proxy-probing-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_acd-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_ansible-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_container_gateway-doc</packagereq>
Expand All @@ -363,7 +364,6 @@
<packagereq type="default">rubygem-smart_proxy_monitoring-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_omaha-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_openscap-doc</packagereq>
<packagereq type="default">rubygem-smart-proxy-probing-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_pulp-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_realm_ad_plugin-doc</packagereq>
<packagereq type="default">rubygem-smart_proxy_remote_execution_ssh-doc</packagereq>
Expand Down
3 changes: 3 additions & 0 deletions package_manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,7 @@ foreman_core_packages:
rubygem-mail: {}
rubygem-marcel: {}
rubygem-memoist: {}
rubygem-memory_profiler: {}
rubygem-method_source: {}
rubygem-mime-types: {}
rubygem-mime-types-data: {}
Expand Down Expand Up @@ -348,6 +349,7 @@ foreman_core_packages:
rubygem-rack: {}
rubygem-rack-cors: {}
rubygem-rack-jsonp: {}
rubygem-rack-mini-profiler: {}
rubygem-rack-protection: {}
rubygem-rack-test: {}
rubygem-rails-dom-testing: {}
Expand Down Expand Up @@ -384,6 +386,7 @@ foreman_core_packages:
rubygem-sprockets: {}
rubygem-sprockets-rails: {}
rubygem-sshkey: {}
rubygem-stackprof: {}
rubygem-statsd-instrument: {}
rubygem-sqlite3: {}
rubygem-text: {}
Expand Down
21 changes: 19 additions & 2 deletions packages/foreman/foreman/foreman.spec
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
%global dynflow_sidekiq_service_name dynflow-sidekiq@
%global rake /usr/bin/rake

%global release 5
%global release 6
%global prereleasesource develop
%global prerelease %{?prereleasesource}

Expand Down Expand Up @@ -677,11 +677,25 @@ Configuration files for the Performance Co-Pilot integration
%{_sysconfdir}/pcp/proc/%{name}-hotproc.conf
%{_sharedstatedir}/pcp/config/pmlogconf/%{name}-hotproc

%description
%description profiling
Foreman is aimed to be a Single Address For All Machines Life Cycle Management.
Foreman is based on Ruby on Rails, and this package bundles Rails and all
plugins required for Foreman to work.

%package profiling
Summary: Adds rails-profiling extensions to foreman
Requires: rubygem(rack-mini-profiler)
Requires: rubygem(memory_profiler)
Requires: rubygem(stackprof)

%description
This automatically installs and enables profiling extensions to foreman.
It is probably not what you want on a productive system.

%files profiling
%{_datadir}/%{name}/bundler.d/profiling.rb
%{_datadir}/%{name}/config/initializers/rack_mini_profiler.rb

%prep
%setup -q -n %{name}-%{version}%{?prerelease:-}%{?prerelease}

Expand Down Expand Up @@ -1012,6 +1026,9 @@ exit 0
%systemd_postun %{name}.socket

%changelog
* Tue Nov 07 2023 Markus Bucher <[email protected]> - 3.9.0-6.develop
- Add profiling subpackage

* Thu Oct 26 2023 Ewoud Kohl van Wijngaarden <[email protected]> - 3.9.0-0.5.develop
- Automatically depend on selinux package if needed

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# template: default
%global gem_name memory_profiler

Name: rubygem-%{gem_name}
Version: 1.0.1
Release: 1%{?dist}
Summary: Memory profiling routines for Ruby 2.5+
License: MIT
URL: https://github.com/SamSaffron/memory_profiler
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem

# start specfile generated dependencies
Requires: ruby >= 2.5.0
BuildRequires: ruby >= 2.5.0
BuildRequires: rubygems-devel
BuildArch: noarch
# end specfile generated dependencies

%description
Memory profiling routines for Ruby 2.5+.


%package doc
Summary: Documentation for %{name}
Requires: %{name} = %{version}-%{release}
BuildArch: noarch

%description doc
Documentation for %{name}.

%prep
%setup -q -n %{gem_name}-%{version}

%build
# Create the gem as gem install only works on a gem file
gem build ../%{gem_name}-%{version}.gemspec

# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir
# by default, so that we can move it into the buildroot in %%install
%gem_install

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* \
%{buildroot}%{gem_dir}/

mkdir -p %{buildroot}%{_bindir}
cp -a .%{_bindir}/* \
%{buildroot}%{_bindir}/

find %{buildroot}%{gem_instdir}/bin -type f | xargs chmod a+x

%files
%dir %{gem_instdir}
%{_bindir}/ruby-memory-profiler
%license %{gem_instdir}/LICENSE.txt
%{gem_instdir}/bin
%{gem_libdir}
%exclude %{gem_cache}
%{gem_spec}

%files doc
%doc %{gem_docdir}
%doc %{gem_instdir}/CHANGELOG.md
%doc %{gem_instdir}/README.md

%changelog
* Mon Nov 06 2023 Markus Bucher <[email protected]> 1.0.1-1
- Add rubygem-memory_profiler generated by gem2rpm using the default template

Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# template: default
%global gem_name rack-mini-profiler

Name: rubygem-%{gem_name}
Version: 3.1.1
Release: 1%{?dist}
Summary: Profiles loading speed for rack applications
License: MIT
URL: https://miniprofiler.com
Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem

# start specfile generated dependencies
Requires: ruby >= 2.6.0
BuildRequires: ruby >= 2.6.0
BuildRequires: rubygems-devel
BuildArch: noarch
# end specfile generated dependencies

%description
Profiling toolkit for Rack applications with Rails integration. Client Side
profiling, DB profiling and Server profiling.


%package doc
Summary: Documentation for %{name}
Requires: %{name} = %{version}-%{release}
BuildArch: noarch

%description doc
Documentation for %{name}.

%prep
%setup -q -n %{gem_name}-%{version}

%build
# Create the gem as gem install only works on a gem file
gem build ../%{gem_name}-%{version}.gemspec

# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir
# by default, so that we can move it into the buildroot in %%install
%gem_install

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a .%{gem_dir}/* \
%{buildroot}%{gem_dir}/

%files
%dir %{gem_instdir}
%{gem_libdir}
%exclude %{gem_cache}
%{gem_spec}

%files doc
%doc %{gem_docdir}
%doc %{gem_instdir}/CHANGELOG.md
%doc %{gem_instdir}/README.md
%exclude %{gem_instdir}/rack-mini-profiler.gemspec

%changelog
* Mon Nov 06 2023 Markus Bucher <[email protected]> 3.1.1-1
- Add rubygem-rack-mini-profiler generated by gem2rpm using the default template

Loading

0 comments on commit 9bb5f38

Please sign in to comment.