Compare commits

...

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

4
.gitignore vendored

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

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

@ -1,28 +0,0 @@
--- 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))

@ -1,89 +0,0 @@
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

@ -1,6 +0,0 @@
# 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"

@ -1,5 +0,0 @@
# 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,150 +1,166 @@
%global buildflags -buildmode pie -compiler gc -a -v -x ## START: Set by rpmautospec
%global goldflags %{expand:-linkmode=external -compressdwarf=false -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n') -extldflags '%__global_ldflags'} ## (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
%global yggdrasil_ver 0.2.1 %bcond_without check
%global ygg_pkg_mgr_ver 0.1.0
Name: rhc # https://github.com/redhatinsights/rhc
Version: 0.2.2 %global goipath github.com/redhatinsights/rhc
Release: 1%{?dist} Version: 0.3.0
Epoch: 1 %global tag v%{version}
Summary: rhc connects the system to Red Hat hosted services
License: GPLv3 %gometa -f
URL: https://github.com/redhatinsights/rhc
Source0: https://github.com/RedHatInsights/rhc/releases/download/%{version}/%{name}-%{version}.tar.gz %global golicenses LICENSE
Source1: config.toml %global godocs CONTRIBUTING.md README.md
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
# 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} Name: rhc
Release: %autorelease
Epoch: 1
Summary: rhc connects the system to Red Hat hosted services
License: GPL-3.0-only
URL: %{gourl}
Recommends: insights-client Source: %{url}/releases/download/%{tag}/%{name}-%{version}.tar.xz
Requires(post): policycoreutils-python-utils Recommends: insights-client
BuildRequires: git Requires: subscription-manager
BuildRequires: golang Requires: yggdrasil >= 0.4
BuildRequires: go-rpm-macros Requires: yggdrasil-worker-package-manager
BuildRequires: dbus-devel Requires(post): policycoreutils-python-utils
BuildRequires: systemd-devel
BuildRequires: git-core
BuildRequires: golang
BuildRequires: go-rpm-macros
BuildRequires: meson
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(bash-completion)
%define _description %{expand:%{name} is a client tool and daemon that connects the system to Red Hat hosted %global common_description %{expand:
%{name} is a client tool and daemon that connects the system to Red Hat hosted
services enabling system and subscription management.} services enabling system and subscription management.}
%description %description
%{_description} %{common_description}
%package devel %package compat
Summary: Development files for %{name} Summary: Transition package to support migrating from rhcd to yggd
Requires: %{name} = %{epoch}:%{version}-%{release} Requires: yggdrasil >= 0.4.2
Recommends: rhc
%description compat
%{common_description}
%description devel Transition package to support migrating from rhcd to yggd.
%{_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 %prep
%setup -T -D -c -n %{name} -a 0 %goprep %{?rhel:-k}
%setup -T -D -c -n %{name} -a 2 %autopatch -p1
%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 %build
%set_build_flags %undefine _auto_set_build_flags
export BUILDFLAGS="%{buildflags}" export %gomodulesmode
export LDFLAGS="%{goldflags}" %{?gobuilddir:export GOPATH="%{gobuilddir}:${GOPATH:+${GOPATH}:}%{?gopath}"}
cd %{_builddir}/%{name}/yggdrasil-%{yggdrasil_ver} %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}"'
make %{makeflags} %meson_build
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 %install
%set_build_flags %meson_install
export BUILDFLAGS="%{buildflags}" install --directory %{buildroot}%{_unitdir}
export LDFLAGS="%{goldflags}" install --directory %{buildroot}%{_sysconfdir}/rhc
cd %{_builddir}/%{name}/yggdrasil-%{yggdrasil_ver} ln -sf yggdrasil.service %{buildroot}%{_unitdir}/rhcd.service
make %{makeflags} \ ln -sf ../yggdrasil/config.toml %{buildroot}%{_sysconfdir}/rhc/config.toml
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 %post
if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then /usr/sbin/semanage permissive --add rhcd_t || true
/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
fi fi
%preun
%systemd_preun rhc-canonical-facts.timer
%postun %postun
if [ $1 -eq 0 ]; then if [ $1 -eq 0 ]; then
if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then /usr/sbin/semanage permissive --delete rhcd_t || true
/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 fi
%files %files
%doc %{name}-%{version}/README.md yggdrasil-%{yggdrasil_ver}/doc/tags.toml %license LICENSE
%{_bindir}/%{name} %doc CONTRIBUTING.md README.md
%{_sbindir}/%{name}d %{_bindir}/*
%config(noreplace) %{_sysconfdir}/%{name}/config.toml
%config(noreplace) %{_sysconfdir}/%{name}/workers/rhc-package-manager.toml
%{_unitdir}/%{name}d.service
%{_datadir}/bash-completion/completions/* %{_datadir}/bash-completion/completions/*
%{_mandir}/man1/* %{_mandir}/man1/*
%{_libexecdir}/%{name} %{_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)
%files devel * Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 1:0.2.4-7
%{_prefix}/share/pkgconfig/%{name}.pc - Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Tue May 21 2024 Link Dupont <link@redhat.com> - 0.2.4-6
- Require systemd instead of systemd-devel during compilation (RHEL-37674)
* 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 * Tue Feb 14 2023 Alba Hita Catala <ahitacat@redhat.com> - 0.2.2-1
- New upstream version (RHBZ#2169772) - New upstream version (RHBZ#2169772)
- RHC renaming (RHBZ#2167427) - RHC renaming (RHBZ#2167427)
@ -243,3 +259,5 @@ fi
* Fri Feb 12 2021 Link Dupont <link@redhat.com> - 0.1-1 * Fri Feb 12 2021 Link Dupont <link@redhat.com> - 0.1-1
- Initial release - Initial release
## END: Generated by rpmautospec

Loading…
Cancel
Save