unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* A postinst equivalent in Guix?
@ 2017-01-19 18:30 Georgi Kirilov
  2017-01-20  6:23 ` John Darrington
  2017-01-20 14:09 ` Ludovic Courtès
  0 siblings, 2 replies; 12+ messages in thread
From: Georgi Kirilov @ 2017-01-19 18:30 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 619 bytes --]

Hi,

is there anything in Guix that can do things at install time, like postinst
scripts in Debian?

A program in a package I created is trying to access /var, but has no
permissions. (Well, /gnu/store/.../var)
The 'install' make target was doing 'chgrp' and 'install -g', but I had to
remove these because there was no such group in the chroot jail. And it
would be wrong anyway, as the gid in the jail would be different from that
in the systems where the package will be installed.
So, I guess /gnu/store/.../var has to be chgrp-ed during installation, on
the user's system.

Any hints?

-- 
Regards,
Georgi Kirilov

[-- Attachment #2: Type: text/html, Size: 861 bytes --]

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

* Re: A postinst equivalent in Guix?
  2017-01-19 18:30 A postinst equivalent in Guix? Georgi Kirilov
@ 2017-01-20  6:23 ` John Darrington
  2017-01-20 14:09 ` Ludovic Courtès
  1 sibling, 0 replies; 12+ messages in thread
From: John Darrington @ 2017-01-20  6:23 UTC (permalink / raw)
  To: Georgi Kirilov; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1167 bytes --]

On Thu, Jan 19, 2017 at 08:30:26PM +0200, Georgi Kirilov wrote:
     Hi,
     
     is there anything in Guix that can do things at install time, like postinst
     scripts in Debian?
     
     A program in a package I created is trying to access /var, but has no
     permissions. (Well, /gnu/store/.../var)
     The 'install' make target was doing 'chgrp' and 'install -g', but I had to
     remove these because there was no such group in the chroot jail. And it
     would be wrong anyway, as the gid in the jail would be different from that
     in the systems where the package will be installed.
     So, I guess /gnu/store/.../var has to be chgrp-ed during installation, on
     the user's system.
     

It's a fast rule that packages in Guix may not mutate the store.  So you will
have to find out exactly what and why your package is trying to do that, and
work out another way to effect it.

J'
     

-- 
Avoid eavesdropping.  Send strong encrypted email.
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

* Re: A postinst equivalent in Guix?
  2017-01-19 18:30 A postinst equivalent in Guix? Georgi Kirilov
  2017-01-20  6:23 ` John Darrington
@ 2017-01-20 14:09 ` Ludovic Courtès
  2017-01-21 14:39   ` Georgi Kirilov
  1 sibling, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2017-01-20 14:09 UTC (permalink / raw)
  To: Georgi Kirilov; +Cc: guix-devel

Hi,

Georgi Kirilov <kirilov.georgi.s@gmail.com> skribis:

> is there anything in Guix that can do things at install time, like postinst
> scripts in Debian?

No.  There are “profile hooks” in (guix profiles) that are used to a
similar effect, for instance to assemble the ‘dir’ file that contains
pointers to Info documentation.

> A program in a package I created is trying to access /var, but has no
> permissions. (Well, /gnu/store/.../var)
> The 'install' make target was doing 'chgrp' and 'install -g', but I had to
> remove these because there was no such group in the chroot jail. And it
> would be wrong anyway, as the gid in the jail would be different from that
> in the systems where the package will be installed.
> So, I guess /gnu/store/.../var has to be chgrp-ed during installation, on
> the user's system.

First, you probably need to pass --localstatedir=/var to this package’s
configure state, since at run time it won’t be able to write to
/gnu/store/…/var anyway.

Second, it will try and fail to create /var.  The way to address that is
by simply commenting out or patching out the offending commands.  See
for instance ‘avahi-localstatedir.patch’ or ‘mcron-install.patch’.

HTH!

Ludo’.

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

* Re: A postinst equivalent in Guix?
  2017-01-20 14:09 ` Ludovic Courtès
@ 2017-01-21 14:39   ` Georgi Kirilov
  2017-01-21 15:34     ` Ludovic Courtès
  0 siblings, 1 reply; 12+ messages in thread
From: Georgi Kirilov @ 2017-01-21 14:39 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 2011 bytes --]

