Compare commits

..

No commits in common. 'i10cs' and 'c9' have entirely different histories.
i10cs ... c9

4
.gitignore vendored

@ -1 +1,3 @@
SOURCES/rhc-0.3.0.tar.xz
SOURCES/rhc-0.2.2.tar.gz
SOURCES/yggdrasil-0.2.1.tar.gz
SOURCES/yggdrasil-worker-package-manager-0.1.0.tar.gz

@ -1 +1,3 @@
b3ceab63f21d78da6962287cd0abecf80a5bb9a1 SOURCES/rhc-0.3.0.tar.xz
7f90428c84e86660930463c8f31765c023dea8c7 SOURCES/rhc-0.2.2.tar.gz
55a3abc8515dede8b7ff41905447e08f5e6c01d7 SOURCES/yggdrasil-0.2.1.tar.gz
0582350e1001af0d608772860045f7f4964aa321 SOURCES/yggdrasil-worker-package-manager-0.1.0.tar.gz

@ -0,0 +1,28 @@
--- main.go.orig 2022-02-11 15:41:53.199642591 -0500
+++ main.go 2022-02-11 15:42:43.738219604 -0500
@@ -6,6 +6,7 @@
"fmt"
"net"
"os"
+ "path/filepath"
"strconv"
"strings"
"time"
@@ -21,7 +22,7 @@
)
func main() {
- fs := flag.NewFlagSet("yggd-package-manager-worker", flag.ExitOnError)
+ fs := flag.NewFlagSet(filepath.Base(os.Args[0]), flag.ExitOnError)
var (
socketAddr = ""
@@ -32,7 +33,7 @@
fs.StringVar(&socketAddr, "socket-addr", "", "dispatcher socket address")
fs.Var(&logLevel, "log-level", "log verbosity level (error (default), warn, info, debug, trace)")
fs.Var(&allowPatterns, "allow-pattern", "regular expression pattern to allow package operations\n(can be specified multiple times)")
- _ = fs.String("config", "", "path to `file` containing configuration values (optional)")
+ _ = fs.String("config", filepath.Join("/", "etc", "rhc", "workers", "rhc-package-manager.toml"), "path to `file` containing configuration values (optional)")
ff.Parse(fs, os.Args[1:], ff.WithEnvVarPrefix("YGG"), ff.WithConfigFileFlag("config"), ff.WithConfigFileParser(fftoml.Parser))

@ -0,0 +1,89 @@
From d75dc60df73a88b0a14c799f3b6f1e8f66cee3d4 Mon Sep 17 00:00:00 2001
From: Link Dupont <link@sub-pop.net>
Date: Tue, 22 Nov 2022 13:07:41 -0500
Subject: [PATCH] fix: read worker output using io.Read
Some workers output a lot of text to stderr and stdout. Rather than
scanning stderr and stdout into a buffer using a bufio.Scanner, read a
fixed number of bytes at a time. This will break lines of output from
the worker in the middle of words, making reading stdout in the logs
more difficult, but avoids the overly verbose workers from hitting the
bufio.ErrTooLong error.
Signed-off-by: Link Dupont <link@sub-pop.net>
---
cmd/yggd/exec.go | 46 +++++++++++++++++++++++++++++++++-------------
1 file changed, 33 insertions(+), 13 deletions(-)
diff --git a/cmd/yggd/exec.go b/cmd/yggd/exec.go
index 4eb1757..a2a3d29 100644
--- a/cmd/yggd/exec.go
+++ b/cmd/yggd/exec.go
@@ -1,8 +1,8 @@
package main
import (
- "bufio"
"fmt"
+ "io"
"io/ioutil"
"os"
"os/exec"
@@ -54,22 +54,42 @@ func startProcess(file string, env []string, delay time.Duration, died chan int)
log.Debugf("started process: %v", cmd.Process.Pid)
go func() {
- scanner := bufio.NewScanner(stdout)
- for scanner.Scan() {
- log.Tracef("[%v] %v", file, scanner.Text())
- }
- if err := scanner.Err(); err != nil {
- log.Errorf("cannot read from stdout: %v", err)
+ for {
+ buf := make([]byte, 4096)
+ n, err := stdout.Read(buf)
+ if n > 0 {
+ log.Tracef("[%v] %v", file, strings.TrimRight(string(buf), "\n\x00"))
+ }
+ if err != nil {
+ switch err {
+ case io.EOF:
+ log.Debugf("%v stdout reached EOF: %v", file, err)
+ return
+ default:
+ log.Errorf("cannot read from stdout: %v", err)
+ continue
+ }
+ }
}
}()
go func() {
- scanner := bufio.NewScanner(stderr)
- for scanner.Scan() {
- log.Errorf("[%v] %v", file, scanner.Text())
- }
- if err := scanner.Err(); err != nil {
- log.Errorf("cannot read from stderr: %v", err)
+ for {
+ buf := make([]byte, 4096)
+ n, err := stderr.Read(buf)
+ if n > 0 {
+ log.Errorf("[%v] %v", file, strings.TrimRight(string(buf), "\n\x00"))
+ }
+ if err != nil {
+ switch err {
+ case io.EOF:
+ log.Debugf("%v stderr reached EOF: %v", file, err)
+ return
+ default:
+ log.Errorf("cannot read from stderr: %v", err)
+ continue
+ }
+ }
}
}()
--
2.38.1

@ -0,0 +1,6 @@
# rhc global configuration settings
broker = ["wss://connect.cloud.redhat.com:443"]
cert-file = "/etc/pki/consumer/cert.pem"
key-file = "/etc/pki/consumer/key.pem"
log-level = "error"

@ -0,0 +1,5 @@
# regular expression patterns to allow package operations
allow-pattern = ["^rhc-worker-playbook$"]
# log verbosity level (error (default), warn, info, debug, trace)
log-level = "error"

@ -1,169 +1,150 @@
## START: Set by rpmautospec
## (rpmautospec version 0.6.5)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
release_number = 1;
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec
%bcond_without check
# https://github.com/redhatinsights/rhc
%global goipath github.com/redhatinsights/rhc
Version: 0.3.0
%global tag v%{version}
%gometa -f
%global golicenses LICENSE
%global godocs CONTRIBUTING.md README.md
%global buildflags -buildmode pie -compiler gc -a -v -x
%global goldflags %{expand:-linkmode=external -compressdwarf=false -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n') -extldflags '%__global_ldflags'}
%global yggdrasil_ver 0.2.1
%global ygg_pkg_mgr_ver 0.1.0
Name: rhc
Release: %autorelease
Version: 0.2.2
Release: 1%{?dist}
Epoch: 1
Summary: rhc connects the system to Red Hat hosted services
License: GPL-3.0-only
URL: %{gourl}
License: GPLv3
URL: https://github.com/redhatinsights/rhc
Source0: https://github.com/RedHatInsights/rhc/releases/download/%{version}/%{name}-%{version}.tar.gz
Source1: config.toml
Source2: https://github.com/RedHatInsights/yggdrasil/releases/download/%{yggdrasil_ver}/yggdrasil-%{yggdrasil_ver}.tar.gz
Source3: https://github.com/RedHatInsights/yggdrasil-worker-package-manager/releases/download/%{ygg_pkg_mgr_ver}/yggdrasil-worker-package-manager-%{ygg_pkg_mgr_ver}.tar.gz
Source4: rhc-package-manager.toml
Source: %{url}/releases/download/%{tag}/%{name}-%{version}.tar.xz
# Fixed upstream https://github.com/RedHatInsights/yggdrasil-worker-package-manager/commit/22105b0016abfc7c743c1eadb0372e4ef93cc65e
Patch0: 0001-feat-default-config-file-location.patch
# Fixed upstream https://github.com/RedHatInsights/yggdrasil/pull/100/commits/d75dc60df73a88b0a14c799f3b6f1e8f66cee3d4
Patch2: 0001-fix-read-worker-output-using-io.Read.patch
ExclusiveArch: %{go_arches}
Recommends: insights-client
Requires: subscription-manager
Requires: yggdrasil >= 0.4
Requires: yggdrasil-worker-package-manager
Requires(post): policycoreutils-python-utils
BuildRequires: git-core
BuildRequires: git
BuildRequires: golang
BuildRequires: go-rpm-macros
BuildRequires: meson
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(bash-completion)
%global common_description %{expand:
%{name} is a client tool and daemon that connects the system to Red Hat hosted
BuildRequires: dbus-devel
BuildRequires: systemd-devel
%define _description %{expand:%{name} is a client tool and daemon that connects the system to Red Hat hosted
services enabling system and subscription management.}
%description
%{common_description}
%{_description}
%package compat
Summary: Transition package to support migrating from rhcd to yggd
Requires: yggdrasil >= 0.4.2
Recommends: rhc
%package devel
Summary: Development files for %{name}
Requires: %{name} = %{epoch}:%{version}-%{release}
%description compat
%{common_description}
Transition package to support migrating from rhcd to yggd.
%description devel
%{_description}
This package includes files necessary for building rhc workers.
%global makeflags %{expand:PREFIX=%{_prefix} \\
SYSCONFDIR=%{_sysconfdir} \\
LOCALSTATEDIR=%{_localstatedir} \\
SHORTNAME=%{name} \\
LONGNAME=%{name} \\
PKGNAME=%{name} \\
'BRANDNAME=Remote Host Configuration' \\
TOPICPREFIX=redhat/insights \\
VERSION=%{version} \\
DATAHOST=cert.cloud.redhat.com \\
'PROVIDER=Red Hat'}
%prep
%goprep %{?rhel:-k}
%autopatch -p1
%setup -T -D -c -n %{name} -a 0
%setup -T -D -c -n %{name} -a 2
%setup -T -D -c -n %{name} -a 3
sed -i -e "s/LDFLAGS :=/LDFLAGS ?=/" %{_builddir}/%{name}/yggdrasil-%{yggdrasil_ver}/Makefile
sed -i -e "s/LDFLAGS :=/LDFLAGS ?=/" %{_builddir}/%{name}/%{name}-%{version}/Makefile
cd %{_builddir}/%{name}/yggdrasil-worker-package-manager
%patch0 -p0
cd %{_builddir}/%{name}/yggdrasil-%{yggdrasil_ver}
%patch2 -p1
%if %{undefined rhel}
%generate_buildrequires
%go_generate_buildrequires
%endif
%build
%undefine _auto_set_build_flags
export %gomodulesmode
%{?gobuilddir:export GOPATH="%{gobuilddir}:${GOPATH:+${GOPATH}:}%{?gopath}"}
%meson -Dvendor=True "-Dgobuildflags=[%(echo %{expand:%gocompilerflags} | sed -e s/"^"/"'"/ -e s/" "/"', '"/g -e s/"$"/"'"/), '-tags', '"rpm_crashtraceback\ ${BUILDTAGS:-}"', '-a', '-v', '-x']" -Dgoldflags='%{?currentgoldflags} -B 0x%(head -c20 /dev/urandom|od -An -tx1|tr -d " \n") -compressdwarf=false -linkmode=external -extldflags "%{build_ldflags} %{?__golang_extldflags}"'
%meson_build
%set_build_flags
export BUILDFLAGS="%{buildflags}"
export LDFLAGS="%{goldflags}"
cd %{_builddir}/%{name}/yggdrasil-%{yggdrasil_ver}
make %{makeflags}
cd %{_builddir}/%{name}/yggdrasil-worker-package-manager
go build %{buildflags} -ldflags="%{goldflags}" -o rhc-package-manager-worker -mod vendor .
cd %{_builddir}/%{name}/%{name}-%{version}
make %{makeflags}
%install
%meson_install
install --directory %{buildroot}%{_unitdir}
install --directory %{buildroot}%{_sysconfdir}/rhc
ln -sf yggdrasil.service %{buildroot}%{_unitdir}/rhcd.service
ln -sf ../yggdrasil/config.toml %{buildroot}%{_sysconfdir}/rhc/config.toml
%set_build_flags
export BUILDFLAGS="%{buildflags}"
export LDFLAGS="%{goldflags}"
cd %{_builddir}/%{name}/yggdrasil-%{yggdrasil_ver}
make %{makeflags} \
DESTDIR=%{buildroot} \
install
%{__install} -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/%{name}/
cd %{_builddir}/%{name}/yggdrasil-worker-package-manager
%{__install} -D -m 755 rhc-package-manager-worker %{buildroot}%{_libexecdir}/%{name}/
%{__install} -D -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/%{name}/workers/rhc-package-manager.toml
cd %{_builddir}/%{name}/%{name}-%{version}
make %{makeflags} \
DESTDIR=%{buildroot} \
install
%if %{with check}
%check
%gocheck
%endif
%post
/usr/sbin/semanage permissive --add rhcd_t || true
%systemd_post rhc-canonical-facts.timer
if [ $1 -eq 1 ]; then
systemctl daemon-reload
systemctl start rhc-canonical-facts.timer
if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
/usr/sbin/semanage permissive --add rhcd_t || true
fi
%preun
%systemd_preun rhc-canonical-facts.timer
%postun
if [ $1 -eq 0 ]; then
if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
/usr/sbin/semanage permissive --delete rhcd_t || true
fi
fi
%systemd_postun_with_restart rhc-canonical-facts.timer
if [ $1 -eq 0 ]; then
systemctl daemon-reload
fi
%files
%license LICENSE
%doc CONTRIBUTING.md README.md
%{_bindir}/*
%doc %{name}-%{version}/README.md yggdrasil-%{yggdrasil_ver}/doc/tags.toml
%{_bindir}/%{name}
%{_sbindir}/%{name}d
%config(noreplace) %{_sysconfdir}/%{name}/config.toml
%config(noreplace) %{_sysconfdir}/%{name}/workers/rhc-package-manager.toml
%{_unitdir}/%{name}d.service
%{_datadir}/bash-completion/completions/*
%{_mandir}/man1/*
%{_unitdir}/rhc-canonical-facts.*
%{_presetdir}/*
%files compat
%{_unitdir}/rhcd.service
%{_sysconfdir}/rhc/config.toml
%changelog
## START: Generated by rpmautospec
* Mon Dec 02 2024 Link Dupont <link@sub-pop.net> - 1:0.3.0-1
- Update to 0.3.0 (RHEL-69743)
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 1:0.2.4-7
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
%{_libexecdir}/%{name}
* Fri Oct 25 2024 MSVSphere Packaging Team <packager@msvsphere-os.ru> - 0.2.4-6
- Rebuilt for MSVSphere 10
* Tue May 21 2024 Link Dupont <link@redhat.com> - 0.2.4-6
- Require systemd instead of systemd-devel during compilation (RHEL-37674)
%files devel
%{_prefix}/share/pkgconfig/%{name}.pc
* Mon Feb 12 2024 Link Dupont <link@redhat.com> - 0.2.4-5
- Update embedded yggdrasil-worker-package-manager to 0.1.3 (RHEL-17179)
- Update embedded yggdrasil to 0.2.4 (RHEL-17179)
* Mon Jan 8 2024 Jiri Hnidek <jhnidek@redhat.com> - 0.2.4-4
- Add dependency on subscription-manager (RHEL-18974)
* Mon Oct 23 2023 Link Dupont <link@redhat.com> - 0.2.4-3
- Update embedded yggdrasil-worker-package-manager (RHEL-14200)
* Wed Oct 18 2023 Link Dupont <link@redhat.com> - 0.2.4-2
- Update embedded yggdrasil to 0.2.3 (RHEL-14200)
* Tue Aug 01 2023 Alba Hita Catala <ahitacat@redhat.com> - 0.2.4-1
- Configure proxy for http connections (RHBZ#2227018)
- Failling to get system profile is not an error but a warning (RHBZ#2227012)
- Prevent message content being logged at any level (RHBZ#2227010)
- Added bash completion (RHBZ#2145198)
* Tue Jul 25 2023 Vit Mojzis <vmojzis@redhat.com> - 0.2.3-2
- Make rhcd_t permissive even when SELinux is disabled (RHBZ#2226701)
* Tue Jul 04 2023 Alba Hita Catala <ahitacat@redhat.com> - 0.2.3-1
- New upstream version (RHBZ#2219563)
%changelog
* Tue Feb 14 2023 Alba Hita Catala <ahitacat@redhat.com> - 0.2.2-1
- New upstream version (RHBZ#2169772)
- RHC renaming (RHBZ#2167427)
@ -262,5 +243,3 @@ fi
* Fri Feb 12 2021 Link Dupont <link@redhat.com> - 0.1-1
- Initial release
## END: Generated by rpmautospec

Loading…
Cancel
Save