From d1dfae4ec9e535d902db4e378fe1bd968baf684c4a59f4ddfa5efb24024636bf Mon Sep 17 00:00:00 2001 From: Adam Majer Date: Wed, 3 Jul 2024 10:51:49 +0000 Subject: [PATCH] Accepting request 1185097 from home:abrooks:branches:systemsmanagement:cockpit Fix suse_docs.patch causing invalid json against the storaged manifest bsc#1227299 OBS-URL: https://build.opensuse.org/request/show/1185097 OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:cockpit/cockpit?expand=0&rev=182 --- .gitattributes | 23 + .gitignore | 1 + ...elinux-allow-login-to-read-motd-file.patch | 22 + ...-users-Support-for-watching-lastlog2.patch | 56 + ...porary-remove-setroubleshoot-section.patch | 13 + ...-lastlog2-and-wutmp-on-overview-page.patch | 157 + 0004-leap-gnu18-removal.patch | 11 + README.packaging | 44 + _service | 32 + _servicedata | 6 + cockpit-316.obscpio | 3 + cockpit-rpmlintrc | 4 + cockpit-suse-theme.obscpio | 3 + cockpit-suse-theme.obsinfo | 4 + cockpit.changes | 556 ++ cockpit.obsinfo | 4 + cockpit.pam | 10 + cockpit.spec | 870 ++ css-overrides.patch | 325 + hide-pcp.patch | 12 + node_modules.obscpio | 3 + node_modules.spec.inc | 495 ++ package-lock.json | 6997 +++++++++++++++++ selinux_libdir.patch | 27 + storage-btrfs.patch | 12 + suse-microos-branding.patch | 136 + suse_docs.patch | 168 + vendor.tar.gz | 3 + 28 files changed, 9997 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 0001-selinux-allow-login-to-read-motd-file.patch create mode 100644 0001-users-Support-for-watching-lastlog2.patch create mode 100644 0002-selinux-temporary-remove-setroubleshoot-section.patch create mode 100644 0002-users-Support-for-watching-lastlog2-and-wutmp-on-overview-page.patch create mode 100644 0004-leap-gnu18-removal.patch create mode 100644 README.packaging create mode 100644 _service create mode 100644 _servicedata create mode 100644 cockpit-316.obscpio create mode 100644 cockpit-rpmlintrc create mode 100644 cockpit-suse-theme.obscpio create mode 100644 cockpit-suse-theme.obsinfo create mode 100644 cockpit.changes create mode 100644 cockpit.obsinfo create mode 100644 cockpit.pam create mode 100644 cockpit.spec create mode 100644 css-overrides.patch create mode 100644 hide-pcp.patch create mode 100644 node_modules.obscpio create mode 100644 node_modules.spec.inc create mode 100644 package-lock.json create mode 100644 selinux_libdir.patch create mode 100644 storage-btrfs.patch create mode 100644 suse-microos-branding.patch create mode 100644 suse_docs.patch create mode 100644 vendor.tar.gz diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/0001-selinux-allow-login-to-read-motd-file.patch b/0001-selinux-allow-login-to-read-motd-file.patch new file mode 100644 index 0000000..5cf9aca --- /dev/null +++ b/0001-selinux-allow-login-to-read-motd-file.patch @@ -0,0 +1,22 @@ +commit fc0e3304732a9aaff1487833342d5fc8ea26ce04 +Author: Ludwig Nussel +Date: Fri Aug 6 15:11:23 2021 +0200 + + selinux: allow login to read motd file + +Index: cockpit/selinux/cockpit.te +=================================================================== +--- cockpit.orig/selinux/cockpit.te ++++ cockpit/selinux/cockpit.te +@@ -202,3 +202,11 @@ optional_policy(` + optional_policy(` + gnome_exec_keyringd(cockpit_session_t) + ') ++ ++# login may read motd file through pam ++optional_policy(` ++ gen_require(` ++ type local_login_t; ++ ') ++ cockpit_read_pid_files(local_login_t) ++') diff --git a/0001-users-Support-for-watching-lastlog2.patch b/0001-users-Support-for-watching-lastlog2.patch new file mode 100644 index 0000000..d101c9f --- /dev/null +++ b/0001-users-Support-for-watching-lastlog2.patch @@ -0,0 +1,56 @@ +From 93d0a6d4dbe97937e69b126870b4bd4675c326d5 Mon Sep 17 00:00:00 2001 +From: Luna +Date: Fri, 3 May 2024 11:56:22 +0530 +Subject: [PATCH] users: Support for watching lastlog2 + +--- + pkg/users/account-details.js | 30 +++++++++++++++++++++++------- + 1 file changed, 23 insertions(+), 7 deletions(-) + +diff --git a/pkg/users/account-details.js b/pkg/users/account-details.js +index 52255b474..11c7870af 100644 +--- a/pkg/users/account-details.js ++++ b/pkg/users/account-details.js +@@ -98,16 +98,32 @@ function get_expire(name) { + + export function AccountDetails({ accounts, groups, current_user, user, shells }) { + const [expiration, setExpiration] = useState(null); ++ const [lastlogpath, setLastlogPath] = useState(null); ++ + useEffect(() => { +- get_expire(user).then(setExpiration); ++ cockpit.spawn(["test", "-e", "/var/run/utmp"], { err: "ignore" }).then(() => { ++ setLastlogPath("/var/run/utmp"); ++ }).catch(() => { ++ cockpit.spawn(["test", "-e", "/var/lib/lastlog/lastlog2.db"], { err: "ignore" }).then(() => { ++ setLastlogPath("/var/lib/lastlog/lastlog2.db"); ++ }).catch(() => { ++ setLastlogPath(null); ++ }); ++ }); ++ }, []); + +- // Watch `/var/run/utmp` to register when user logs in or out +- const handle = cockpit.file("/var/run/utmp", { superuser: "try", binary: true }); +- handle.watch(() => { ++ useEffect(() => { ++ if (lastlogpath !== null) { + get_expire(user).then(setExpiration); +- }, { read: false }); +- return handle.close; +- }, [user, accounts]); ++ ++ // Watch lastlog log to register when user logs in or out ++ const handle = cockpit.file(lastlogpath, { superuser: "try", binary: true }); ++ handle.watch(() => { ++ get_expire(user).then(setExpiration); ++ }, { read: false }); ++ return handle.close; ++ } ++ }, [user, accounts, lastlogpath]); + + const [edited_real_name, set_edited_real_name] = useState(null); + const [committing_real_name, set_committing_real_name] = useState(false); +-- +2.45.1 + diff --git a/0002-selinux-temporary-remove-setroubleshoot-section.patch b/0002-selinux-temporary-remove-setroubleshoot-section.patch new file mode 100644 index 0000000..40a27fe --- /dev/null +++ b/0002-selinux-temporary-remove-setroubleshoot-section.patch @@ -0,0 +1,13 @@ +Index: cockpit-251.3/pkg/selinux/setroubleshoot-view.jsx +=================================================================== +--- cockpit-251.3.orig/pkg/selinux/setroubleshoot-view.jsx ++++ cockpit-251.3/pkg/selinux/setroubleshoot-view.jsx +@@ -458,7 +458,7 @@ export class SETroubleshootPage extends + + + {modifications} +- {troubleshooting} ++ { !this.props.connected || troubleshooting} + + + diff --git a/0002-users-Support-for-watching-lastlog2-and-wutmp-on-overview-page.patch b/0002-users-Support-for-watching-lastlog2-and-wutmp-on-overview-page.patch new file mode 100644 index 0000000..f9cc563 --- /dev/null +++ b/0002-users-Support-for-watching-lastlog2-and-wutmp-on-overview-page.patch @@ -0,0 +1,157 @@ +From 059a8d35a3d9e54d86ff8178967a8fc98f428f11 Mon Sep 17 00:00:00 2001 +From: Luna +Date: Tue, 21 May 2024 13:21:54 +0530 +Subject: [PATCH] users: Support for watching lastlog2 and wutmp on overview + page + +--- + pkg/users/account-details.js | 26 ++++++++++---------------- + pkg/users/users.js | 27 +++++++++++++++++---------- + pkg/users/utils.js | 14 ++++++++++++++ + 3 files changed, 41 insertions(+), 26 deletions(-) + +diff --git a/pkg/users/account-details.js b/pkg/users/account-details.js +index 11c7870af..8159a1cf3 100644 +--- a/pkg/users/account-details.js ++++ b/pkg/users/account-details.js +@@ -48,7 +48,8 @@ import { account_shell_dialog } from "./shell-dialog.js"; + import { set_password_dialog, reset_password_dialog } from "./password-dialogs.js"; + import { AccountLogs } from "./account-logs-panel.jsx"; + import { AuthorizedKeys } from "./authorized-keys-panel.js"; +-import { get_locked } from "./utils.js"; ++import { get_locked, getUtmpPath } from "./utils.js"; ++import { useInit } from 'hooks.js'; + + const _ = cockpit.gettext; + +@@ -98,32 +99,25 @@ function get_expire(name) { + + export function AccountDetails({ accounts, groups, current_user, user, shells }) { + const [expiration, setExpiration] = useState(null); +- const [lastlogpath, setLastlogPath] = useState(null); ++ const [utmppath, setUtmpPath] = useState(null); + +- useEffect(() => { +- cockpit.spawn(["test", "-e", "/var/run/utmp"], { err: "ignore" }).then(() => { +- setLastlogPath("/var/run/utmp"); +- }).catch(() => { +- cockpit.spawn(["test", "-e", "/var/lib/lastlog/lastlog2.db"], { err: "ignore" }).then(() => { +- setLastlogPath("/var/lib/lastlog/lastlog2.db"); +- }).catch(() => { +- setLastlogPath(null); +- }); +- }); +- }, []); ++ // react wants sync functions that wrap async ones to prevent race conditions ++ useInit(async () => { ++ setUtmpPath(await getUtmpPath()); ++ }); + + useEffect(() => { +- if (lastlogpath !== null) { ++ if (utmppath !== null) { + get_expire(user).then(setExpiration); + + // Watch lastlog log to register when user logs in or out +- const handle = cockpit.file(lastlogpath, { superuser: "try", binary: true }); ++ const handle = cockpit.file(utmppath, { superuser: "try", binary: true }); + handle.watch(() => { + get_expire(user).then(setExpiration); + }, { read: false }); + return handle.close; + } +- }, [user, accounts, lastlogpath]); ++ }, [user, accounts, utmppath]); + + const [edited_real_name, set_edited_real_name] = useState(null); + const [committing_real_name, set_committing_real_name] = useState(false); +diff --git a/pkg/users/users.js b/pkg/users/users.js +index 08029bdfa..006acf1c3 100755 +--- a/pkg/users/users.js ++++ b/pkg/users/users.js +@@ -31,7 +31,7 @@ import { usePageLocation, useLoggedInUser, useFile, useInit } from "hooks.js"; + import { etc_passwd_syntax, etc_group_syntax, etc_shells_syntax } from "pam_user_parser.js"; + import { EmptyStatePanel } from "cockpit-components-empty-state.jsx"; + +-import { get_locked } from "./utils.js"; ++import { get_locked, getUtmpPath } from "./utils.js"; + import { AccountsMain } from "./accounts-list.js"; + import { AccountDetails } from "./account-details.js"; + +@@ -69,15 +69,19 @@ function AccountsPage() { + const [max_uid, setMaxUid] = useState(60000); + const [details, setDetails] = useState(null); + +- useInit(() => { ++ useInit(async () => { ++ const utmppath = await getUtmpPath(); + const debouncedGetLogins = debounce(100, () => { + getLogins().then(setDetails); + }); + +- // Watch `/var/run/utmp` to register when user logs in or out +- const handleUtmp = cockpit.file("/var/run/utmp", { superuser: "try", binary: true }); +- handleUtmp.watch(() => debouncedGetLogins(), { read: false }); ++ let handleUtmp; + ++ if (utmppath !== null) { ++ // Watch `/var/run/utmp` or `/var/lib/wtmpdb/wtmp.db` to register when user logs in or out ++ handleUtmp = cockpit.file(utmppath, { superuser: "try", binary: true }); ++ handleUtmp.watch(() => debouncedGetLogins(), { read: false }); ++ } + // Watch /etc/shadow to register lock/unlock/expire changes; but avoid reading it, it's sensitive data + const handleShadow = cockpit.file("/etc/shadow", { superuser: "try" }); + handleShadow.watch(() => debouncedGetLogins(), { read: false }); +@@ -153,19 +157,22 @@ function AccountsPage() { + } else if (path.length === 1) { + return ( + ++ current_user={current_user_info?.name} user={path[0]} shells={shells} /> + ); + } else return null; + } + + async function getLogins() { +- let lastlog = ""; ++ let LastLogPath; + try { +- lastlog = await cockpit.spawn(["lastlog"], { environ: ["LC_ALL=C"] }); +- } catch (err) { +- console.warn("Unexpected error when getting last login information", err); ++ await cockpit.spawn(["test", "-e", "/var/lib/lastlog/lastlog2.db"], { err: "ignore" }); ++ LastLogPath = "lastlog2"; ++ } catch (err1) { ++ LastLogPath = "lastlog"; + } + ++ const lastlog = await cockpit.spawn([LastLogPath], { environ: ["LC_ALL=C"] }); ++ + let currentLogins = []; + try { + const w = await cockpit.spawn(["w", "-sh"], { environ: ["LC_ALL=C"] }); +diff --git a/pkg/users/utils.js b/pkg/users/utils.js +index a3837ef3c..b28c6188e 100644 +--- a/pkg/users/utils.js ++++ b/pkg/users/utils.js +@@ -12,3 +12,17 @@ export const get_locked = name => + console.warn(`Failed to obtain account lock information for ${name}`, exc); + } + }); ++ ++export async function getUtmpPath() { ++ try { ++ await cockpit.spawn(["test", "-e", "/var/run/utmp"], { err: "ignore" }); ++ return "/var/run/utmp"; ++ } catch (err1) { ++ try { ++ await cockpit.spawn(["test", "-e", "/var/lib/wtmpdb/wtmp.db"], { err: "ignore" }); ++ return "/var/lib/wtmpdb/wtmp.db"; ++ } catch (err2) { ++ return null; ++ } ++ } ++} +-- +2.45.1 + diff --git a/0004-leap-gnu18-removal.patch b/0004-leap-gnu18-removal.patch new file mode 100644 index 0000000..7ae0bc4 --- /dev/null +++ b/0004-leap-gnu18-removal.patch @@ -0,0 +1,11 @@ +--- cockpit/src/Makefile.am.orig ++++ cockpit/src/Makefile.am +@@ -44,7 +44,7 @@ + $(NULL) + + AM_CFLAGS = \ +- -std=gnu18 \ ++ -std=gnu11 \ + -pthread \ + -Wall \ + -Werror=strict-prototypes \ diff --git a/README.packaging b/README.packaging new file mode 100644 index 0000000..8fe557d --- /dev/null +++ b/README.packaging @@ -0,0 +1,44 @@ +The upstream cockpit spec file is rather complex and ugly. It does +contain information we need though, such as the bundled node +modules. Therefore the package reuses the upstream spec file and +applies openSUSE specifics that upstream doesn't accept on top. For +that purpose a git repo tracks the spec file changes: +https://github.com/lnussel/cockpit + +There' an opensuse-$VERSION branch for each release + +For simple fixes it's fine to just submit the spec file by OBS +means, I'll retrofit in git. Don't worry about that. + +For version updates the git workflow really is needed to maintain +mental health though. + +The following workflow is used to update the package to a newer +version: + +- create a branch for the new version based on the old one: + git checkout -b opensuse-$NEW_VERSION opensuse-$OLD_VERSION +- use interactive rebase to amend the commits marked as EDIT THIS: + git rebase -i $NEW_VERSION + * for the very fist commit download the new tarball and extract + the spec file from it. Copy the spec file over + tools/cockpit.spec. That is basically what changed between the + versions wrt spec file. + * the second one adjust the spec file to have $NEW_VERSION. For + whatever reason the upstream spec file alwas has version 0. + * the rest of the changes should just apply. +- copy the spec file back into the OBS checkout and continue with + regular tasks related to updating packages. +- If any further spec file changes were needed, copy the spec back + into the git tree and commit there. Amend and reorder as needed. +- When done, push the git repo. + +Sending fixes upstream: + +if you have any changes that should go upstream, create a new, clean +branch and cherry pick *one* commit into it. Upstream wants pull +requests with only one commit + +NOTE: ONLY the .spec file should be in the git. + +IDEA: maybe other things should be removed from the git tree then? diff --git a/_service b/_service new file mode 100644 index 0000000..71ff66f --- /dev/null +++ b/_service @@ -0,0 +1,32 @@ + + + https://github.com/dgdavid/cockpit-suse-theme.git + + git + main + + + cockpit-suse-theme.obsinfo + + cockpit-suse-theme + + + @PARENT_TAG@ + https://github.com/cockpit-project/cockpit.git/ + git + 316 + disable + + + node_modules.obscpio + node_modules.spec.inc + 1000 + + + cockpit.obsinfo + + + cockpit + + diff --git a/_servicedata b/_servicedata new file mode 100644 index 0000000..4a037d0 --- /dev/null +++ b/_servicedata @@ -0,0 +1,6 @@ + + + http://github.com/cockpit-project/cockpit.git + 046b3d4b381cd60f9d44756fc51f15ed7e17d0b5 + https://github.com/dgdavid/cockpit-suse-theme.git + fe08b35e64ad45f4b56cd636fdfec8fb18d69ab7 \ No newline at end of file diff --git a/cockpit-316.obscpio b/cockpit-316.obscpio new file mode 100644 index 0000000..1463e5c --- /dev/null +++ b/cockpit-316.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b4166607df55d8cab0cc53e91a64c113e1160b32da59a97923b8efe29ad37f0 +size 21760525 diff --git a/cockpit-rpmlintrc b/cockpit-rpmlintrc new file mode 100644 index 0000000..3aff21a --- /dev/null +++ b/cockpit-rpmlintrc @@ -0,0 +1,4 @@ +# False positive +addFilter('explicit-lib-dependency.*libvirt-client'); +# will break cockpit functionality if we changed shebangs +addFilter('env-script-interpreter') \ No newline at end of file diff --git a/cockpit-suse-theme.obscpio b/cockpit-suse-theme.obscpio new file mode 100644 index 0000000..a0c73e4 --- /dev/null +++ b/cockpit-suse-theme.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db2ad45271a504dabf0234c4b3fba732a9675526ae6d6d1350cd3c8c8962be9a +size 1275916 diff --git a/cockpit-suse-theme.obsinfo b/cockpit-suse-theme.obsinfo new file mode 100644 index 0000000..1a37f47 --- /dev/null +++ b/cockpit-suse-theme.obsinfo @@ -0,0 +1,4 @@ +name: cockpit-suse-theme +version: +mtime: 1655379139 +commit: fe08b35e64ad45f4b56cd636fdfec8fb18d69ab7 diff --git a/cockpit.changes b/cockpit.changes new file mode 100644 index 0000000..8503c8e --- /dev/null +++ b/cockpit.changes @@ -0,0 +1,556 @@ +------------------------------------------------------------------- +Wed Jul 3 10:26:08 UTC 2024 - Alice Brooks + +- fix suse_docs.patch causing invalid json against the storaged manifest bsc#1227299 + +------------------------------------------------------------------- +Thu Jun 13 11:02:10 UTC 2024 - Luna D Dragon + +- disable selinux on leap versions without selinux +- set libexec dir to %_libexecdir (bsc#1223533) + +------------------------------------------------------------------- +Thu May 16 08:12:47 UTC 2024 - Luna D Dragon + +- new version 316: + * cockpit.js API: Fix format_bytes() units +- add 0001-users-Support-for-watching-lastlog2.patch (bsc#1220551) +- add 0002-users-Support-for-watching-lastlog2-and-wutmp-on-overview-page.patch (bsc#1220551) + +------------------------------------------------------------------- +Wed Apr 17 11:19:32 UTC 2024 - Adam Majer + +- new version 315: + * Networking: Show additional ports for each firewall zone + * Networking: List Firewall active zones when unprivileged + * Inline documentation + * Support for transient virtual machines + * UEFI for virtual machines + * Unattended virtual machines installation + * Localize times + * Better support for various TLS certificate formats + * Overview: Add CPU utilization to usage card + * Dashboard: Support SSH identity unlocking when adding new machines + * SElinux: Introduce an Ansible automation script + * Machines: Support “bridge” type network interfaces + * Machines: Support “bus” type disk configuration + +- suse_docs.patch, storage-btrfs.patch: refreshed + +------------------------------------------------------------------- +Tue Apr 16 12:11:05 UTC 2024 - Adam Majer + +- Do not require setroubleshoot in cockpit-selinux on Leap. + It's not there + +------------------------------------------------------------------- +Mon Mar 4 13:24:23 UTC 2024 - Adam Majer + +- cockpit.pam: respect /etc/cockpit/disallowed-users + This means by default root cannot login with password to cockpit + (bsc#1216080) + +------------------------------------------------------------------- +Thu Feb 29 16:40:06 UTC 2024 - Cathy Hu + +- Remove SELinux file context for /usr/bin/cockpit-bridge, this + is already defined in the main selinux-policy package (bsc#1220385). + Modified selinux_libdir.patch + +------------------------------------------------------------------- +Mon Feb 26 10:52:55 UTC 2024 - Dominique Leuenberger + +- Use %patch -P N instead of deprecated %patchN. + +------------------------------------------------------------------- +Thu Feb 15 12:21:55 UTC 2024 - Adam Majer + +- suse-microos-branding.patch: fix branding for SLE Micro + (bsc#1219929) +- don't clobber existing links with empty files + +------------------------------------------------------------------- +Wed Jan 31 11:02:35 UTC 2024 - Adam Majer + +- new version 309: + * storage redesign + * initial btrfs support + https://cockpit-project.org/blog/cockpit-309.html + +------------------------------------------------------------------- +Thu Jan 25 09:36:45 UTC 2024 - Luna D Dragon + +- suse_docs.patch: replace with suse docs and move docs with out eqiv + to docs-rh (bsc#1219088) +- hide-docs.patch: obsolete by above, removed + +------------------------------------------------------------------- +Thu Jan 25 09:08:12 UTC 2024 - Dominique Leuenberger + +- Provide users/groups cockpit-wsinstance and cockpit-ws: they are + generated by cockpit-ws %pre script. + +------------------------------------------------------------------- +Wed Jan 24 12:55:20 UTC 2024 - Adam Majer + +- hide-docs.patch: hide RHEL docs in shell/manifest.json + +------------------------------------------------------------------- +Fri Jan 12 16:40:17 UTC 2024 - Adam Majer + +- enable python-bridge for suse distros +- vendor.tar.gz -- submodules in vendor/ subdirectory. These are not part + of original tarball because obs service wants to bundle node_modules + there too.... + +------------------------------------------------------------------- +Thu Dec 21 15:22:27 UTC 2023 - Adam Majer - 307 + +- new version 307: + https://cockpit-project.org/blog/cockpit-307.html + https://cockpit-project.org/blog/cockpit-306.html + https://cockpit-project.org/blog/cockpit-305.html + https://cockpit-project.org/blog/cockpit-304.html + https://cockpit-project.org/blog/cockpit-303.html + https://cockpit-project.org/blog/cockpit-302.html + https://cockpit-project.org/blog/cockpit-301.html + +- css-overrides.patch, storage-btrfs.patch: refreshed + +------------------------------------------------------------------- +Wed Sep 20 16:17:59 UTC 2023 - Miika Alikirri + +- Port SLE selinux bug fix from SLE Micro 5.5 + * Copied selinux_libdir.patch from SLEM package + +------------------------------------------------------------------- +Fri Sep 8 12:53:26 UTC 2023 - Adam Majer - 300.1 + +- new version 300.1 + https://cockpit-project.org/blog/cockpit-300.html + https://cockpit-project.org/blog/cockpit-299.html + +------------------------------------------------------------------- +Fri Sep 8 12:29:33 UTC 2023 - Adam Majer + +- Re-add pwscore dependency for SLE + +------------------------------------------------------------------- +Thu Aug 31 10:00:06 UTC 2023 - Miika Alikirri + +- Fix building for SLE15.5 and SLE15.4 + +------------------------------------------------------------------- +Fri Aug 18 13:15:17 UTC 2023 - Adam Majer + +- new version 298: + https://cockpit-project.org/blog/cockpit-298.html + +------------------------------------------------------------------- +Tue Aug 15 13:53:14 UTC 2023 - Zdenek Kubala + +- set setroubleshoot-server dependency and do not apply + 0002-selinux-temporary-remove-setroubleshoot-section-patch for + cockpit-selinux when build for SLE Micro 5.5 + +------------------------------------------------------------------- +Thu Aug 3 11:35:47 UTC 2023 - Adam Majer + +- new version 297: + - https://cockpit-project.org/blog/cockpit-297.html +- hide-docs.patch: refreshed + +------------------------------------------------------------------- +Mon Jul 17 12:19:27 UTC 2023 - Adam Majer + +- new version 296: + - https://cockpit-project.org/blog/cockpit-296.html + - https://cockpit-project.org/blog/cockpit-295.html + - https://cockpit-project.org/blog/cockpit-294.html +- 0004-leap-gnu18-removal.patch: added support for Leap thanks to Lubos + +------------------------------------------------------------------- +Tue Jun 13 12:39:20 UTC 2023 - Adam Majer + +- Add fake openSUSE branding target when building on non-openSUSE + builds so branding does not need to be removed +- Remove tests package so we don't have to ship a test PAM module + +------------------------------------------------------------------- +Fri Jun 2 13:26:45 UTC 2023 - Adam Majer + +- new version 293: + - https://cockpit-project.org/blog/cockpit-293.html +- refreshed: css-overrides.patch + +------------------------------------------------------------------- +Tue May 30 15:05:45 UTC 2023 - Adam Majer + +- new version 292: + - https://cockpit-project.org/blog/cockpit-292.html +- refreshed patches: css-overrides.patch, hide-pcp.patch, + 0001-selinux-allow-login-to-read-motd-file.patch + +------------------------------------------------------------------- +Tue Feb 7 15:47:35 UTC 2023 - Stefan Schubert + +- Migration of PAM settings to /usr/lib/pam.d. + +------------------------------------------------------------------- +Wed Jan 25 11:13:36 UTC 2023 - Luna D Dragon + +- restore dependency on /usr/bin/pwscore (bsc#1202277) +- remove remove-pwscore.patch + +------------------------------------------------------------------- +Mon Nov 28 13:34:07 UTC 2022 - Zdenek Kubala + +- enable build of cockpit-selinux module +- changes to keep it sync with sle micro + (0002-selinux-temporary-remove-setroubleshoot-section.patch) + +------------------------------------------------------------------- +Tue Sep 20 08:20:16 UTC 2022 - Adam Majer + +- new version 276.1 + - login: Use valid selectors when testing for :is() / :where() support. + - stability and performance improvements + - previous changes https://cockpit-project.org/blog/cockpit-275.html +- css-overrides.patch, hide-docs.patch, remove-pwscore.patch: refreshed +- kdump-close.patch, kdump-refactor.patch, kdump-suse.patch: upstreamed + and removed + +------------------------------------------------------------------- +Tue Sep 13 09:46:17 UTC 2022 - Adam Majer + +- Fix cockpit-storage dependencies +- Merge SUSE branding into cockpit package + +------------------------------------------------------------------- +Mon Sep 5 08:09:56 UTC 2022 - Jacek Tomasiak + +- Update kdump-suse.patch to match upstream. + +------------------------------------------------------------------- +Wed Aug 24 12:25:42 UTC 2022 - Jacek Tomasiak + +- Add kdump-close.patch required by patches below. +- Add kdump-refactor.patch and kdump-suse.patch to support SUSE + kdump config management in cockpit. + +------------------------------------------------------------------- +Wed Aug 24 07:37:46 UTC 2022 - Adam Majer + +- Use a list of available brandings to include in cockpit-ws + package instead of resolving by symlinks. + +------------------------------------------------------------------- +Thu Jul 28 08:41:13 UTC 2022 - Jacek Tomasiak + +- Update suse-microos-branding.patch for new /etc/os-release ID. +- Add storage-btrfs.patch to enable BTRFS use in cockpit-storage. + +------------------------------------------------------------------- +Thu Jun 23 09:27:17 UTC 2022 - Adam Majer + +- Add conflict between cockpit-networkmanager and cockpit-wicked + as they use the same URL paths. + +------------------------------------------------------------------- +Mon Jun 20 08:15:34 UTC 2022 - Adam Majer + +- Re-arrange patches and apply them manually again. + Some were accidentally added and should be sle only + +------------------------------------------------------------------- +Fri Jun 17 10:09:09 UTC 2022 - Adam Majer + +- css-overrides.patch: css overrides for better theming support + +------------------------------------------------------------------- +Fri Jun 10 08:22:31 UTC 2022 - Adam Majer + +- new version 271 + https://cockpit-project.org/blog/cockpit-271.html +- cockpit-redhatfont.diff: not needed, dropped +- 0001-selinux-allow-login-to-read-motd-file.patch, hide-docs.patch, + hide-pcp.patch remove-pwscore.patch: refreshed + +------------------------------------------------------------------- +Fri Mar 18 14:28:24 UTC 2022 - Jacek Tomasiak + +- re-add suse-microos-branding.patch from GitHub +- add hide-docs.patch (bsc#1197003) + +------------------------------------------------------------------- +Tue Mar 15 13:42:38 UTC 2022 - Jacek Tomasiak + +- make package compatible with OBS version (bsc#1197224): + * move branding images to distribution-logos-SLE package + * re-add dependency on distribution-logos + * remove branding patch and assets (suse-microos-branding.patch, + suse-microos-branding.tar.gz); moved to GitHub fork + * remove local __python3 macro + * apply SLE specific patches only on SLE + +------------------------------------------------------------------- +Mon Feb 28 10:41:31 UTC 2022 - Jacek Tomasiak + +- add hide-pcp.patch to hide references to PCP (Performance + Co-Pilot) and metric collection (bsc#1195943). The cockpit-pcp + package is not included in SLE Micro 5.2 base and these parts + require it. + +------------------------------------------------------------------- +Mon Jan 31 15:30:24 UTC 2022 - Jacek Tomasiak + +- change self-signed cert group from cockpit-wsintance to + cockpit-ws on upgrade + +------------------------------------------------------------------- +Mon Jan 31 08:26:46 UTC 2022 - Jacek Tomasiak + +- update to new LTS version from openSUSE:Factory +- port remove-pwscore.patch + * remove dependency on pwscore (bsc#1182924) + * remove password strenth indicator +- port branding changes as suse-microos "theme" + * remove suse_cockpit_assets.tar.gz + * add suse-microos-branding.tar.gz + * remove branding_tests.patch + * add suse-microos-branding.patch +- remove files not needed to build this version anymore + * webpack-warnings-are-not-errors.patch + * github_package.patch + * nodejs_output_helper.bash +- remove cockpit.permissions workaround (bsc#1169614) + +------------------------------------------------------------------- +Fri Jan 28 14:54:44 UTC 2022 - Adam Majer + +- new version 251.3 + * https://cockpit-project.org/blog/cockpit-251.html + with additional fixes + * Fix "Administrative Access" prompt for "Duo" MFA + +------------------------------------------------------------------- +Thu Aug 19 14:54:46 UTC 2021 - Ludwig Nussel + +- add --legacy-peer-deps to fix build + +------------------------------------------------------------------- +Tue Aug 3 14:46:16 UTC 2021 - Ludwig Nussel + +- new version 250 + https://cockpit-project.org/blog/cockpit-250.html +- fix pam_motd selinux denial (0001-selinux-allow-login-to-read-motd-file.patch) + +------------------------------------------------------------------- +Thu May 27 11:01:03 UTC 2021 - Adam Majer + +- new version 245 + https://cockpit-project.org/blog/cockpit-245.html + +------------------------------------------------------------------- +Tue May 18 08:06:31 UTC 2021 - Ludwig Nussel + +- new version 244.1 + https://cockpit-project.org/blog/cockpit-244.html +- enable SELinux + +------------------------------------------------------------------- +Mon May 3 14:11:01 UTC 2021 - Ludwig Nussel + +- install all of pkg/lib in -devel package. Cockpit-machines needs more + +------------------------------------------------------------------- +Fri Apr 30 15:51:43 UTC 2021 - Ludwig Nussel + +- new version 243 + https://cockpit-project.org/blog/cockpit-243.html + https://cockpit-project.org/blog/cockpit-242.html + https://cockpit-project.org/blog/cockpit-241.html + https://cockpit-project.org/blog/cockpit-240.html + https://cockpit-project.org/blog/cockpit-239.html + +------------------------------------------------------------------- +Wed Feb 24 17:03:41 UTC 2021 - Adam Majer + +- new version 238.1 + https://cockpit-project.org/blog/cockpit-238.html + https://cockpit-project.org/blog/cockpit-237.html +- No longer recompress tarball at buildtime + +------------------------------------------------------------------- +Thu Feb 4 16:18:13 UTC 2021 - Ludwig Nussel + +- Rebuild from git leveraging local-npm-registry (needs + cockpit-redhatfont.diff) + +------------------------------------------------------------------- +Fri Jan 22 15:38:53 UTC 2021 - Ludwig Nussel + +- new version 236 + https://cockpit-project.org/blog/cockpit-236.html + +------------------------------------------------------------------- +Fri Jan 22 08:53:25 UTC 2021 - Ludwig Nussel + +- new version 235 + https://cockpit-project.org/blog/cockpit-235.html + https://cockpit-project.org/blog/cockpit-234.html + https://cockpit-project.org/blog/cockpit-233.html + +------------------------------------------------------------------- +Fri Nov 27 12:39:21 UTC 2020 - Ludwig Nussel + +- new version 232 + https://cockpit-project.org/blog/cockpit-232.html + https://cockpit-project.org/blog/cockpit-231.html + +------------------------------------------------------------------- +Thu Oct 15 08:16:01 UTC 2020 - Ludwig Nussel + +- new version 230 + https://cockpit-project.org/blog/cockpit-230.html + +------------------------------------------------------------------- +Tue Oct 6 06:24:58 UTC 2020 - Ludwig Nussel + +- new version 229 + https://cockpit-project.org/blog/cockpit-229.html + +------------------------------------------------------------------- +Thu Oct 1 11:32:48 UTC 2020 - Ludwig Nussel + +- new version 228 + https://cockpit-project.org/blog/cockpit-228.html + https://cockpit-project.org/blog/cockpit-227.html + https://cockpit-project.org/blog/cockpit-226.html +- enable cockpit-machines to manage libvirt + +------------------------------------------------------------------- +Thu Sep 10 12:49:00 UTC 2020 - Ludwig Nussel + +- adjust spec file to match upstream + +------------------------------------------------------------------- +Fri Sep 4 12:09:16 UTC 2020 - Thorsten Kukuk + +- cockpit-ws: don't require systemd (allows to build a very small + cockpit-ws container) + +------------------------------------------------------------------- +Mon Aug 31 15:46:35 UTC 2020 - Ludwig Nussel + +- Add README.packaging for packagers + +------------------------------------------------------------------- +Fri Aug 14 12:09:24 UTC 2020 - Ludwig Nussel + +- new version 225: + https://cockpit-project.org/blog/cockpit-223.html + https://cockpit-project.org/blog/cockpit-224.html + https://cockpit-project.org/blog/cockpit-225.html + +------------------------------------------------------------------- +Wed Aug 12 09:33:17 UTC 2020 - Thorsten Kukuk + +- Require group wheel +- Add permission macros [bsc#1169614] +- Create tmpfiles in %post install + +------------------------------------------------------------------- +Fri Jun 26 12:09:09 UTC 2020 - Ludwig Nussel + +- new version 222: + https://cockpit-project.org/blog/cockpit-222.html + changelog from 221: + https://cockpit-project.org/blog/cockpit-221.html +- enable docker module + +------------------------------------------------------------------- +Tue Jun 9 12:11:54 UTC 2020 - Ludwig Nussel + +- new version 220: + https://cockpit-project.org/blog/cockpit-220.html + +------------------------------------------------------------------- +Tue Jun 9 08:46:59 UTC 2020 - Ludwig Nussel + +- disable selinux, sosreport and machines subpackages due to missing + dependencies + +------------------------------------------------------------------- +Wed Apr 29 13:26:03 UTC 2020 - Ludwig Nussel + +- remove badness overrides to allow Factory submission + +------------------------------------------------------------------- +Wed Apr 29 07:50:41 UTC 2020 - Ludwig Nussel + +- remove branding with stale symlinks. Can't rely on /etc/os-release as OBS may + use the dummy-release package. + +------------------------------------------------------------------- +Tue Apr 28 09:18:22 UTC 2020 - Ludwig Nussel + +- use pkgconfig(systemd) and pkgconfig(krb5) +- fix build with glib update (0001-bridge-Pass-connectable-to-TLS-client-connection.patch) + +------------------------------------------------------------------- +Fri Mar 27 10:50:51 UTC 2020 - Ludwig Nussel + +- new version 215 + +------------------------------------------------------------------- +Thu Aug 22 09:50:14 UTC 2019 - Ludwig Nussel + +- new version 200 + +------------------------------------------------------------------- +Fri Jun 21 13:44:05 UTC 2019 - Boris Manojlovic + +- updated to latest release 195 + +------------------------------------------------------------------- +Thu Mar 7 13:23:36 UTC 2019 - Alex + +- New upstream version - 189 + +------------------------------------------------------------------- +Mon Feb 4 18:24:55 UTC 2019 - aevseev@gmail.com + +- New upstream version - 186 + +------------------------------------------------------------------- +Wed Oct 24 13:37:31 UTC 2018 - aevseev@gmail.com + +- New upstream version - 180 + +------------------------------------------------------------------- +Fri Sep 7 10:24:09 UTC 2018 - aevseev@gmail.com + +- New upstream version - 177 + +------------------------------------------------------------------- +Mon Aug 27 08:28:01 UTC 2018 - aevseev@gmail.com + +- First build. Version - 176. + +------------------------------------------------------------------- +Tue Oct 13 11:41:44 UTC 2015 - kkaempf@suse.com + +- Update to 0.79 + * Vagrant file for Cockpit development + * Use libvirt for testing + * Display only last lines of Kubernetes container logs + + See https://github.com/cockpit-project/cockpit/releases + +- Add branding-symlinks.patch, SUSE doesn't carry Fedora pixmaps + +------------------------------------------------------------------- +Sat Feb 7 13:22:23 UTC 2015 - kkaempf@suse.com + +- Initial release 0.38 diff --git a/cockpit.obsinfo b/cockpit.obsinfo new file mode 100644 index 0000000..d661354 --- /dev/null +++ b/cockpit.obsinfo @@ -0,0 +1,4 @@ +name: cockpit +version: 316 +mtime: 1714038358 +commit: 3a998b015807a33762fe40572665ea8a9a6481f4 diff --git a/cockpit.pam b/cockpit.pam new file mode 100644 index 0000000..376d79f --- /dev/null +++ b/cockpit.pam @@ -0,0 +1,10 @@ +#%PAM-1.0 +auth substack common-auth +# List of users to deny access to Cockpit, by default root is included. +auth required pam_listfile.so item=user sense=deny file=/etc/cockpit/disallowed-users onerr=succeed +account required pam_nologin.so +account include common-account +password include common-password +session required pam_loginuid.so +session optional pam_keyinit.so force revoke +session include common-session diff --git a/cockpit.spec b/cockpit.spec new file mode 100644 index 0000000..38f55d3 --- /dev/null +++ b/cockpit.spec @@ -0,0 +1,870 @@ +# +# Copyright (C) 2014-2020 Red Hat, Inc. +# +# Cockpit is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# Cockpit is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with Cockpit; If not, see . +# + +# +# This file is maintained at the following location: +# https://github.com/cockpit-project/cockpit/blob/main/tools/cockpit.spec +# +# If you are editing this file in another location, changes will likely +# be clobbered the next time an automated release is done. +# +# Check first cockpit-devel@lists.fedorahosted.org +# + +# earliest base that the subpackages work on; this is still required as long as +# we maintain the basic/optional split, then it can be replaced with just %{version}. +%define required_base 266 + +# we generally want CentOS packages to be like RHEL; special cases need to check %{centos} explicitly +%if 0%{?centos} +%define rhel %{centos} +%endif + +%define _hardened_build 1 + +%define __lib lib + +%if %{defined _pamdir} +%define pamdir %{_pamdir} +%else +%define pamdir %{_libdir}/security +%endif + +Name: cockpit +Summary: Web Console for Linux servers + +License: LGPL-2.1-or-later +URL: https://cockpit-project.org/ + +Version: 316 +Release: 0 +Source0: cockpit-%{version}.tar +Source1: cockpit.pam +Source2: cockpit-rpmlintrc +Source3: cockpit-suse-theme.tar +Source10: vendor.tar.gz +Source99: README.packaging +Source98: package-lock.json +Source97: node_modules.spec.inc +%include %{_sourcedir}/node_modules.spec.inc +Patch1: 0001-selinux-allow-login-to-read-motd-file.patch +Patch2: suse_docs.patch +Patch3: suse-microos-branding.patch +Patch4: css-overrides.patch +Patch5: storage-btrfs.patch +Patch6: 0001-users-Support-for-watching-lastlog2.patch +Patch7: 0002-users-Support-for-watching-lastlog2-and-wutmp-on-overview-page.patch +# SLE Micro specific patches +Patch101: hide-pcp.patch +Patch102: 0002-selinux-temporary-remove-setroubleshoot-section.patch +# For anything based on SLES 15 codebase (including Leap, SLE Micro) +Patch103: 0004-leap-gnu18-removal.patch +Patch104: selinux_libdir.patch + +%define build_all 1 +%if 0%{?rhel} == 8 && 0%{?epel} == 0 && !0%{?build_all} + +%if "%{name}" == "cockpit" +%define build_basic 1 +%define build_optional 0 +%else +%define build_basic 0 +%define build_optional 1 +%endif + +%else +%define build_basic 1 +%define build_optional 1 +%endif + +%if 0%{?build_optional} && 0%{?suse_version} == 0 +%define build_tests 1 +%endif +# pcp stopped building on ix86 +%define build_pcp 1 +%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10 || 0%{?suse_version} > 1500 +%ifarch %ix86 +%define build_pcp 0 +%endif +%endif +%if 0%{?suse_version} == 0 || 0%{?suse_version} > 1500 +# Ship custom SELinux policy +%define selinuxtype targeted +%define selinux_configure_arg --enable-selinux-policy=%{selinuxtype} +%define with_selinux 1 +%else +%define selinux_configure_arg --enable-selinux-policy=no +%endif + +BuildRequires: gcc +BuildRequires: pkgconfig(gio-unix-2.0) +BuildRequires: pkgconfig(json-glib-1.0) +BuildRequires: pkgconfig(polkit-agent-1) >= 0.105 +BuildRequires: pam-devel + +BuildRequires: autoconf automake +BuildRequires: make +BuildRequires: /usr/bin/python3 +BuildRequires: python3-devel +BuildRequires: gettext >= 0.21 +BuildRequires: libssh-devel >= 0.8.5 +BuildRequires: openssl-devel +BuildRequires: gnutls-devel >= 3.4.3 +BuildRequires: zlib-devel +BuildRequires: pkgconfig(krb5) >= 1.11 +BuildRequires: libxslt-devel +BuildRequires: glib-networking +BuildRequires: sed + +BuildRequires: glib2-devel >= 2.50.0 +# this is for runtimedir in the tls proxy ace21c8879 +BuildRequires: pkgconfig(libsystemd) >= 235 +%if 0%{?suse_version} +BuildRequires: distribution-release +%if %{build_pcp} +BuildRequires: libpcp-devel +BuildRequires: pcp-devel +BuildRequires: libpcp3 +BuildRequires: libpcp_import1 +%endif +BuildRequires: openssh +BuildRequires: distribution-logos +BuildRequires: wallpaper-branding +# needed for /var/lib/pcp directory ownership +BuildRequires: pcp +%else +%if %{build_pcp} +BuildRequires: pcp-libs-devel +%endif +BuildRequires: openssh-clients +BuildRequires: docbook-style-xsl +%endif +BuildRequires: krb5-server +BuildRequires: gdb + +# For documentation +BuildRequires: xmlto + +%if 0%{?with_selinux} +BuildRequires: selinux-policy +BuildRequires: selinux-policy-%{selinuxtype} +BuildRequires: selinux-policy-devel +%endif + +# for rebuilding nodejs bits +BuildRequires: npm +BuildRequires: sassc +BuildRequires: local-npm-registry + +# This is the "cockpit" metapackage. It should only +# Require, Suggest or Recommend other cockpit-xxx subpackages + +Requires: cockpit-bridge +Requires: cockpit-ws +Requires: cockpit-system + +# Optional components +Recommends: (cockpit-storaged if udisks2) +Recommends: (cockpit-packagekit if dnf) +Suggests: cockpit-pcp + +%if 0%{?rhel} == 0 +Recommends: (cockpit-networkmanager if NetworkManager) +# c-ostree is not in RHEL 8/9 +Recommends: (cockpit-ostree if rpm-ostree) +Suggests: cockpit-selinux +%endif +%if 0%{?rhel} && 0%{?centos} == 0 +Requires: subscription-manager-cockpit +%endif + +BuildRequires: python3-devel +BuildRequires: python3-pip +%if 0%{?rhel} == 0 && !0%{?suse_version} +# All of these are only required for running pytest (which we only do on Fedora) +BuildRequires: procps-ng +BuildRequires: pyproject-rpm-macros +BuildRequires: python3-pytest-asyncio +BuildRequires: python3-pytest-cov +BuildRequires: python3-pytest-timeout +BuildRequires: python3-tox-current-env +%endif + +%prep +%setup -q -n cockpit-%{version} -a 3 +%patch -P 1 -p1 +%patch -P 2 -p1 +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 +%patch -P 6 -p1 +%patch -P 7 -p1 + +# SLE Micro specific patches +%if 0%{?is_smo} +%patch -P 101 -p1 +# Patches for versions lower then SLE Micro 5.5 +%if 0%{?sle_version} < 150500 +%patch -P 102 -p1 +%endif +%endif +# For anything based on SLES 15 codebase (including Leap, SLEM) +%if 0%{?suse_version} == 1500 +%patch -P 103 -p1 +%patch -P 104 -p0 +%endif + +cp %SOURCE1 tools/cockpit.pam +# +rm -rf node_modules package-lock.json +local-npm-registry %{_sourcedir} install --also=dev --legacy-peer-deps +cd vendor; tar zxfO %SOURCE10 | tar xvi; cd .. + +%build +find node_modules -name \*.node -print -delete +touch node_modules/.stamp + +exec 2>&1 +PKG_NAME="Cockpit" +echo "m4_define(VERSION_NUMBER, %version)" > version.m4 +autoreconf -fvi -I tools +# +%configure \ + %{?selinux_configure_arg} \ + --with-cockpit-user=cockpit-ws \ + --with-cockpit-ws-instance-user=cockpit-wsinstance \ +%if 0%{?suse_version} + --docdir=%_defaultdocdir/%{name} \ + --libexecdir=%_libexecdir \ +%endif + --with-pamdir='%{pamdir}' \ +%if %{build_pcp} == 0 + --disable-pcp \ +%endif + +%if 0%{?with_selinux} +make -f /usr/share/selinux/devel/Makefile cockpit.pp +bzip2 -9 cockpit.pp +%endif + +%make_build + +%check +make -j$(nproc) check + +%if 0%{?rhel} == 0 && 0%{?suse_version} == 0 +%tox +%endif + +%install +# In obs we get write error: stdout +%make_install | tee make_install.log +make install-tests DESTDIR=%{buildroot} +%if 0%{?suse_version} > 1500 +mkdir -p $RPM_BUILD_ROOT%{_pam_vendordir} +install -p -m 644 tools/cockpit.pam $RPM_BUILD_ROOT%{_pam_vendordir}/cockpit +%else +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/pam.d +install -p -m 644 tools/cockpit.pam $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/cockpit +%endif +rm -f %{buildroot}/%{_libdir}/cockpit/*.so +install -D -p -m 644 AUTHORS COPYING README.md %{buildroot}%{_docdir}/cockpit/ + +# selinux +%if 0%{?with_selinux} +install -D -m 644 %{name}.pp.bz2 %{buildroot}%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 +install -D -m 644 -t %{buildroot}%{_mandir}/man8 selinux/%{name}_session_selinux.8cockpit +install -D -m 644 -t %{buildroot}%{_mandir}/man8 selinux/%{name}_ws_selinux.8cockpit +# create this directory in the build root so that %ghost sees the desired mode +install -d -m 700 %{buildroot}%{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name} +%endif + +# SUSE branding +mkdir -p %{buildroot}%{_datadir}/cockpit/branding/suse +pushd cockpit-suse-theme +cp src/css-overrides.css %{buildroot}%{_datadir}/cockpit/branding/suse +cp src/fonts.css %{buildroot}%{_datadir}/cockpit/branding/suse +cp -a src/fonts %{buildroot}%{_datadir}/cockpit/branding/suse +popd + +# Build the package lists for resource packages +# cockpit-bridge is the basic dependency for all cockpit-* packages, so centrally own the page directory +echo '%dir %{_datadir}/cockpit' > base.list +echo '%dir %{_datadir}/cockpit/base1' >> base.list +find %{buildroot}%{_datadir}/cockpit/base1 -type f -o -type l >> base.list +echo '%{_sysconfdir}/cockpit/machines.d' >> base.list +echo %{buildroot}%{_datadir}/polkit-1/actions/org.cockpit-project.cockpit-bridge.policy >> base.list +echo '%{_libexecdir}/cockpit-ssh' >> base.list + +%if %{build_pcp} +echo '%dir %{_datadir}/cockpit/pcp' > pcp.list +find %{buildroot}%{_datadir}/cockpit/pcp -type f >> pcp.list +%endif + +# when not building basic packages, remove their files +%if 0%{?build_basic} == 0 +for pkg in base1 branding motd kdump networkmanager selinux shell sosreport static systemd users metrics; do + rm -r %{buildroot}/%{_datadir}/cockpit/$pkg + rm -f %{buildroot}/%{_datadir}/metainfo/org.cockpit-project.cockpit-${pkg}.metainfo.xml +done +for data in doc man pixmaps polkit-1; do + rm -r %{buildroot}/%{_datadir}/$data +done +rm -r %{buildroot}/%{_prefix}/%{__lib}/tmpfiles.d +find %{buildroot}/%{_unitdir}/ -type f ! -name 'cockpit-session*' -delete +for libexec in cockpit-askpass cockpit-session cockpit-ws cockpit-tls cockpit-wsinstance-factory cockpit-client cockpit-client.ui cockpit-desktop cockpit-certificate-helper cockpit-certificate-ensure; do + rm -f %{buildroot}/%{_libexecdir}/$libexec +done +rm -rf %{buildroot}/%{_sysconfdir}/pam.d %{buildroot}/%{_sysconfdir}/motd.d %{buildroot}/%{_sysconfdir}/issue.d +%if 0%{?suse_version} > 1500 +rm -rf %{buildroot}/%{_pam_vendordir} +%else +rm -rf %{buildroot}/%{_sysconfdir}/pam.d +%endif +rm -f %{buildroot}/%{_libdir}/security/pam_* +rm -f %{buildroot}/usr/bin/cockpit-bridge +rm -f %{buildroot}%{_libexecdir}/cockpit-ssh +rm -f %{buildroot}%{_datadir}/metainfo/cockpit.appdata.xml +rm -rf %{buildroot}%{python3_sitelib}/cockpit* +%endif + +# when not building optional packages, remove their files +%if 0%{?build_optional} == 0 +for pkg in apps packagekit pcp playground storaged; do + rm -rf %{buildroot}/%{_datadir}/cockpit/$pkg +done +# files from -pcp +rm -rf %{buildroot}/%{_libexecdir}/cockpit-pcp %{buildroot}/%{_localstatedir}/lib/pcp/ +# files from -storaged +rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml +%endif + +%if 0%{?build_tests} == 0 +rm -rf %{buildroot}%{_datadir}/cockpit/playground +rm -f %{buildroot}/%{pamdir}/mock-pam-conv-mod.so +rm -f %{buildroot}/%{_unitdir}/cockpit-session.socket +rm -f %{buildroot}/%{_unitdir}/cockpit-session@.service +%endif + +echo '%dir %{_datadir}/cockpit/shell' >> system.list +find %{buildroot}%{_datadir}/cockpit/shell -type f >> system.list + +echo '%dir %{_datadir}/cockpit/systemd' >> system.list +find %{buildroot}%{_datadir}/cockpit/systemd -type f >> system.list + +echo '%dir %{_datadir}/cockpit/users' >> system.list +find %{buildroot}%{_datadir}/cockpit/users -type f >> system.list + +echo '%dir %{_datadir}/cockpit/metrics' >> system.list +find %{buildroot}%{_datadir}/cockpit/metrics -type f >> system.list + +echo '%dir %{_datadir}/cockpit/kdump' > kdump.list +find %{buildroot}%{_datadir}/cockpit/kdump -type f >> kdump.list + +echo '%dir %{_datadir}/cockpit/sosreport' > sosreport.list +find %{buildroot}%{_datadir}/cockpit/sosreport -type f >> sosreport.list + +echo '%dir %{_datadir}/cockpit/storaged' > storaged.list +find %{buildroot}%{_datadir}/cockpit/storaged -type f >> storaged.list + +echo '%dir %{_datadir}/cockpit/networkmanager' > networkmanager.list +find %{buildroot}%{_datadir}/cockpit/networkmanager -type f >> networkmanager.list + +echo '%dir %{_datadir}/cockpit/packagekit' > packagekit.list +find %{buildroot}%{_datadir}/cockpit/packagekit -type f >> packagekit.list + +echo '%dir %{_datadir}/cockpit/apps' >> packagekit.list +find %{buildroot}%{_datadir}/cockpit/apps -type f >> packagekit.list + +echo '%dir %{_datadir}/cockpit/selinux' > selinux.list +find %{buildroot}%{_datadir}/cockpit/selinux -type f >> selinux.list + +# echo '%dir %{_datadir}/cockpit/playground' > tests.list +# find %{buildroot}%{_datadir}/cockpit/playground -type f >> tests.list + +echo '%dir %{_datadir}/cockpit/static' > static.list +echo '%dir %{_datadir}/cockpit/static/fonts' >> static.list +find %{buildroot}%{_datadir}/cockpit/static -type f >> static.list + +sed -i "s|%{buildroot}||" *.list + +%if 0%{?suse_version} +# remove brandings with stale symlinks. Means they don't match +# the distro. +pushd %{buildroot}/%{_datadir}/cockpit/branding +ls --hide={default,kubernetes,opensuse,registry,sle-micro,suse} | xargs rm -rv +popd +# need this in SUSE as post build checks dislike stale symlinks +install -m 644 -D /dev/null %{buildroot}/run/cockpit/motd +test -e %{buildroot}/usr/share/cockpit/branding/opensuse/default-1920x1200.jpg || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/opensuse/default-1920x1200.jpg +test -e %{buildroot}/usr/share/cockpit/branding/sle-micro/apple-touch-icon.png || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/sle-micro/apple-touch-icon.png +test -e %{buildroot}/usr/share/cockpit/branding/sle-micro/default-1920x1200.png || install -m 644 -D /dev/null %{buildroot}/usr/share/cockpit/branding/sle-micro/default-1920x1200.png +# remove files of not installable packages +rm -r %{buildroot}%{_datadir}/cockpit/sosreport +rm -f %{buildroot}/%{_prefix}/share/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml +rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png +%else +%global _debugsource_packages 1 +%global _debuginfo_subpackages 0 + +%define find_debug_info %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_include_minidebuginfo:-m} %{?_find_debuginfo_dwz_opts} %{?_find_debuginfo_opts} %{?_debugsource_packages:-S debugsourcefiles.list} "%{_builddir}/%{?buildsubdir}" + +%endif +# /suse_version +rm -rf %{buildroot}/usr/src/debug + +# On RHEL kdump, networkmanager, selinux, and sosreport are part of the system package +%if 0%{?rhel} +cat kdump.list sosreport.list networkmanager.list selinux.list >> system.list +rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml +rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-kdump.metainfo.xml +rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml +rm -f %{buildroot}%{_datadir}/metainfo/org.cockpit-project.cockpit-networkmanager.metainfo.xml +rm -f %{buildroot}%{_datadir}/pixmaps/cockpit-sosreport.png +%endif + +mkdir -p %{buildroot}%{_datadir}/cockpit/devel +cp -a pkg/lib %{buildroot}%{_datadir}/cockpit/devel + +# ------------------------------------------------------------------------------- +# Sub-packages + +%description +The Cockpit Web Console enables users to administer GNU/Linux servers using a +web browser. + +It offers network configuration, log inspection, diagnostic reports, SELinux +troubleshooting, interactive command-line sessions, and more. + +%files +%{_docdir}/cockpit/AUTHORS +%{_docdir}/cockpit/COPYING +%{_docdir}/cockpit/README.md +%{_datadir}/metainfo/cockpit.appdata.xml +%{_datadir}/pixmaps/cockpit.png +%doc %{_mandir}/man1/cockpit.1.gz + + +%package bridge +Summary: Cockpit bridge server-side component +Requires: glib-networking +Provides: cockpit-ssh = %{version}-%{release} +# 233 dropped jquery.js, pages started to bundle it (commit 049e8b8dce) +Conflicts: cockpit-dashboard < 233 +Conflicts: cockpit-networkmanager < 233 +Conflicts: cockpit-storaged < 233 +Conflicts: cockpit-system < 233 +Conflicts: cockpit-tests < 233 +Conflicts: cockpit-docker < 233 + +%description bridge +The Cockpit bridge component installed server side and runs commands on the +system on behalf of the web based user interface. + +%files bridge -f base.list +%doc %{_mandir}/man1/cockpit-bridge.1.gz +%{_bindir}/cockpit-bridge +%{_libexecdir}/cockpit-askpass +%{python3_sitelib}/%{name}* + +%package doc +Summary: Cockpit deployment and developer guide +BuildArch: noarch + +%description doc +The Cockpit Deployment and Developer Guide shows sysadmins how to +deploy Cockpit on their machines as well as helps developers who want to +embed or extend Cockpit. + +%files doc +%exclude %{_docdir}/cockpit/AUTHORS +%exclude %{_docdir}/cockpit/COPYING +%exclude %{_docdir}/cockpit/README.md +%{_docdir}/cockpit + +%package system +Summary: Cockpit admin interface package for configuring and troubleshooting a system +BuildArch: noarch +Requires: cockpit-bridge >= %{version}-%{release} +%if !0%{?suse_version} +Requires: shadow-utils +%endif +Requires: grep +Requires: /usr/bin/pwscore +Requires: /usr/bin/date +Provides: cockpit-shell = %{version}-%{release} +Provides: cockpit-systemd = %{version}-%{release} +Provides: cockpit-tuned = %{version}-%{release} +Provides: cockpit-users = %{version}-%{release} +Obsoletes: cockpit-dashboard < %{version}-%{release} +%if 0%{?rhel} +Requires: NetworkManager >= 1.6 +Requires: kexec-tools +Requires: sos +Requires: sudo +Recommends: PackageKit +Recommends: setroubleshoot-server >= 3.3.3 +Suggests: NetworkManager-team +Provides: cockpit-kdump = %{version}-%{release} +Provides: cockpit-networkmanager = %{version}-%{release} +Provides: cockpit-selinux = %{version}-%{release} +Provides: cockpit-sosreport = %{version}-%{release} +%endif +%if 0%{?fedora} +Recommends: (reportd if abrt) +%endif + +#NPM_PROVIDES + +%description system +This package contains the Cockpit shell and system configuration interfaces. + +%files system -f system.list +%dir %{_datadir}/cockpit/shell/images + +%package ws +Summary: Cockpit Web Service +Requires: glib-networking +Requires: openssl +Requires: glib2 >= 2.50.0 +%if 0%{?with_selinux} +Requires: (selinux-policy >= %{_selinux_policy_version} if selinux-policy-%{selinuxtype}) +Requires(post): (policycoreutils if selinux-policy-%{selinuxtype}) +%endif +Conflicts: firewalld < 0.6.0-1 +Recommends: sscg >= 2.3 +Recommends: system-logos +Suggests: sssd-dbus >= 2.6.2 +%if 0%{?suse_version} +Requires(pre): permissions +Requires: distribution-logos +Requires: wallpaper-branding +%endif +# for cockpit-desktop +Suggests: python3 +Provides: group(cockpit-ws) +Provides: group(cockpit-wsinstance) +Provides: user(cockpit-ws) +Provides: user(cockpit-wsinstance) + +# prevent hard python3 dependency for cockpit-desktop, it falls back to other browsers +%global __requires_exclude_from ^%{_libexecdir}/cockpit-client$ + +%description ws +The Cockpit Web Service listens on the network, and authenticates users. + +If sssd-dbus is installed, you can enable client certificate/smart card +authentication via sssd/FreeIPA. + +%files ws -f static.list +%doc %{_mandir}/man1/cockpit-desktop.1.gz +%doc %{_mandir}/man5/cockpit.conf.5.gz +%doc %{_mandir}/man8/cockpit-ws.8.gz +%doc %{_mandir}/man8/cockpit-tls.8.gz +%doc %{_mandir}/man8/pam_ssh_add.8.gz +%dir %{_sysconfdir}/cockpit +%config(noreplace) %{_sysconfdir}/cockpit/ws-certs.d +%if 0%{?suse_version} > 1500 +%{_pam_vendordir}/cockpit +%else +%config(noreplace) %{_sysconfdir}/pam.d/cockpit +%endif +# dir is not owned by pam in openSUSE +%dir %{_sysconfdir}/motd.d +# created in %post, so that users can rm the files +%ghost %{_sysconfdir}/issue.d/cockpit.issue +%ghost %{_sysconfdir}/motd.d/cockpit +%ghost %attr(0644, root, root) %{_sysconfdir}/cockpit/disallowed-users +%ghost %dir /run/cockpit +%ghost /run/cockpit/motd +%dir %{_datadir}/cockpit/motd +%{_datadir}/cockpit/motd/update-motd +%{_datadir}/cockpit/motd/inactive.motd +%{_unitdir}/cockpit.service +%{_unitdir}/cockpit-motd.service +%{_unitdir}/cockpit.socket +%{_unitdir}/cockpit-wsinstance-http.socket +%{_unitdir}/cockpit-wsinstance-http.service +%{_unitdir}/cockpit-wsinstance-https-factory.socket +%{_unitdir}/cockpit-wsinstance-https-factory@.service +%{_unitdir}/cockpit-wsinstance-https@.socket +%{_unitdir}/cockpit-wsinstance-https@.service +%{_unitdir}/system-cockpithttps.slice +%{_prefix}/%{__lib}/tmpfiles.d/cockpit-tempfiles.conf +%{pamdir}/pam_ssh_add.so +%{pamdir}/pam_cockpit_cert.so +%{_libexecdir}/cockpit-ws +%{_libexecdir}/cockpit-wsinstance-factory +%{_libexecdir}/cockpit-tls +%{_libexecdir}/cockpit-client +%{_libexecdir}/cockpit-client.ui +%{_libexecdir}/cockpit-desktop +%{_libexecdir}/cockpit-certificate-ensure +%{_libexecdir}/cockpit-certificate-helper +%{?suse_version:%verify(not mode) }%attr(4750, root, cockpit-wsinstance) %{_libexecdir}/cockpit-session +%{_datadir}/cockpit/branding +%if 0%{?with_selinux} +%{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 +%{_mandir}/man8/%{name}_session_selinux.8cockpit.* +%{_mandir}/man8/%{name}_ws_selinux.8cockpit.* +%ghost %{_sharedstatedir}/selinux/%{selinuxtype}/active/modules/200/%{name} +%endif + +%pre ws +getent group cockpit-ws >/dev/null || groupadd -r cockpit-ws +getent passwd cockpit-ws >/dev/null || useradd -r -g cockpit-ws -d /nonexisting -s /sbin/nologin -c "User for cockpit web service" cockpit-ws +getent group cockpit-wsinstance >/dev/null || groupadd -r cockpit-wsinstance +getent passwd cockpit-wsinstance >/dev/null || useradd -r -g cockpit-wsinstance -d /nonexisting -s /sbin/nologin -c "User for cockpit-ws instances" cockpit-wsinstance + +if %{_sbindir}/selinuxenabled 2>/dev/null; then + %selinux_relabel_pre -s %{selinuxtype} +fi +%if 0%{?suse_version} > 1500 +# Prepare for migration to /usr/lib; save any old .rpmsave +for i in pam.d/cockpit ; do + test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i}.rpmsave.old ||: +done +%endif + +%post ws +if [ -x %{_sbindir}/selinuxenabled ]; then + %selinux_modules_install -s %{selinuxtype} %{_datadir}/selinux/packages/%{selinuxtype}/%{name}.pp.bz2 + %selinux_relabel_post -s %{selinuxtype} +fi + +# set up dynamic motd/issue symlinks on first-time install; don't bring them back on upgrades if admin removed them +# disable root login on first-time install; so existing installations aren't changed +if [ "$1" = 1 ]; then + mkdir -p /etc/motd.d /etc/issue.d + ln -s ../../run/cockpit/motd /etc/motd.d/cockpit + ln -s ../../run/cockpit/motd /etc/issue.d/cockpit.issue + printf "# List of users which are not allowed to login to Cockpit\n" > /etc/cockpit/disallowed-users + printf "root\n" >> /etc/cockpit/disallowed-users + chmod 644 /etc/cockpit/disallowed-users +fi +# switch old self-signed cert group from cockpit-wsintance to cockpit-ws on upgrade +if [ "$1" = 2 ]; then + certfile=/etc/cockpit/ws-certs.d/0-self-signed.cert + test -f $certfile && stat -c '%G' $certfile | grep -q cockpit-wsinstance && chgrp cockpit-ws $certfile +fi + +%if 0%{?suse_version} +%set_permissions %{_libexecdir}/cockpit-session +%endif +%tmpfiles_create cockpit-tempfiles.conf +%systemd_post cockpit.socket cockpit.service +# firewalld only partially picks up changes to its services files without this +test -f %{_bindir}/firewall-cmd && firewall-cmd --reload --quiet || true + +# check for deprecated PAM config +if test -f %{_sysconfdir}/pam.d/cockpit && grep -q pam_cockpit_cert %{_sysconfdir}/pam.d/cockpit; then + echo '**** WARNING:' + echo '**** WARNING: pam_cockpit_cert is a no-op and will be removed in a' + echo '**** WARNING: future release; remove it from your /etc/pam.d/cockpit.' + echo '**** WARNING:' +fi + +%preun ws +%systemd_preun cockpit.socket cockpit.service + +%postun ws +if [ -x %{_sbindir}/selinuxenabled ]; then + %selinux_modules_uninstall -s %{selinuxtype} %{name} + %selinux_relabel_post -s %{selinuxtype} +fi +%systemd_postun_with_restart cockpit.socket cockpit.service + +%if 0%{?suse_version} +%verifyscript ws +%verify_permissions -e %{_libexecdir}/cockpit-session +%endif + +%if 0%{?suse_version} > 1500 +%posttrans ws +# Migration to /usr/lib, restore just created .rpmsave +for i in pam.d/cockpit ; do + test -f %{_sysconfdir}/${i}.rpmsave && mv -v %{_sysconfdir}/${i}.rpmsave %{_sysconfdir}/${i} ||: +done +%endif + +# ------------------------------------------------------------------------------- +# Sub-packages that are part of cockpit-system in RHEL/CentOS, but separate in Fedora + +%if 0%{?rhel} == 0 + +%package kdump +Summary: Cockpit user interface for kernel crash dumping +Requires: cockpit-bridge >= %{required_base} +Requires: cockpit-shell >= %{required_base} +Requires: kexec-tools +BuildArch: noarch + +%description kdump +The Cockpit component for configuring kernel crash dumping. + +%files kdump -f kdump.list +%{_datadir}/metainfo/org.cockpit-project.cockpit-kdump.metainfo.xml + +%if !0%{?suse_version} +%package sosreport +Summary: Cockpit user interface for diagnostic reports +Requires: cockpit-bridge >= %{required_base} +Requires: cockpit-shell >= %{required_base} +Requires: sos +BuildArch: noarch + +%description sosreport +The Cockpit component for creating diagnostic reports with the +sosreport tool. + +%files sosreport -f sosreport.list +%{_datadir}/metainfo/org.cockpit-project.cockpit-sosreport.metainfo.xml +%{_datadir}/pixmaps/cockpit-sosreport.png +%endif + +%package networkmanager +Summary: Cockpit user interface for networking, using NetworkManager +Requires: cockpit-bridge >= %{required_base} +Requires: cockpit-shell >= %{required_base} +Requires: NetworkManager >= 1.6 +Conflicts: cockpit-wicked +# Optional components +Recommends: NetworkManager-team +BuildArch: noarch + +%description networkmanager +The Cockpit component for managing networking. This package uses NetworkManager. + +%files networkmanager -f networkmanager.list +%{_datadir}/metainfo/org.cockpit-project.cockpit-networkmanager.metainfo.xml + +%endif + +%if 0%{?rhel} == 0 && ( 0%{?suse_version} >= 1500 || 0%{?is_smo} ) + +%package selinux +Summary: Cockpit SELinux package +Requires: cockpit-bridge >= %{required_base} +Requires: cockpit-shell >= %{required_base} +Requires: policycoreutils-python-utils >= 3.1 +# setroubleshoot is available on SLE Micro starting with 5.5) +%if !0%{?suse_version} || ( 0%{?is_smo} && 0%{?sle_version} >= 150500 ) || 0%{?suse_version} >= 1600 +Requires: setroubleshoot-server >= 3.3.3 +%endif +BuildArch: noarch + +%description selinux +This package contains the Cockpit user interface integration with the +utility setroubleshoot to diagnose and resolve SELinux issues. + +%files selinux -f selinux.list +%{_datadir}/metainfo/org.cockpit-project.cockpit-selinux.metainfo.xml + +%endif + +%package -n cockpit-storaged +Summary: Cockpit user interface for storage, using udisks +Requires: cockpit-shell >= %{required_base} +Requires: udisks2 >= 2.9 +Requires: %{__python3} +%if 0%{?suse_version} +Requires: libudisks2-0_lvm2 >= 2.9 +Requires: libudisks2-0_btrfs >= 2.9 +Recommends: multipath-tools +Requires: python3-dbus-python +%else +Recommends: udisks2-lvm2 >= 2.9 +Recommends: udisks2-iscsi >= 2.9 +%if ! 0%{?rhel} +Recommends: udisks2-btrfs >= 2.9 +%endif +Recommends: device-mapper-multipath +Recommends: clevis-luks +Requires: python3-dbus +%endif +BuildArch: noarch + +%description -n cockpit-storaged +The Cockpit component for managing storage. This package uses udisks. + +%files -n cockpit-storaged -f storaged.list +%{_datadir}/metainfo/org.cockpit-project.cockpit-storaged.metainfo.xml + +%if 0%{?build_tests} +%package -n cockpit-tests +Summary: Tests for Cockpit +Requires: cockpit-bridge >= %{required_base} +Requires: cockpit-system >= %{required_base} +Requires: openssh-clients +Provides: cockpit-test-assets = %{version}-%{release} + +%description -n cockpit-tests +This package contains tests and files used while testing Cockpit. +These files are not required for running Cockpit. + +%files -n cockpit-tests -f tests.list +%{pamdir}/mock-pam-conv-mod.so +%{_unitdir}/cockpit-session.socket +%{_unitdir}/cockpit-session@.service + +# /build_tests +%endif + +%package devel +Summary: Development files for for Cockpit + +%description devel +This package contains files used to develop cockpit modules + +%files devel +%{_datadir}/cockpit/devel + +%if %{build_pcp} +%package -n cockpit-pcp +Summary: Cockpit PCP integration +Requires: cockpit-bridge >= %{required_base} +Requires: pcp + +%description -n cockpit-pcp +Cockpit support for reading PCP metrics and loading PCP archives. + +%files -n cockpit-pcp -f pcp.list +%{_libexecdir}/cockpit-pcp +%{_localstatedir}/lib/pcp/config/pmlogconf/tools/cockpit + +%post -n cockpit-pcp +systemctl reload-or-try-restart pmlogger + +%endif + +%package -n cockpit-packagekit +Summary: Cockpit user interface for packages +BuildArch: noarch +Requires: cockpit-bridge >= %{required_base} +Requires: PackageKit +Recommends: python3-tracer +# HACK: https://bugzilla.redhat.com/show_bug.cgi?id=1800468 +Requires: polkit + +%description -n cockpit-packagekit +The Cockpit components for installing OS updates and Cockpit add-ons, +via PackageKit. + +%files -n cockpit-packagekit -f packagekit.list + +# The changelog is automatically generated and merged +%changelog diff --git a/css-overrides.patch b/css-overrides.patch new file mode 100644 index 0000000..1027c6c --- /dev/null +++ b/css-overrides.patch @@ -0,0 +1,325 @@ +From 617d236f005538be4a53b4a4cb88aac0ad6bf14b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20D=C3=ADaz=20Gonz=C3=A1lez?= +Date: Mon, 13 Jun 2022 20:05:21 +0100 +Subject: [PATCH] Load custom CSS + +In order to override Cockpit's default styling, another CSS file is +loaded in every HTML page. It works, but as a workaround already +discussed with upstream [1]. + +We will revert this patch when Cockpit provides better technique [2]. For +now, it fulfills the requirements of [3]. + +[1] https://github.com/cockpit-project/cockpit/pull/17437 +[2] https://github.com/cockpit-project/cockpit/issues/16359 +[3] https://en.opensuse.org/openSUSE:ALP/Workgroups/SysMngmnt +--- + pkg/apps/index.html | 1 + + pkg/kdump/index.html | 1 + + pkg/metrics/index.html | 1 + + pkg/networkmanager/firewall.html | 1 + + pkg/networkmanager/index.html | 1 + + pkg/packagekit/index.html | 1 + + pkg/playground/index.html | 1 + + pkg/playground/journal.html | 1 + + pkg/playground/metrics.html | 1 + + pkg/playground/plot.html | 1 + + pkg/playground/react-patterns.html | 1 + + pkg/playground/speed.html | 1 + + pkg/playground/test.html | 1 + + pkg/selinux/setroubleshoot.html | 1 + + pkg/shell/index.html | 1 + + pkg/shell/shell.html | 1 + + pkg/sosreport/index.html | 1 + + pkg/storaged/index.html | 1 + + pkg/systemd/hwinfo.html | 1 + + pkg/systemd/index.html | 1 + + pkg/systemd/logs.html | 1 + + pkg/systemd/services.html | 1 + + pkg/systemd/terminal.html | 1 + + pkg/users/index.html | 1 + + src/branding/default/css-overrides.css | 12 ++++++++++++ + 25 files changed, 36 insertions(+) + create mode 100644 src/branding/default/css-overrides.css + +Index: cockpit/pkg/apps/index.html +=================================================================== +--- cockpit.orig/pkg/apps/index.html ++++ cockpit/pkg/apps/index.html +@@ -23,6 +23,7 @@ along with Cockpit; If not, see Applications + + ++ + + + +Index: cockpit/pkg/kdump/index.html +=================================================================== +--- cockpit.orig/pkg/kdump/index.html ++++ cockpit/pkg/kdump/index.html +@@ -25,6 +25,7 @@ along with Cockpit; If not, see + + ++ + + + +Index: cockpit/pkg/metrics/index.html +=================================================================== +--- cockpit.orig/pkg/metrics/index.html ++++ cockpit/pkg/metrics/index.html +@@ -23,6 +23,7 @@ along with this package; If not, see + + ++ + + + +Index: cockpit/pkg/networkmanager/firewall.html +=================================================================== +--- cockpit.orig/pkg/networkmanager/firewall.html ++++ cockpit/pkg/networkmanager/firewall.html +@@ -23,6 +23,7 @@ along with Cockpit; If not, see + + ++ + + + +Index: cockpit/pkg/networkmanager/index.html +=================================================================== +--- cockpit.orig/pkg/networkmanager/index.html ++++ cockpit/pkg/networkmanager/index.html +@@ -24,6 +24,7 @@ + + + ++ + + + +Index: cockpit/pkg/packagekit/index.html +=================================================================== +--- cockpit.orig/pkg/packagekit/index.html ++++ cockpit/pkg/packagekit/index.html +@@ -24,6 +24,7 @@ along with Cockpit; If not, see + + ++ + + + +Index: cockpit/pkg/playground/index.html +=================================================================== +--- cockpit.orig/pkg/playground/index.html ++++ cockpit/pkg/playground/index.html +@@ -5,6 +5,7 @@ + Cockpit Development Playground + + ++ + + + +Index: cockpit/pkg/playground/journal.html +=================================================================== +--- cockpit.orig/pkg/playground/journal.html ++++ cockpit/pkg/playground/journal.html +@@ -5,6 +5,7 @@ + Cockpit Journal Box + + ++ + + + +Index: cockpit/pkg/playground/metrics.html +=================================================================== +--- cockpit.orig/pkg/playground/metrics.html ++++ cockpit/pkg/playground/metrics.html +@@ -5,6 +5,7 @@ + Cockpit Monitoring + + ++ + + + +Index: cockpit/pkg/playground/plot.html +=================================================================== +--- cockpit.orig/pkg/playground/plot.html ++++ cockpit/pkg/playground/plot.html +@@ -5,6 +5,7 @@ + Cockpit Plots + + ++ + + + +Index: cockpit/pkg/playground/react-patterns.html +=================================================================== +--- cockpit.orig/pkg/playground/react-patterns.html ++++ cockpit/pkg/playground/react-patterns.html +@@ -5,6 +5,7 @@ + Cockpit React Patterns Usage + + ++ + + + +Index: cockpit/pkg/playground/speed.html +=================================================================== +--- cockpit.orig/pkg/playground/speed.html ++++ cockpit/pkg/playground/speed.html +@@ -5,6 +5,7 @@ + Cockpit Speed Tests + + ++ + + + +Index: cockpit/pkg/playground/test.html +=================================================================== +--- cockpit.orig/pkg/playground/test.html ++++ cockpit/pkg/playground/test.html +@@ -5,6 +5,7 @@ + Cockpit playground + + ++ + + + +Index: cockpit/pkg/shell/index.html +=================================================================== +--- cockpit.orig/pkg/shell/index.html ++++ cockpit/pkg/shell/index.html +@@ -6,6 +6,7 @@ + + + ++ + + + +Index: cockpit/pkg/shell/shell.html +=================================================================== +--- cockpit.orig/pkg/shell/shell.html ++++ cockpit/pkg/shell/shell.html +@@ -5,6 +5,7 @@ + + + ++ + + +
+Index: cockpit/pkg/sosreport/index.html +=================================================================== +--- cockpit.orig/pkg/sosreport/index.html ++++ cockpit/pkg/sosreport/index.html +@@ -22,6 +22,7 @@ along with Cockpit; If not, see Diagnostic reports + + ++ + + + +Index: cockpit/pkg/systemd/hwinfo.html +=================================================================== +--- cockpit.orig/pkg/systemd/hwinfo.html ++++ cockpit/pkg/systemd/hwinfo.html +@@ -4,6 +4,7 @@ + Hardware information + + ++ + + + +Index: cockpit/pkg/systemd/index.html +=================================================================== +--- cockpit.orig/pkg/systemd/index.html ++++ cockpit/pkg/systemd/index.html +@@ -6,6 +6,7 @@ + + + ++ + + + +Index: cockpit/pkg/systemd/logs.html +=================================================================== +--- cockpit.orig/pkg/systemd/logs.html ++++ cockpit/pkg/systemd/logs.html +@@ -23,6 +23,7 @@ along with Cockpit; If not, see Journal + + ++ + + + +Index: cockpit/pkg/systemd/services.html +=================================================================== +--- cockpit.orig/pkg/systemd/services.html ++++ cockpit/pkg/systemd/services.html +@@ -5,6 +5,7 @@ + + + ++ + + + +Index: cockpit/pkg/systemd/terminal.html +=================================================================== +--- cockpit.orig/pkg/systemd/terminal.html ++++ cockpit/pkg/systemd/terminal.html +@@ -5,6 +5,7 @@ + + + ++ + + + +Index: cockpit/pkg/users/index.html +=================================================================== +--- cockpit.orig/pkg/users/index.html ++++ cockpit/pkg/users/index.html +@@ -24,6 +24,7 @@ + + + ++ + + + +Index: cockpit/pkg/static/css-overrides.css +=================================================================== +--- /dev/null ++++ cockpit/pkg/static/css-overrides.css +@@ -0,0 +1,12 @@ ++/** ++ * PLEASE, DO NOT CHANGE THIS FILE. ++ * ++ * It is here to avoid 404 errors on openSUSE Cockpit patched version when no ++ * package for overriding the default style is installed. If a better ++ * alternative becomes available, it will be removed. ++ * ++ * To know more, please follow below links ++ * ++ * - https://github.com/cockpit-project/cockpit/pull/17437 ++ * - https://github.com/cockpit-project/cockpit/issues/16359 ++ */ diff --git a/hide-pcp.patch b/hide-pcp.patch new file mode 100644 index 0000000..aa64c1c --- /dev/null +++ b/hide-pcp.patch @@ -0,0 +1,12 @@ +Index: cockpit/pkg/metrics/metrics.jsx +=================================================================== +--- cockpit.orig/pkg/metrics/metrics.jsx ++++ cockpit/pkg/metrics/metrics.jsx +@@ -1551,6 +1551,7 @@ const PCPConfig = ({ buttonVariant, fire + + return ( +