On Fri, Jan 20, 2017 at 03:09:25PM +0100, Ludovic Courtès wrote:
>
>> A program in a package I created is trying to access /var, but has no
>> permissions. (Well, /gnu/store/.../var)
>
>First, you probably need to pass --localstatedir=/var to this package’s
>configure state, since at run time it won’t be able to write to
>/gnu/store/…/var anyway.
>
>Second, it will try and fail to create /var.  The way to address that is
>by simply commenting out or patching out the offending commands.  See
>for instance ‘avahi-localstatedir.patch’ or ‘mcron-install.patch’.

That's what happened indeed. When I removed the writes to /var the build 
passed. But the programs in the package couldn't write to the system /var 
directory, since they expect /var/lib/<package>/ to exist and be 
writable.
Besides, writing to /var on a foreign distro may interfere with the same 
package installed natively there (if it is installed).

>> is there anything in Guix that can do things at install time, like postinst
>> scripts in Debian?
>
>No.  There are “profile hooks” in (guix profiles) that are used to a
>similar effect, for instance to assemble the ‘dir’ file that contains
>pointers to Info documentation.

This looks to me much better than the system-wide /var. It is not only 
user-specific, but generation-specific. Really nice mechanism.
I tried to write a new hook, to scan the installed packages and if they 
have a /var/lib/<package>/ inside, to create a writable copy in the 
user's profile, so the programs can write to it without interfering with 
anything on the system.

It didn't work because the hook's output turned out to be immutable...
Whatever chmod or chown I tried inside the hook, the files always ended 
up '-r--r--r-- root root'

Why are these customizations immutable?
I'm probably missing something, but nothing seems to depend on them.
If there was a way to create a writable customization, that would be 
the perfect place to put /var directories.

-- 
Regards,
Georgi

[-- Attachment #2: var-lib-package.patch --]
[-- Type: text/x-diff, Size: 1800 bytes --]

--- profiles.scm        2017-01-21 16:30:02.436621423 +0200
+++ bak/profiles.scm    2017-01-21 16:29:06.631019582 +0200
@@ -516,6 +516,34 @@
   (anym %store-monad
         entry-lookup-package (manifest-entries manifest)))
 
