GNU bug report logs -
#29686
gnu: aspell: Do not ignore GuixOS system profile.
Previous Next
Full log
Message #32 received at 29686 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Hi Oleg & Pierre,
ludo <at> gnu.org (Ludovic Courtès) skribis:
> Indeed. I have:
>
> $ guix environment --ad-hoc aspell aspell-dict-ru -C -- aspell --config | grep -A3 dict-dir
> # dict-dir (string)
> # location of the main word list
> # default: <$ASPELL_DICT_DIR|home-dir/.guix-profile/lib/aspell> = /gnu/store/b411b0fbwc85fjnf0h030gdkbv1qdmqh-profile/lib/aspell
> dict-dir /home/ludo/.guix-profile/lib/aspell
>
> # encoding (string)
> # encoding to expect data to be in
> --
> # default: <actual-dict-dir> = /home/ludo/.guix-profile/lib/aspell/
>
> # master (string)
> # base name of the main dictionary to use
>
> The value that shows up after the “=” sign is as expected (it’s
> $ASPELL_DICT_DIR), but the value shown on the line below is not.
>
> Sounds like a problem in ‘aspell-dict-dir.patch’.
Actually the problem is the ‘wrap-aspell’ phase, which predates
‘aspell-dict-dir.patch’ and is unnecessary in the presence of this
patch.
In addition to removing the phase, the patch had to be adjusted so that
it would actually adjust the right-hand size of ‘|’ for ‘dict-dir’ (a
bug that apparently went unnoticed, probably because the ‘wrap-aspell’
phase was hiding it).
With the patch below, I get:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix environment --ad-hoc aspell aspell-dict-ru -C -- aspell --config |grep -A2 '^# dict-dir'
# dict-dir (string)
# location of the main word list
# default: <$ASPELL_DICT_DIR|$HOME/.guix-profile/lib/aspell> = /gnu/store/adfc4l73nw3ccai3h5im21wblmrhfy4z-profile/lib/aspell
--8<---------------cut here---------------end--------------->8---
and:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guix environment --ad-hoc aspell aspell-dict-ru -C -- aspell dicts
ru
ru-ye
ru-yeyo
ru-yo
--8<---------------cut here---------------end--------------->8---
… while still getting the intended result when running it outside ‘guix
environment’:
--8<---------------cut here---------------start------------->8---
$ (unset ASPELL_DICT_DIR; ./pre-inst-env guix environment --ad-hoc aspell -K -- aspell --config) |grep -A2 '^# dict-dir'
# dict-dir (string)
# location of the main word list
# default: <$ASPELL_DICT_DIR|$HOME/.guix-profile/lib/aspell> = /home/ludo/.guix-profile/lib/aspell
$ (unset ASPELL_DICT_DIR; ./pre-inst-env guix environment --ad-hoc aspell -K -- aspell dicts) |wc -l
58
$ (unset HOME; ./pre-inst-env guix environment --ad-hoc aspell -K -- aspell dicts) |wc -l
58
--8<---------------cut here---------------end--------------->8---
I’ll apply it on ‘core-updates’ if it’s fine with you.
Ludo’.
[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index af38c149c2..a5d02a453d 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo <at> gnu.org>
;;; Copyright © 2015, 2016 Alex Kost <alezost <at> gmail.com>
;;; Copyright © 2016 John Darrington <jmd <at> gnu.org>
;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim <at> flashner.co.il>
@@ -65,14 +65,6 @@
(("\"filter-path(.*)DICT_DIR" _ middle)
(string-append "\"filter-path" middle
"\"" libdir "\"")))
- #t)))
- (add-after 'install 'wrap-aspell
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((bin/aspell (string-append (assoc-ref outputs "out")
- "/bin/aspell")))
- (wrap-program bin/aspell
- '("ASPELL_CONF" "" =
- ("${ASPELL_CONF:-\"dict-dir ${GUIX_PROFILE:-$HOME/.guix-profile}/lib/aspell\"}")))
#t))))))
(inputs `(("perl" ,perl)))
diff --git a/gnu/packages/patches/aspell-default-dict-dir.patch b/gnu/packages/patches/aspell-default-dict-dir.patch
index 17a6ff606f..5f759a66d9 100644
--- a/gnu/packages/patches/aspell-default-dict-dir.patch
+++ b/gnu/packages/patches/aspell-default-dict-dir.patch
@@ -8,12 +8,34 @@ However it is necessary for applications that use libaspell since
--- a/common/config.cpp
+++ b/common/config.cpp
+@@ -651,7 +651,20 @@ namespace acommon {
+ } else { // sep == '|'
+ assert(replace[0] == '$');
+ const char * env = getenv(replace.c_str()+1);
+- final_str += env ? env : second;
++ if (env) {
++ final_str += env;
++ } else if (second[0] == '$') {
++ // Expand the right-hand side of '|', which starts with a
++ // reference to an environment variable.
++ auto slash = second.find('/');
++ String variable = second.substr(1, slash - 1);
++ const char * env = getenv(variable.c_str());
++ String value = env ? String(env) : "";
++ value += second.substr(slash, second.size() - slash);
++ final_str += value;
++ } else {
++ final_str += second;
++ }
+ }
+ replace = "";
+ in_replace = false;
@@ -1349,6 +1349,9 @@ namespace acommon {
# define REPL ".aspell.<lang>.prepl"
#endif
+#undef DICT_DIR
-+#define DICT_DIR "<$ASPELL_DICT_DIR|home-dir/.guix-profile/lib/aspell>"
++#define DICT_DIR "<$ASPELL_DICT_DIR|$HOME/.guix-profile/lib/aspell>"
+
static const KeyInfo config_keys[] = {
// the description should be under 50 chars
This bug report was last modified 5 years and 186 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.