Commit graph

4,744 commits

Author SHA1 Message Date
61c1a628a1 lib.ec.SSHClient: Exception for empty host name

Instantiating a SSHClient-derived class with an invalid or missing uri parameter is accepted and fails later down the road. Raise an Exception early on to make the error log more comprehensible.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-11 14:51:50 +02:00
0e18d4abac lib.ec.ssh.Exec|Paramiko: Don't # export

The SSHClient classes Paramiko and Exec are exported via # export. This is a bad idea, because if Paramiko is not installed, none of the other's can be instantiated either: On the attempt to load them, __init__.py is loaded first and fails. SSHClient.ssh_client() knows what to do, no need to auto-import them into the lib.ec.ssh module.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-11 14:51:19 +02:00
41b0b8f023 defs.mk: Remove installation type SCRIPT

Installation type SCRIPT has beed disabled long ago because of its overlap with EXE. Remove the dead code around it.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-11 14:51:11 +02:00
30c4d7101f projects-dir.mk: list-files: Don't use /usr/bin/file

/usr/bin/file <candidate> | grep text is used to detect if a file is a text file or not. Replace that with grep -I., because that adds some files left out by /usr/bin/file, notably systemd service files.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-11 14:50:44 +02:00
1caae611ba App.os_release: Fix debug logging

cat /etc/os-release sometimes fails over the wire, and the reason should be logged but isn't. Fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-11 14:50:24 +02:00
2852c65bf1 Release 1.0.0-201@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-09 05:28:39 +00:00
f98236a941 Release 1.0.0-201@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-08 23:10:04 +00:00
0ce734ae57 Start version: 1.0.0-201
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-08 23:09:15 +00:00
c5c621366b scripts/usr-bin: scripts.mk -> std-targets.mk

jw-pkg is copied into $(TOPDIR)/bin during build, that's wrong. Write a rule precisely targeted at installing /usr/bin/jw-pkg, and cut all the scripts.mk machinery.

Also, make jw-pkg a relative link to avoid the respective RPM warning.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-08 16:47:00 +02:00
98ad7442d9 cmds.projects.CmdListRepos: Beautify error logging

Call run_curl() with parse_json=True to make that explicit, and be a little more verbose about the outcome.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-08 10:49:58 +02:00
f18575a267 lib.util.run_curl(): Add decode parameter

run_curl() has no clear API of whether or not the return values should be decoded. It has parse_json, which should imply decoding, but there's no way to specify that explicitly. Moreover, when it tries to decode, it decodes on the coroutine returned from run_cmd(), not the awaited coroutine return value.

Add a decode parameter, defaulting to False, change the parse_json parameter's default from True to False, and fix the run_cmd() return value evaluation.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-08 10:49:52 +02:00
5fded01d00 cmds.projects.CmdListRepos: Init SSHClient with app opts

Use the global --verbose and --interactive command-line options as defaults for constructing a SSHClient instance for use with listing repos over SSH.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-07 15:39:29 +02:00
5ae2dde608 pgit.sh list-repos with --interactive false

pgit.sh list-repos runs jw-pkg.py projects list-repos. Interactivity hurts here, turn it off.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-07 15:38:00 +02:00
5af68a6541 projects-dir-minimal.mk: get-auth-info --interactive false

PROJECTS_DIR_REMOTE_BASE and JANWARE_USER is determined by jw-pkg.py get-auth-info. Interactivity hurts here, though, turn it off.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-07 15:34:52 +02:00
1029cdca25 Release 1.0.0-200@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-06 23:22:27 +00:00
9287153211 Release 1.0.0-200@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-06 23:08:52 +00:00
9fa63bb35e Start version: 1.0.0-200
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-06 23:08:04 +00:00
40511947c9 cmds.projects.BaseCmdPkgRelations: Add --hide-jw-pkg

Support --hide-jw-pkg. This is a step towards replacing required-os-pkg, which leaves out packages from pkg.requires.jw sections.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 16:47:46 +02:00
ad0e03f14c cmds.projects.BaseCmdPkgRelations: Fix cross-sec deps

If a package P is added, only those of its dependendencies are added along which are in the same os-cascade section as P. That's wrong, fix it.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 16:02:34 +02:00
a0dcf59277 cmds.projects.BaseCmdPkgRelations: Better variables

Make variable names a little more readable and searchable within the long pkg_relations_list() method by making their names longer and truer to what they actually mean.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 16:02:34 +02:00
8c34dae526 cmds.projects.CmdPrereq: Remove class

CmdPrereq was mostly redundant to PkgRequired all along. CmdPrereq has grown more versatile, and CmdPrereq is not used throughout jw-pkg anylonger by now. Remove it.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 16:02:34 +02:00
18a2ee6c99 App.get_value(): Beautify debug logging

Enclose sections / keys taken from project.conf in [square.brackets], hinting at what they are supposed to mean.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 16:02:27 +02:00
af6de30546 scripts/usr-bin: Install symlink /usr/bin/jw-pkg

Install a symlink /usr/bin/jw-pkg -> /opt/jw-pkg/bin/jw-pkg.py in order to have jw-pkg in $PATH.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 15:58:11 +02:00
67eab4b864 pgit.sh: Fix log_start_stop()

log_start_stop() is responsible for logging markers at the beginning and end of a decorated log. They should not be applied if pgit.sh is run with --porcelain. In fact, they are, and vice versa. Fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-06 15:57:30 +02:00
25bde31d75 Release 1.0.0-199@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-04 17:22:55 +00:00
e3090016b5 Release 1.0.0-199@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-04 17:12:36 +00:00
0342ec67b1 Start version: 1.0.0-199
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-04 17:11:47 +00:00
91abb82879 pgit.sh: Set -o pipefail

