From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxim Cournoyer Subject: bug#38261: Recent changes to emacs build system Date: Wed, 20 Nov 2019 06:14:46 +0900 Message-ID: <87ftijwou1.fsf@gmail.com> References: <848bb376e0d6e171347afe53ce79bd96@posteo.net> <421db4d1a206488fa1883e40666846c5@posteo.net> <805ec3dde9328f427bc34126c36735d3@posteo.net> <70112f45226b44a1234a4d41aa7ac610@posteo.net> <26711cb3bba8555dea8ac4e9f8220726@posteo.net> <57dee66c6531e9c8afbc5a22518d9917@posteo.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:58030) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXArC-0001Zr-4M for bug-guix@gnu.org; Tue, 19 Nov 2019 16:16:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iXArA-0001Ph-FG for bug-guix@gnu.org; Tue, 19 Nov 2019 16:16:18 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:39798) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iXArA-0001Pb-BX for bug-guix@gnu.org; Tue, 19 Nov 2019 16:16:16 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iXAqw-000186-9J for bug-guix@gnu.org; Tue, 19 Nov 2019 16:16:16 -0500 Sender: "Debbugs-submit" Resent-Message-ID: Received: from eggs.gnu.org ([2001:470:142:3::10]:57899) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iXApr-0000Xc-9d for Bug-guix@gnu.org; Tue, 19 Nov 2019 16:14:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iXApp-0000lp-LB for Bug-guix@gnu.org; Tue, 19 Nov 2019 16:14:55 -0500 In-Reply-To: <57dee66c6531e9c8afbc5a22518d9917@posteo.net> (brettg@posteo.net's message of "Tue, 19 Nov 2019 02:58:33 +0100") List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+gcggb-bug-guix=m.gmane.org@gnu.org Sender: "bug-Guix" To: brettg@posteo.net Cc: bug-Guix , Bug guix Hello Brett, Thank you for the heads-up concerning the latest changes to the way Emacs find its libraries and the adjustments done to the emacs-build-system. brettg@posteo.net writes: > On 19.11.2019 01:32, brettg@posteo.net wrote: >> On 19.11.2019 01:27, brettg@posteo.net wrote: >>> On 18.11.2019 22:34, brettg@posteo.net wrote: >>>> On 18.11.2019 21:33, brettg@posteo.net wrote: >>>>> On 18.11.2019 21:28, brettg@posteo.net wrote: >>>>>> On 18.11.2019 20:01, brettg@posteo.net wrote: >>>>>>> Hey all, the recent changes to the emacs build system result in >>>>>>> a few >>>>>>> broken packages like emacs-pdf-tools, or basically anything >>>>>>> that uses >>>>>>> a phase for emacs-set-emacs-load-path. >>>>>>> >>>>>>> For example, I borrowed the technique used by emacs-pdf-tools to >>>>>>> package emacs-telega, resulting in both packages failing to build: >>>>>>> >>>>>>> Here is the code for emacs-telega: >>>>>>> >>>>>>> https://git.sr.ht/~brettgilio/cfg/tree/master/channel/non-gnu/packa= ges/emacs-xyz.scm#L99 >>>>>>> >>>>>>> The issue is in this phase for both emacs-pdf-tools and my >>>>>>> channel package: >>>>>>> >>>>>>> (add-after 'compress-documentation 'emacs-set-emacs-load-path >>>>>>> (assoc-ref emacs:%standard-phases 'set-emacs-load-path)) >>>>>>> >>>>>>> Resulting in: >>>>>>> >>>>>>> starting phase `emacs-set-emacs-load-path' >>>>>>> Backtrace: >>>>>>> 5 (primitive-load >>>>>>> "/gnu/store/5b1p1gsvfyi4fbx4s42rhab2dns=E2=80=A6") >>>>>>> In ice-9/eval.scm: >>>>>>> 191:35 4 (_ _) >>>>>>> In ice-9/boot-9.scm: >>>>>>> 829:9 3 (catch _ _ #>>>>>> /gnu/store/zmkg=E2=80=A6> =E2=80=A6) >>>>>>> In srfi/srfi-1.scm: >>>>>>> 863:16 2 (every1 #>>>>>> /gnu/store/zmkgrvv=E2=80=A6> =E2=80=A6) >>>>>>> In >>>>>>> /gnu/store/zmkgrvvhmrix2b1z7id6zrg9bb7qxzdl-module-import/guix/buil= d/gnu-build-system.scm: >>>>>>> 839:30 1 (_ _) >>>>>>> In unknown file: >>>>>>> 0 (_ #:source >>>>>>> "/gnu/store/qw8xbmk6ryl9a2jrp0gip3yffmsdix=E2=80=A6" =E2=80=A6) >>>>>>> >>>>>>> ERROR: Wrong type to apply: #f Sorry for failing to foresee this problem. I've fixed the couple packages that were impacted on master now. You can have a look at the fixes (they are fairly simple). >>>>>>> If we suspect that changes are going to be non-backwards >>>>>>> compatible >>>>>>> could we use the news system to pass along that message? Much >>>>>>> appreciated. Thanks. >>>>>>> >>>>>>> Brett Gilio >>>>>> >>>>>> I applied a hotfix to the package by replacing 'set-emacs-load-path >>>>>> with 'add-source-to-load-path. I believe this fix would work for >>>>>> all >>>>>> other affected packages. >>>>> >>>>> https://git.sr.ht/~brettgilio/cfg/commit/c24a6db9d25151c487e9db675bd7= 4e4bb3912173 Indeed! >>>> Ricardo, just wanted to make you aware that this emacs-build-system >>>> change does break your guile-studio. I discovered this because I >>>> adopted some of your ideas of autoloading in the generated emacs lisp >>>> from guile-studio when creating my own emacs configuration dependent >>>> on guix, which resulted in >>>> >>>> progn: Wrong number of arguments: (lambda nil "Autoload Emacs >>>> packages >>>> found in EMACSLOADPATH. >>>> >>>> 'Autoload' means to load the 'autoloads' files matching >>>> `guix-emacs-autoloads-regexp'." (interactive) (let* ((emacs-load-path >>>> (getenv "EMACSLOADPATH")) (emacs-non-core-load-path-directories >>>> (seq-filter (function (lambda (dir) (string-match-p >>>> "/share/emacs/site-lisp" dir))) (split-string emacs-load-path ":"))) >>>> (autoloads (mapcan (function guix-emacs-find-autoloads) >>>> emacs-non-core-load-path-directories))) (mapc (function (lambda (f) >>>> (load f (quote noerror)))) autoloads))), 78 >>>> >>>> I'll let you know if I can find any fix for this when I get some >>>> time. >>>> But just wanted to pass the message along. >>>> >>>> Brett >>> >>> I tried removing the arguments passed to >>> `guix-emacs-autoload-packages' as the updated version >>> (http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/aux-files/= emacs/guix-emacs.el?id=3D47b3b4c2aa49e21f4cc32c97ff7bbbd069bb849c) >>> does not carry arguments anymore, instead depending on a variable >>> EMACSLOADPATH. However, whenever that is done it returns >>> >>> split-string: Wrong type argument: stringp, nil >>> >>> possibly because my system is not finding EMACSLOADPATH. Yes, that's the reason. Perhaps it could be worthwhile to give a better message in this condition, but it's unclear to me why this condition would arise at all. Would you mind giving some more background to how you got into that situation? I'll try building guile-studio and see if I could get a hint or two. >>> I will keep investigating. >> >> I can confirm, when running something analogous to `guix environment >> --ad-hoc emacs-dashboard` no changes are being made to the >> $GUIX_ENVIRONMENT/etc/profile to resemble EMACSLOADPATH. > > So I have investigated the issue with EMACSLOADPATH: Similar to > Ricardo's guile-studio, > my package enlign was using the autoload function from guix-emacs.el > to propagate a list > of packages called from inputs to be loaded with the start of emacs. > > I have since revised this to just call the autoload function directly, > no longer passing any arguments, and had to modify my enlign package > to respect the EMACSLOADPATH variable. This is only possible if all of > the packages are passed as propagated-inputs though, which is less > than desirable in my opinion (though I am willing to be convinced.) Is your package an Emacs library/package? If so, just defining the other Elisp dependencies of this package as propagated inputs would be the correct solution. For other cases (I can't think of how that would work exactly), perhaps wrapping the package's script with the computed EMACSLOADPATH environment variable could do? > This additionally leads to having to require emacs as a propagated > input as well, as leading it native or regular input leads to an error > with emacs not recognizing simple.el or mule-util. Do you mean, that your package somehow uses Emacs without having Emacs installed in the profile (not being propagated)? If this is the case, wrapping your program with EMACSLOADPATH (and patching its reference to Emacs) should work, without having to propagate anything. > Overall, I am not sure if I like the recent change to guix-emacs.el. I > understand where the incentive is to do this, but ultimately it seems > to lead to more headache when creating packages around emacs. > > https://git.sr.ht/~brettgilio/cfg/commit/47bc9ae544ba10c0cacef1435625dcb0= 114e8cf5 > > Anyways, > > If there is no other comment, this issue really just needs to fix > emacs-pdf-tools and other affected packages from the recent string of > changes. I'm sorry you've had some problems with this recent change! Thanks for bringing them out. Please do continue, I'm interested to know about any remaining issues you might find. Maxim