+(define (var-lib-package manifest)
+  (define build
+    (with-imported-modules '((guix build utils))
+    #~(begin
+       (use-modules (guix build utils)
+                    (srfi srfi-1) (srfi srfi-26)
+                    (ice-9 ftw))
+       (define profile-var-lib (string-append #$output "/var/lib"))
+       (define (package-var-libs top)
+         (let ((varlibdir (string-append top "/var/lib")))
+           (map (cut string-append varlibdir "/" <>)
+                (or (scandir varlibdir (lambda (file)
+                                         (not (member file '("." ".."))))) '()))))
+       (define (install-var dir)
+         (copy-recursively dir profile-var-lib)
+         ;; the file mode ends up being overwritten:
+         ;; (chmod dir #o777)
+         ;; guixbuilder* users can't do chown:
+         ;; (chown dir 1000 100)
+         )
+       (mkdir-p profile-var-lib)
+       (exit (every install-var
+                       (append-map package-var-libs
+                                   '#$(manifest-inputs manifest)))))))
+  (gexp->derivation "var-lib" build
+                    #:local-build? #t
+                    #:substitutable? #f))
+
 (define (info-dir-file manifest)
   "Return a derivation that builds the 'dir' file for all the entries of
 MANIFEST."
@@ -909,6 +937,7 @@
   ;; This is the list of derivation-returning procedures that are called by
   ;; default when making a non-empty profile.
   (list info-dir-file
+       var-lib-package
         fonts-dir-file
         ghc-package-cache-file
         ca-certificate-bundle

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

* Re: A postinst equivalent in Guix?
  2017-01-21 14:39   ` Georgi Kirilov
@ 2017-01-21 15:34     ` Ludovic Courtès
  2017-01-21 16:36       ` Georgi Kirilov
  0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2017-01-21 15:34 UTC (permalink / raw)
  To: Georgi Kirilov; +Cc: guix-devel

Georgi Kirilov <kirilov.georgi.s@gmail.com> skribis:

> On Fri, Jan 20, 2017 at 03:09:25PM +0100, Ludovic Courtès wrote:
>>
>>> A program in a package I created is trying to access /var, but has no
>>> permissions. (Well, /gnu/store/.../var)
>>
>>First, you probably need to pass --localstatedir=/var to this package’s
>>configure state, since at run time it won’t be able to write to
>>/gnu/store/…/var anyway.
>>
>>Second, it will try and fail to create /var.  The way to address that is
>>by simply commenting out or patching out the offending commands.  See
>>for instance ‘avahi-localstatedir.patch’ or ‘mcron-install.patch’.
>
> That's what happened indeed. When I removed the writes to /var the
> build passed. But the programs in the package couldn't write to the
> system /var directory, since they expect /var/lib/<package>/ to exist
> and be writable.

Right, but this is typically for daemons and programs that expect to be
installed system-wide.

In that case, the trick is to define a GuixSD service providing an
“activation” snippet that makes sur /var/lib/PACKAGE exists and has the
right permissions beforehand.  For Avahi, this happens here:

  http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/services/avahi.scm#n93

> Besides, writing to /var on a foreign distro may interfere with the
> same package installed natively there (if it is installed).

Yeah, but I don’t think there’s much we can do.  Again, these are
typically daemons, and for any given daemon there can usually only be
one instance running.

>>> is there anything in Guix that can do things at install time, like postinst
>>> scripts in Debian?
>>
>>No.  There are “profile hooks” in (guix profiles) that are used to a
>>similar effect, for instance to assemble the ‘dir’ file that contains
>>pointers to Info documentation.
>
> This looks to me much better than the system-wide /var. It is not only
> user-specific, but generation-specific. Really nice mechanism.
> I tried to write a new hook, to scan the installed packages and if
> they have a /var/lib/<package>/ inside, to create a writable copy in
> the user's profile, so the programs can write to it without
> interfering with anything on the system.
>
> It didn't work because the hook's output turned out to be immutable...
> Whatever chmod or chown I tried inside the hook, the files always
> ended up '-r--r--r-- root root'
>
> Why are these customizations immutable?

All of /gnu/store is purposefully immutable and profiles live in
/gnu/store.  This is what allows Guix to support reproducible setups,
transactional upgrades, and roll-backs.

By definition /var (aka. ‘localstatedir’) is for mutable state, so it
has to be outside of the store.

To make things more concrete, we could discuss specific packages you are
interested in and see how we could provide them in Guix{,SD}.

HTH!

Ludo’.

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

* Re: A postinst equivalent in Guix?
  2017-01-21 15:34     ` Ludovic Courtès
@ 2017-01-21 16:36       ` Georgi Kirilov
  2017-01-23  9:34         ` Ludovic Courtès
  0 siblings, 1 reply; 12+ messages in thread
From: Georgi Kirilov @ 2017-01-21 16:36 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 374 bytes --]

On Sat, Jan 21, 2017 at 04:34:55PM +0100, Ludovic Courtès wrote:

>To make things more concrete, we could discuss specific packages you are
>interested in and see how we could provide them in Guix{,SD}.

The package is the old bsd-games bundle. Some of the games need to write 
score files under /var/lib/bsdgames/
You can find attached my patch so far.

-- 
Thanks,
Georgi

[-- Attachment #2: games-bsd-games.patch --]
[-- Type: text/x-diff, Size: 4201 bytes --]

From aaac9e7f8d6bb088bc390099445e33135e6bfbc3 Mon Sep 17 00:00:00 2001
From: TwoFinger <Two-Finger@users.noreply.github.com>
Date: Sat, 21 Jan 2017 18:13:48 +0200
Subject: [PATCH] gnu: Add bsd-games

* gnu/packages/games.scm (bsd-games): New variable
* gnu/packages/patches/bsd-games.patch: New file
---
 gnu/packages/games.scm               | 39 +++++++++++++++++++++++++++++++++++
 gnu/packages/patches/bsd-games.patch | 40 ++++++++++++++++++++++++++++++++++++
 2 files changed, 79 insertions(+)
 create mode 100644 gnu/packages/patches/bsd-games.patch

diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index c449f5954..ad4b4f2da 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -3068,3 +3068,42 @@ symbols, the game needs graphics to render the non-euclidean world.")
 for Un*x systems with X11.")
     (home-page "http://olofson.net/kobodl/")
     (license license:gpl2+)))
+
+(define-public bsd-games
+  (let ((commit "1e6f16ee747a7c8b6a0b836b12847f79024d0ab6"))
+    (package
+      (name "bsd-games")
+      (version (git-version "2.17" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url (string-append "https://github.com/msharov/" name ".git"))
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (patches
+                 (search-patches (string-append name ".patch")))
+                (sha256
+                 (base32
+                  "15hazzgy0z5c17rqzvahaw4z0c4n2sdq56mi8lsja56yr1w5n6y3"))))
+      (build-system gnu-build-system)
+      (inputs `(("ncurses" ,ncurses)))
+      (arguments
+       `(#:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'configure
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (setenv "CC" "gcc")
+                      (let* ((out (assoc-ref outputs "out"))
+                             (var (string-append out "/var")))
+                        (zero?
+                         (system* "./configure"
+                                  (string-append "--prefix=" out)
+                                  (string-append "--localstatedir=" var)))))))))
+      (home-page "https://www.polyomino.org.uk/computer/software/bsd-games/")
+      (synopsis "Linux port of the collection of BSD command line games")
+      (description "Port of most of the games from NetBSD-current.
+Games included:
+atc battlestar caesar cribbage dab drop4 fish gomoku
+hack hangman klondike robots sail snake worm wump")
+      (license license:bsd-4))))
diff --git a/gnu/packages/patches/bsd-games.patch b/gnu/packages/patches/bsd-games.patch
new file mode 100644
index 000000000..9a153f535
--- /dev/null
+++ b/gnu/packages/patches/bsd-games.patch
@@ -0,0 +1,40 @@
+commit 5a7ed4b23b20b239b0788b2cefe1d2819c80aa1a
+Author: TwoFinger <Two-Finger@users.noreply.github.com>
+Date:   Sat Jan 21 14:22:30 2017 +0200
+
+    No chgrp /var/lib/bsdgames
+
+diff --git a/Config.mk.in b/Config.mk.in
+index fbdae93..851421a 100644
+--- a/Config.mk.in
++++ b/Config.mk.in
+@@ -13,7 +13,7 @@ INSTALL		:= @INSTALL@
+ 
+ INSTALLEXE	:= ${INSTALL} -D -p -m 755 -s
+ INSTALLDATA	:= ${INSTALL} -D -p -m 644
+-INSTALLSCORE	:= ${INSTALL} -D -p -m 664 -g users
++INSTALLSCORE	:= ${INSTALL} -D -p -m 664
+ RMPATH		:= rmdir -p --ignore-fail-on-non-empty
+ 
+ ################ Destination #########################################
+@@ -21,7 +21,7 @@ RMPATH		:= rmdir -p --ignore-fail-on-non-empty
+ prefix		:= @prefix@
+ BINDIR		:= @bindir@
+ MANDIR		:= @mandir@
+-STATEDIR	:= @localstatedir@/${NAME}
++STATEDIR	:= @localstatedir@/lib/${NAME}
+ DATADIR		:= @datadir@/${NAME}
+ 
+ WORDLIST	:= @wordlist@
+diff --git a/hack/Module.mk b/hack/Module.mk
+index 971bcf1..4ab0eb6 100644
+--- a/hack/Module.mk
++++ b/hack/Module.mk
+@@ -51,7 +51,6 @@ ${hack/SCOREI}:	${STATEDIR}/hack
+ ${STATEDIR}/hack:
+ 	@echo "Creating hack dir and score files ..."
+ 	@mkdir -m 755 ${STATEDIR}/hack
+-	@chgrp users ${STATEDIR}/hack
+ 	@${INSTALLSCORE} /dev/null ${STATEDIR}/hack/perm
+ 	@${INSTALLSCORE} /dev/null ${STATEDIR}/hack/record
+ 
-- 
2.11.0


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

* Re: A postinst equivalent in Guix?
  2017-01-21 16:36       ` Georgi Kirilov
@ 2017-01-23  9:34         ` Ludovic Courtès
  2017-01-25  0:26           ` Christopher Allan Webber
  2017-01-25 14:54           ` Georgi Kirilov
  0 siblings, 2 replies; 12+ messages in thread
From: Ludovic Courtès @ 2017-01-23  9:34 UTC (permalink / raw)
  To: Georgi Kirilov; +Cc: guix-devel

Georgi Kirilov <kirilov.georgi.s@gmail.com> skribis:

> On Sat, Jan 21, 2017 at 04:34:55PM +0100, Ludovic Courtès wrote:
>
>>To make things more concrete, we could discuss specific packages you are
>>interested in and see how we could provide them in Guix{,SD}.
>
> The package is the old bsd-games bundle. Some of the games need to
> write score files under /var/lib/bsdgames/
> You can find attached my patch so far.

The patch looks good to me!

As for /var/lib/bsdgames, then it’s up to the admin to set the right
permissions on it.  We can ensure that it exists and has the right
permissions on GuixSD, but on foreign distros, there’s nothing we can
do.

We could also modify bsd-games such that it falls back to
~/.local/bsdgames when /var/lib/bsdgames isn’t accessible (and it would
be worth submitting upstream).  ISTR this was discussed for one of the
games present in Guix.

WDYT?

Ludo’.

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

* Re: A postinst equivalent in Guix?
  2017-01-23  9:34         ` Ludovic Courtès
@ 2017-01-25  0:26           ` Christopher Allan Webber
  2017-01-25 13:15             ` Ludovic Courtès
  2017-01-25 14:54           ` Georgi Kirilov
  1 sibling, 1 reply; 12+ messages in thread
From: Christopher Allan Webber @ 2017-01-25  0:26 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel, Georgi Kirilov

Ludovic Courtès writes:

> Georgi Kirilov <kirilov.georgi.s@gmail.com> skribis:
>
>> On Sat, Jan 21, 2017 at 04:34:55PM +0100, Ludovic Courtès wrote:
>>
>>>To make things more concrete, we could discuss specific packages you are
>>>interested in and see how we could provide them in Guix{,SD}.
>>
>> The package is the old bsd-games bundle. Some of the games need to
>> write score files under /var/lib/bsdgames/
>> You can find attached my patch so far.
>
> The patch looks good to me!
>
> As for /var/lib/bsdgames, then it’s up to the admin to set the right
> permissions on it.  We can ensure that it exists and has the right
> permissions on GuixSD, but on foreign distros, there’s nothing we can
> do.
>
> We could also modify bsd-games such that it falls back to
> ~/.local/bsdgames when /var/lib/bsdgames isn’t accessible (and it would
> be worth submitting upstream).  ISTR this was discussed for one of the
> games present in Guix.
>
> WDYT?
>
> Ludo’.

I'm a bit wary about GuixSD packages declaring being able to write to
/var/ anything by default.  What would the permissions be?  I guess if
it were world-writable to all "users" group users it would be okayish.

Note that KoboDeluxe includes a patch snarfed from Debian that comments
out the ability to save score files for this same reason, and it was
marked in Debian as a security patch IIRC...

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

* Re: A postinst equivalent in Guix?
  2017-01-25  0:26           ` Christopher Allan Webber
@ 2017-01-25 13:15             ` Ludovic Courtès
  2017-01-25 13:42               ` John Darrington
  0 siblings, 1 reply; 12+ messages in thread
From: Ludovic Courtès @ 2017-01-25 13:15 UTC (permalink / raw)
  To: Christopher Allan Webber; +Cc: guix-devel, Georgi Kirilov

Christopher Allan Webber <cwebber@dustycloud.org> skribis:

> Ludovic Courtès writes:
>
>> Georgi Kirilov <kirilov.georgi.s@gmail.com> skribis:
>>
>>> On Sat, Jan 21, 2017 at 04:34:55PM +0100, Ludovic Courtès wrote:
>>>
>>>>To make things more concrete, we could discuss specific packages you are
>>>>interested in and see how we could provide them in Guix{,SD}.
>>>
>>> The package is the old bsd-games bundle. Some of the games need to
>>> write score files under /var/lib/bsdgames/
>>> You can find attached my patch so far.
>>
>> The patch looks good to me!
>>
>> As for /var/lib/bsdgames, then it’s up to the admin to set the right
>> permissions on it.  We can ensure that it exists and has the right
>> permissions on GuixSD, but on foreign distros, there’s nothing we can
>> do.
>>
>> We could also modify bsd-games such that it falls back to
>> ~/.local/bsdgames when /var/lib/bsdgames isn’t accessible (and it would
>> be worth submitting upstream).  ISTR this was discussed for one of the
>> games present in Guix.
>>
>> WDYT?
>>
>> Ludo’.
>
> I'm a bit wary about GuixSD packages declaring being able to write to
> /var/ anything by default.  What would the permissions be?  I guess if
> it were world-writable to all "users" group users it would be okayish.
>
> Note that KoboDeluxe includes a patch snarfed from Debian that comments
> out the ability to save score files for this same reason, and it was
> marked in Debian as a security patch IIRC...

Yeah, I think scores in /var are a remnant of the past.  Unix just lacks
a good way to address this use case.

So it sounds best for games to use a score file under $HOME by default.

Ludo’.

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

* Re: A postinst equivalent in Guix?
  2017-01-25 13:15             ` Ludovic Courtès
@ 2017-01-25 13:42               ` John Darrington
  2017-01-25 16:19                 ` Christopher Allan Webber
  0 siblings, 1 reply; 12+ messages in thread
From: John Darrington @ 2017-01-25 13:42 UTC (permalink / raw)
  To: Ludovic Court??s; +Cc: guix-devel, Georgi Kirilov

[-- Attachment #1: Type: text/plain, Size: 2450 bytes --]

On Wed, Jan 25, 2017 at 02:15:12PM +0100, Ludovic Court??s wrote:
     Christopher Allan Webber <cwebber@dustycloud.org> skribis:
     
     > Ludovic Court??s writes:
     >
     >> Georgi Kirilov <kirilov.georgi.s@gmail.com> skribis:
     >>
     >>> On Sat, Jan 21, 2017 at 04:34:55PM +0100, Ludovic Court??s wrote:
     >>>
     >>>>To make things more concrete, we could discuss specific packages you are
     >>>>interested in and see how we could provide them in Guix{,SD}.
     >>>
     >>> The package is the old bsd-games bundle. Some of the games need to
     >>> write score files under /var/lib/bsdgames/
     >>> You can find attached my patch so far.
     >>
     >> The patch looks good to me!
     >>
     >> As for /var/lib/bsdgames, then it???s up to the admin to set the right
     >> permissions on it.  We can ensure that it exists and has the right
     >> permissions on GuixSD, but on foreign distros, there???s nothing we can
     >> do.
     >>
     >> We could also modify bsd-games such that it falls back to
     >> ~/.local/bsdgames when /var/lib/bsdgames isn???t accessible (and it would
     >> be worth submitting upstream).  ISTR this was discussed for one of the
     >> games present in Guix.
     >>
     >> WDYT?
     >>
     >> Ludo???.
     >
     > I'm a bit wary about GuixSD packages declaring being able to write to
     > /var/ anything by default.  What would the permissions be?  I guess if
     > it were world-writable to all "users" group users it would be okayish.
     >
     > Note that KoboDeluxe includes a patch snarfed from Debian that comments
     > out the ability to save score files for this same reason, and it was
     > marked in Debian as a security patch IIRC...
     
     Yeah, I think scores in /var are a remnant of the past.  Unix just lacks
     a good way to address this use case.
     
     So it sounds best for games to use a score file under $HOME by default.
     
I always thought the unix way was rather nice.   The scores file was owned by 
"games" and programs which wanted to write to them were setuid games.

That way everyone on the system shares the same scores file.

J'
     

-- 
Avoid eavesdropping.  Send strong encrypted email.
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

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

* Re: A postinst equivalent in Guix?
  2017-01-23  9:34         ` Ludovic Courtès
  2017-01-25  0:26           ` Christopher Allan Webber
@ 2017-01-25 14:54           ` Georgi Kirilov
  1 sibling, 0 replies; 12+ messages in thread
From: Georgi Kirilov @ 2017-01-25 14:54 UTC (permalink / raw)
  To: Ludovic Courtès, Christopher Allan Webber, John Darrington
  Cc: guix-devel

On Mon, Jan 23, 2017 at 10:34:55AM +0100, Ludovic Courtès wrote:
>As for /var/lib/bsdgames, then it’s up to the admin to set the right
>permissions on it.  We can ensure that it exists and has the right
>permissions on GuixSD, but on foreign distros, there’s nothing we can
>do.

Yep, I think making it work in GuixSD is enough :)
Other distros have their own package.

I tried adding a gnu/services/games.scm and mimicking what the other 
services did, but I don't even know how to trigger the code.
I would appreciate any help.

On Wed, Jan 25, 2017 at 02:42:41PM +0100, John Darrington wrote:
>I always thought the unix way was rather nice.   The scores file was owned by
>"games" and programs which wanted to write to them were setuid games.
>
>That way everyone on the system shares the same scores file.

Yes, some of these games maintain and query a system-wide top scores 
list so users can try to beat each other's top scores.

On Tue, Jan 24, 2017 at 06:26:28PM -0600, Christopher Allan Webber wrote:
>I'm a bit wary about GuixSD packages declaring being able to write to
>/var/ anything by default.  What would the permissions be?  I guess if
>it were world-writable to all "users" group users it would be okayish.

This is exactly how this package does it - it installs initial, empty 
score files and chgrp's them to 'users'.

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

* Re: A postinst equivalent in Guix?
  2017-01-25 13:42               ` John Darrington
@ 2017-01-25 16:19                 ` Christopher Allan Webber
  0 siblings, 0 replies; 12+ messages in thread
From: Christopher Allan Webber @ 2017-01-25 16:19 UTC (permalink / raw)
  To: John Darrington; +Cc: guix-devel, Georgi Kirilov

John Darrington writes:

> On Wed, Jan 25, 2017 at 02:15:12PM +0100, Ludovic Court??s wrote:
>      Christopher Allan Webber <cwebber@dustycloud.org> skribis:
>
>      > Ludovic Court??s writes:
>      >
>      >> Georgi Kirilov <kirilov.georgi.s@gmail.com> skribis:
>      >>
>      >>> On Sat, Jan 21, 2017 at 04:34:55PM +0100, Ludovic Court??s wrote:
>      >>>
>      >>>>To make things more concrete, we could discuss specific packages you are
>      >>>>interested in and see how we could provide them in Guix{,SD}.
>      >>>
>      >>> The package is the old bsd-games bundle. Some of the games need to
>      >>> write score files under /var/lib/bsdgames/
>      >>> You can find attached my patch so far.
>      >>
>      >> The patch looks good to me!
>      >>
>      >> As for /var/lib/bsdgames, then it???s up to the admin to set the right
>      >> permissions on it.  We can ensure that it exists and has the right
>      >> permissions on GuixSD, but on foreign distros, there???s nothing we can
>      >> do.
>      >>
>      >> We could also modify bsd-games such that it falls back to
>      >> ~/.local/bsdgames when /var/lib/bsdgames isn???t accessible (and it would
>      >> be worth submitting upstream).  ISTR this was discussed for one of the
>      >> games present in Guix.
>      >>
>      >> WDYT?
>      >>
>      >> Ludo???.
>      >
>      > I'm a bit wary about GuixSD packages declaring being able to write to
>      > /var/ anything by default.  What would the permissions be?  I guess if
>      > it were world-writable to all "users" group users it would be okayish.
>      >
>      > Note that KoboDeluxe includes a patch snarfed from Debian that comments
>      > out the ability to save score files for this same reason, and it was
>      > marked in Debian as a security patch IIRC...
>
>      Yeah, I think scores in /var are a remnant of the past.  Unix just lacks
>      a good way to address this use case.
>
>      So it sounds best for games to use a score file under $HOME by default.
>
> I always thought the unix way was rather nice.   The scores file was owned by
> "games" and programs which wanted to write to them were setuid games.
>
> That way everyone on the system shares the same scores file.
>
> J'

It's fun but... does anyone still play games on the same shared machine
anymore and compare score files?

Except for maybe nethack on fencepost ... ;)

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

end of thread, other threads:[~2017-01-25 16:19 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-19 18:30 A postinst equivalent in Guix? Georgi Kirilov
2017-01-20  6:23 ` John Darrington
2017-01-20 14:09 ` Ludovic Courtès
2017-01-21 14:39   ` Georgi Kirilov
2017-01-21 15:34     ` Ludovic Courtès
2017-01-21 16:36       ` Georgi Kirilov
2017-01-23  9:34         ` Ludovic Courtès
2017-01-25  0:26           ` Christopher Allan Webber
2017-01-25 13:15             ` Ludovic Courtès
2017-01-25 13:42               ` John Darrington
2017-01-25 16:19                 ` Christopher Allan Webber
2017-01-25 14:54           ` Georgi Kirilov

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).