Set -o pipefail at the start of the script. This makes pgit.sh commit work. Before it didn't, because run_git() doesn't return a proper return value when it's used in a pipe with a cosmetic sed afterwards.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-04 19:02:24 +02:00
1da3f37889 pgit.sh: Honour PGIT_IGNORE for pgit.sh commit

PGIT_INGORE is not honoured for pgit.sh commit, fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-04 18:57:40 +02:00
160cb993df projects-dir.mk: Add git-show-pushable

Rename git-show-pushable-master-branches to git-show-pushable, because, the target's recipe doesn't show pushable master branches, but all commits in the working directories current branch not present in origin/master.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-04 18:57:40 +02:00
fe5f343536 projects-dir.mk: Re-enable persistent SSH connections

This reverts commit 88e81 and effectively re-enables persistent SSH connections to speed up builds.

commit 88e8197ed7 Author: Jan Lindemann <jan@janware.com> Date: Thu Apr 20 20:00:46 2017 +0000
projects-dir.mk: Partly disable persistent SSH
Don't use persistent SSH-connections any more for "pkg-" targets, because, sadly, this hangs after uploading a package.

This commit puts some safeguards against hanging SSH into place, namely setting default SSH timeouts down, SSH keepalive, setting SSH BatchMode to yes.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-04 18:57:16 +02:00
1d17d16519 projects-dir.mk: Retire BUILD_PROJECTS

Use DEP_PROJECTS instead of BUILD_PROJECTS everywhere. DEP_PROJECTS considers more projects, and for all targets it is relevant to, it's desirable to have them operate on the maximum blast radius.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-04 16:15:38 +02:00
ef027f7d06 Release 1.0.0-198@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-03 23:24:54 +00:00
d3dfcc523a Release 1.0.0-198@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-03 23:10:59 +00:00
ff460420ef Start version: 1.0.0-198
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-03 23:10:05 +00:00
5916dca0c5 projects-dir.mk: Add variable DEP_PROJECTS

make git-show-pushable-master-branches misses projects which should better be pulled in as dependencies. It searches $(BUILLD_PROJECTS) for repositories with pushable commits, that variable leaves some out, and DEP_PROJECTS has them. It make use of the renovated pkg-requires command.

This move should be extended to other uses of BUILD_PROJECTS as well, after giving it some test runs. And the legacy and redundant command prereq should be removed.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-03 19:07:44 +02:00
3c9ce19deb lib.ec.ssh.Paramiko: Fix exception logging

The catch-block around Paramiko's connect code throws another exception, fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-04-03 17:29:44 +02:00
d5130bf9ba Release 1.0.0-197@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-03 02:29:44 +00:00
c2e683deb1 Release 1.0.0-197@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-04-01 02:28:05 +00:00
ad578db5c0 Start version: 1.0.0-197
Signed-off-by: janware DevOps <devops@janware.com>
2026-03-31 23:24:28 +00:00
3e36e5f8ff Release 1.0.0-196@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-03-30 06:16:28 +00:00
cf71367aa5 Release 1.0.0-196@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-03-30 06:15:26 +00:00
706b74a20b Start version: 1.0.0-196
Signed-off-by: janware DevOps <devops@janware.com>
2026-03-30 06:14:36 +00:00
e589cdbdbf cmds and lib: Don't print() log messages

print() should be used to output information requested by a certain command, but not for logging the process to achieve it. log() should be used for the latter. The current code has the distinction not down clearly, fix that.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-30 08:11:39 +02:00
6ba76ea44b Release 1.0.0-195@suse-tumbleweed/x86_64
Signed-off-by: janware DevOps <devops@janware.com>
2026-03-29 15:59:07 +00:00
e3773cc180 Release 1.0.0-195@kali-rolling/amd64
Signed-off-by: janware DevOps <devops@janware.com>
2026-03-29 15:46:48 +00:00
c402f70415 Start version: 1.0.0-195
Signed-off-by: janware DevOps <devops@janware.com>
2026-03-29 15:45:54 +00:00
7cfe2c4775 lib.App._run(): default_completer=NoopCompleter()

By default, argcomplete uses argcomplete.FilesCompleter as default for every argument. This mixes accessible files into the list of possible completions. For most of jw-pkg's commands, that's unwanted, so turn it off by defining a NoopCompleter class which does nothing, and by set every arguments's default completer to a NoopCompleter instance. If desired, completing files can be restored for an argument by

parser.add_argument("some-arg").completer = FilesCompleter()

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-28 12:45:50 +01:00
ce1b8b6744 lib.App: Fully parse argparse tree if _ARGCOMPLETE

Every module derived from lib.Cmd implements its own parser.add_argument() logic. As a consequence, all Cmd derived modules need to be loaded to have the full argument tree available. This is avoided during normal program startup because it takes some time. It's not necessary during normal program execution, nor for showing help messages. It is, however, needed for argcomplete to do its thing, so fully parse the command line if the program runs in argcomplete mode, as determined by checking if _ARGCOMPLETE is present in the environment.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-27 09:16:14 +01:00
9b208ecc1e lib.ExecContext.log_delim(): No interactive footer

lib.ExecContext.log_delim() logs a header not designed for enclosing command output, and, hence, no footer should be output. This commit suppresses it.

Signed-off-by: Jan Lindemann <jan@janware.com>
2026-03-27 09:16:14 +01:00