From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mathieu Lirzin Subject: Re: [PATCH 2/4] build: Produce 'guix-config' instead of using compile-time tricks. Date: Thu, 06 Aug 2015 19:50:36 +0200 Message-ID: <87egjgz4pf.fsf@openmailbox.org> References: <1438033720-30958-1-git-send-email-mthl@openmailbox.org> <1438033720-30958-3-git-send-email-mthl@openmailbox.org> <87pp3bl5si.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36517) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZNPLk-0001Fb-OT for guix-devel@gnu.org; Thu, 06 Aug 2015 13:53:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZNPLh-0005mL-BY for guix-devel@gnu.org; Thu, 06 Aug 2015 13:53:04 -0400 Received: from smtp11.openmailbox.org ([62.4.1.45]:49829) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZNPLg-0005ki-PR for guix-devel@gnu.org; Thu, 06 Aug 2015 13:53:01 -0400 In-Reply-To: <87pp3bl5si.fsf@gmail.com> (Alex Kost's message of "Wed, 29 Jul 2015 11:35:57 +0300") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Alex Kost Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain Alex Kost writes: > Mathieu Lirzin (2015-07-28 00:48 +0300) wrote: > > [...] >> +(defconst guix-prefix >> + "@prefix@") >> + >> +(defconst guix-emacs-ui-dir >> + "@emacsuidir@") > > I think this constant is useless in this form since its value will be > "${prefix}/share/guile/site/2.0/guix/emacs". What about making it: > > (defconst guix-emacs-ui-dir > (replace-regexp-in-string "${prefix}" guix-prefix "@emacsuidir@")) > That makes sense. I have gone further in the way of what you suggested, by mimicking what has been done in "guix/config.scm". > And to leave: > > (defvar guix-load-path guix-emacs-ui-dir > "Directory with scheme files for \"guix.el\" package.") > > in "guix-backend.el"? I would prefer to keep this change separated. See last updated patch of this batch. -- Mathieu Lirzin --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=0001-build-Produce-guix-config-instead-of-using-compile-t.patch Content-Transfer-Encoding: quoted-printable >From 4ed6955bf3edf2b3979e47958412ad41d2bc191e Mon Sep 17 00:00:00 2001 From: Mathieu Lirzin Date: Thu, 6 Aug 2015 11:36:53 +0200 Subject: [PATCH 1/3] build: Produce 'guix-config' instead of using compile-time tricks. * emacs/guix-config.el.in: New file. * emacs/guix-{init,profiles}.el.in: Rename to ... * emacs/guix-{init,profiles}.el: ... these. New files. Use 'guix-config'. * .gitignore, configure.ac: Adjust accordingly. --- .gitignore | 3 +-- configure.ac | 3 +-- emacs/guix-config.el.in | 31 +++++++++++++++++++++++ emacs/guix-init.el | 19 ++++++++++++++ emacs/guix-init.el.in | 19 -------------- emacs/guix-profiles.el | 64 +++++++++++++++++++++++++++++++++++++++++++= ++++ emacs/guix-profiles.el.in | 62 -------------------------------------------= -- 7 files changed, 116 insertions(+), 85 deletions(-) create mode 100644 emacs/guix-config.el.in create mode 100644 emacs/guix-init.el delete mode 100644 emacs/guix-init.el.in create mode 100644 emacs/guix-profiles.el delete mode 100644 emacs/guix-profiles.el.in diff --git a/.gitignore b/.gitignore index c7a6cdd..657c2b3 100644 --- a/.gitignore +++ b/.gitignore @@ -120,8 +120,7 @@ GTAGS /emacs/Makefile /emacs/guix-autoloads.el /emacs/guix-helper.scm -/emacs/guix-init.el -/emacs/guix-profiles.el +/emacs/guix-config.el /doc/os-config-bare-bones.texi /doc/os-config-desktop.texi /doc/*.1 diff --git a/configure.ac b/configure.ac index 2c8b9f0..bc1714e 100644 --- a/configure.ac +++ b/configure.ac @@ -200,8 +200,7 @@ AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" !=3D "xno"= ]) =20 emacsuidir=3D"${guilemoduledir}/guix/emacs" AC_SUBST([emacsuidir]) -AC_CONFIG_FILES([emacs/guix-init.el - emacs/guix-profiles.el +AC_CONFIG_FILES([emacs/guix-config.el emacs/guix-helper.scm]) =20 AC_OUTPUT diff --git a/emacs/guix-config.el.in b/emacs/guix-config.el.in new file mode 100644 index 0000000..8804f72 --- /dev/null +++ b/emacs/guix-config.el.in @@ -0,0 +1,31 @@ +;;; guix-config.el --- Compile-time configuration of Guix. + +;; Copyright =C2=A9 2015 Mathieu Lirzin + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(defconst guix-emacs-interface-directory + (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")) + +(defconst guix-state-directory + ;; This must match `NIX_STATE_DIR' as defined in `daemon.am'. + (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")) + +(provide 'guix-config) + +;;; guix-config.el ends here diff --git a/emacs/guix-init.el b/emacs/guix-init.el new file mode 100644 index 0000000..6ea6fcd --- /dev/null +++ b/emacs/guix-init.el @@ -0,0 +1,19 @@ +(require 'guix-config) +(require 'guix-autoloads) + +(defvar guix-load-path guix-emacs-interface-directory + "Directory with scheme files for \"guix.el\" package.") + +(defcustom guix-package-enable-at-startup t + "If non-nil, activate Emacs packages installed in a user profile. +Set this variable to nil before requiring `guix-init' file to +avoid loading autoloads of Emacs packages installed in +`guix-user-profile'." + :type 'boolean + :group 'guix) + +(when guix-package-enable-at-startup + (require 'guix-emacs) + (guix-emacs-load-autoloads 'all)) + +(provide 'guix-init) diff --git a/emacs/guix-init.el.in b/emacs/guix-init.el.in deleted file mode 100644 index 728bc37..0000000 --- a/emacs/guix-init.el.in +++ /dev/null @@ -1,19 +0,0 @@ -(require 'guix-autoloads) - -(defvar guix-load-path - (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@") - "Directory with scheme files for \"guix.el\" package.") - -(defcustom guix-package-enable-at-startup t - "If non-nil, activate Emacs packages installed in a user profile. -Set this variable to nil before requiring `guix-init' file to -avoid loading autoloads of Emacs packages installed in -`guix-user-profile'." - :type 'boolean - :group 'guix) - -(when guix-package-enable-at-startup - (require 'guix-emacs) - (guix-emacs-load-autoloads 'all)) - -(provide 'guix-init) diff --git a/emacs/guix-profiles.el b/emacs/guix-profiles.el new file mode 100644 index 0000000..1a41745 --- /dev/null +++ b/emacs/guix-profiles.el @@ -0,0 +1,64 @@ +;;; guix-profiles.el --- Guix profiles + +;; Copyright =C2=A9 2014 Alex Kost + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . + +;;; Code: + +(require 'guix-config) + +(defvar guix-user-profile + (expand-file-name "~/.guix-profile") + "User profile.") + +(defvar guix-default-profile + (concat guix-state-directory + "/profiles/per-user/" + (getenv "USER") + "/guix-profile") + "Default Guix profile.") + +(defvar guix-current-profile guix-default-profile + "Current profile.") + +(defun guix-profile-prompt (&optional default) + "Prompt for profile and return it. +Use DEFAULT as a start directory. If it is nil, use +`guix-current-profile'." + (let* ((path (read-file-name "Profile: " + (file-name-directory + (or default guix-current-profile)))) + (path (directory-file-name (expand-file-name path)))) + (if (string=3D path guix-user-profile) + guix-default-profile + path))) + +(defun guix-set-current-profile (path) + "Set `guix-current-profile' to PATH. +Interactively, prompt for PATH. With prefix, use +`guix-default-profile'." + (interactive + (list (if current-prefix-arg + guix-default-profile + (guix-profile-prompt)))) + (setq guix-current-profile path) + (message "Current profile has been set to '%s'." + guix-current-profile)) + +(provide 'guix-profiles) + +;;; guix-profiles.el ends here diff --git a/emacs/guix-profiles.el.in b/emacs/guix-profiles.el.in deleted file mode 100644 index 1e43707..0000000 --- a/emacs/guix-profiles.el.in +++ /dev/null @@ -1,62 +0,0 @@ -;;; guix-profiles.el --- Guix profiles - -;; Copyright =C2=A9 2014 Alex Kost - -;; This file is part of GNU Guix. - -;; GNU Guix is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. - -;; GNU Guix is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - -;;; Code: - -(defvar guix-user-profile - (expand-file-name "~/.guix-profile") - "User profile.") - -(defvar guix-default-profile - (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix") - "/profiles/per-user/" - (getenv "USER") - "/guix-profile") - "Default Guix profile.") - -(defvar guix-current-profile guix-default-profile - "Current profile.") - -(defun guix-profile-prompt (&optional default) - "Prompt for profile and return it. -Use DEFAULT as a start directory. If it is nil, use -`guix-current-profile'." - (let* ((path (read-file-name "Profile: " - (file-name-directory - (or default guix-current-profile)))) - (path (directory-file-name (expand-file-name path)))) - (if (string=3D path guix-user-profile) - guix-default-profile - path))) - -(defun guix-set-current-profile (path) - "Set `guix-current-profile' to PATH. -Interactively, prompt for PATH. With prefix, use -`guix-default-profile'." - (interactive - (list (if current-prefix-arg - guix-default-profile - (guix-profile-prompt)))) - (setq guix-current-profile path) - (message "Current profile has been set to '%s'." - guix-current-profile)) - -(provide 'guix-profiles) - -;;; guix-profiles.el ends here --=20 2.1.4 --=-=-=--