unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* shepherd-action debug help needed
@ 2023-10-30 19:47 Attila Lendvai
  2023-10-31  4:26 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
  0 siblings, 1 reply; 3+ messages in thread
From: Attila Lendvai @ 2023-10-30 19:47 UTC (permalink / raw)
  To: guix-devel

dear guixers,

i have a custom shepherd action that calls tar with (system ...):

https://github.com/attila-lendvai/guix-crypto/blob/staging/src/guix-crypto/services/swarm.scm#L311

it works fine in a `guix system vm` environment, where i'm usually testing it. but when i pull it to my server, it fails with exit code 127.

it has logging:

2023-10-30T14:24:12 Will run backup cmd: "install --mode=600 <(/gnu/store/iiyf5ns10j8sgzfpmcgbfyb0byk5sbjl-tar-1.34/bin/tar --verbose --create --directory /var/lib/swarm/mainnet/bee-0 keys/ statestore/ | /gnu/store/gjsxzcc0gqpz4lpbsrbidlnn5ij1lfm1-gzip-1.12/bin/gzip) /tmp/2023-10-30-serlap-bee-mainnet-0.tgz", PATH is /gnu/store/d4rqw481nwvrzs09nd8ad647nczgm9k1-coreutils-9.1/bin:/gnu/store/gjsxzcc0gqpz4lpbsrbidlnn5ij1lfm1-gzip-1.12/bin, uid is 0
2023-10-30T14:24:12 Cmd returned exit code 127

if i copy-paste the above command into the same root prompt from where i'm invoking `herd backup-identity bee-0 /tmp/`, then it works as expected. even if i prefix it with `PATH="" ...`.

my question is:

what could be the difference between running a `guix system vm` from my git checkout, and guix pull'ing the same to a proper guix system?

could it be file or other permissions? according to the log, (getuid) is 0 when the action is executed.

alternatively, how could i debug this?

for completeness, this is how i start the system vm test:

$(./pre-inst-env guix system --no-graphic vm --share=$HOME/workspace/guix/var-lib-of-guest-vm=/var/lib ~/workspace/guix/guix-crypto/tests/swarm-tests.scm) -m 2048

and this is the file:

https://github.com/attila-lendvai/guix-crypto/blob/staging/tests/swarm-tests.scm

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“Tyranny is defined as that which is legal for the government but illegal for the citizenry.”
	— Thomas Jefferson (1743–1826)



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: shepherd-action debug help needed
  2023-10-30 19:47 shepherd-action debug help needed Attila Lendvai
@ 2023-10-31  4:26 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
  2023-10-31 17:26   ` Attila Lendvai
  0 siblings, 1 reply; 3+ messages in thread
From: Felix Lechner via Development of GNU Guix and the GNU System distribution. @ 2023-10-31  4:26 UTC (permalink / raw)
  To: Attila Lendvai, guix-devel

Hi Attila,

On Mon, Oct 30 2023, Attila Lendvai wrote:

> 2023-10-30T14:24:12 Cmd returned exit code 127

Exit code 127 means "command not found". [1] More information is
available in stderr (or sometimes stdout) if you can capture it.

Another option would be to forgo the shell magic in (system cmd-string)
and reimplement that call using system*, open-pipe* and friends. The
"install" step could become a Guile loop over the file names. The
deconstruction might likewise help you pinpoint the command that fails
because the executable was not found.

Kind regards
Felix

[1] https://linuxconfig.org/how-to-fix-bash-127-error-return-code


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: shepherd-action debug help needed
  2023-10-31  4:26 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
@ 2023-10-31 17:26   ` Attila Lendvai
  0 siblings, 0 replies; 3+ messages in thread
From: Attila Lendvai @ 2023-10-31 17:26 UTC (permalink / raw)
  To: Felix Lechner; +Cc: guix-devel

> Exit code 127 means "command not found". [1] More information is
> available in stderr (or sometimes stdout) if you can capture it.

but how come binaries are not found when i have the full path for the commands...?

the install binary is only used to set the umask of the result. without it, a simple invokation of tar also fails, even without --gzip.

i dug a bit deeper, and it turned out that the SYSTEM call i thought was coming from guile was rebound by shepherd to point to its own SPAWN-SHELL-COMMAND. through various complex code paths, it ends up calling fork+exec-command. SPAWN-SHELL-COMMAND's role is to make the SYSTEM call non-blocking.

as a quick test, i have added a simple (system "ls -l /bin/sh") call to my action, and that fails, too.

i'll need to add proper logging to shepherd and see what's going wrong. but for that i need https://issues.guix.gnu.org/61750 merged.

-- 
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“Justice is not concerned with the results of the various transactions, but only with whether the transactions themselves are fair.”
	— F.A. Hayek (1899–1992), 'Law, Legislation and Liberty', I.6.j



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-10-31 17:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-10-30 19:47 shepherd-action debug help needed Attila Lendvai
2023-10-31  4:26 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
2023-10-31 17:26   ` Attila Lendvai

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).