[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gnome-tweak-tool tweaks
From: |
Ludovic Courtès |
Subject: |
Re: gnome-tweak-tool tweaks |
Date: |
Sun, 12 Jun 2016 21:42:44 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
address@hidden (宋文武) skribis:
> address@hidden (Ludovic Courtès) writes:
>
>> [...]
>>
>>> I/O error : Permission denied
>>> I/O error : Permission denied
>>> Failed to write XML file; For permission problems, try rerunning as root
>>
>> I found that string comes from ‘shared-mime-info’, which is itself used
>> by the ‘xdg-mime-database’ hook in (guix profiles) (a hook that runs
>> when the profile is created to update the MIME database):
>>
>> static gboolean save_xml_file(xmlDocPtr doc, const gchar *filename, GError
>> **error)
>> {
>> #if LIBXML_VERSION > 20400
>> if (xmlSaveFormatFileEnc(filename, doc, "utf-8", 1) < 0)
>> {
>> g_set_error(error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
>> "Failed to write XML file; For permission problems,
>> try rerunning as root");
>> return FALSE;
>> }
>> #else
>>
>> 宋文武: any idea what the problem might be? Perhaps
>> ‘update-mime-database’ is trying to write to /gnu/store/…-something?
> Yep, it happends when '$out/share/mime/application' is not writable.
> The xml files under 'application' are going to be generated by
> update-mime-database, and the shared-mime-info package has it
> pre-generated, so after union "share/mime", an un-writable 'application'
> directory point to the store will cause the problem.
>
> Commit 359f06aa fix this by union the "share/mime/packages" directory.
OK, thanks for the quick (brown?) fix!
>> Also, it’s a problem that ‘update-mime-database’ returns 0 here, as
>> seems to be the case.
> It returns 256 here for the problem, but the derivation still built and
> profile got updated, I have no idea about this :-
>
> Does a failing hook (returns #f) supposed to top the profile update?
I thought it did, but it doesn’t:
(gexp->derivation "foo" #~(begin (mkdir #$output) #f))
leads a derivation that succeeds, contrary to
‘build-expression->derivation’.
To avoid that, we need an explicit (exit #f).
For now I prefer to address it at every call site (patch below) instead
of adding some magic to ‘gexp->derivation’, which would be hard to do in
a hygienic way.
Thanks,
Ludo’.
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -510,9 +510,9 @@ MANIFEST."
info (string-append #$output "/share/info/dir"))))
(mkdir-p (string-append #$output "/share/info"))
- (every install-info
+ (exit (every install-info
(append-map info-files
- '#$(manifest-inputs manifest)))))
+ '#$(manifest-inputs manifest))))))
(gexp->derivation "info-dir" build
#:modules '((guix build utils))
@@ -562,7 +562,7 @@ entries of MANIFEST, or #f if MANIFEST does not have any
GHC packages."
(system* (string-append #+ghc "/bin/ghc-pkg") "recache"
(string-append "--package-db=" db-dir)))))
(for-each delete-file (find-files db-dir "\\.conf$"))
- success)))
+ (exit success))))
(with-monad %store-monad
;; Don't depend on GHC when there's nothing to do.
@@ -710,7 +710,7 @@ MIME type."
(mkdir-p (string-append #$output "/share"))
(union-build destdir appdirs
#:log-port (%make-void-port "w"))
- (zero? (system* update-desktop-database destdir)))))
+ (exit (zero? (system* update-desktop-database destdir))))))
;; Don't run the hook when 'desktop-file-utils' is not referenced.
(if desktop-file-utils
@@ -745,7 +745,7 @@ entries. It's used to query the MIME type of a given file."
(union-build (string-append destdir "/packages") pkgdirs
#:log-port (%make-void-port "w"))
(setenv "XDG_DATA_HOME" datadir)
- (zero? (system* update-mime-database destdir)))))
+ (exit (zero? (system* update-mime-database destdir))))))
;; Don't run the hook when 'shared-mime-info' is referenced.
(if shared-mime-info