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: Sun, 30 Aug 2015 19:55:41 +0200 Message-ID: <877fock6ea.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> <87egjgz4pf.fsf@openmailbox.org> <87h9o38vi8.fsf@gmail.com> <877fojt6fb.fsf@openmailbox.org> <87zj1ewcfe.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:51093) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZW6qT-0004VD-N0 for guix-devel@gnu.org; Sun, 30 Aug 2015 13:56:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZW6qQ-0004ve-Be for guix-devel@gnu.org; Sun, 30 Aug 2015 13:56:45 -0400 Received: from smtp28.openmailbox.org ([62.4.1.62]:37229) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZW6qP-0004sJ-VW for guix-devel@gnu.org; Sun, 30 Aug 2015 13:56:42 -0400 In-Reply-To: <87zj1ewcfe.fsf@gmail.com> (Alex Kost's message of "Wed, 26 Aug 2015 13:51:01 +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: > Both updated patches look good to me. Thank you. I have rebased those patches upon the current master branch. There was only a slight merge conflict in "emacs.am" for this one. --=-=-= 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 bd6163d13f6445b9a1ec0f85e4a19b9f73ab74ea 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-{init,profiles}.el.in: Rename to ... * emacs/guix-{init,profiles}.el: ... these. New files. Use 'guix-config'. * emacs/guix-config.el.in: New file. * emacs.am (nodist_lisp_DATA): Add it. Move them to ... (ELFILES): ... here. * .gitignore, configure.ac: Adjust accordingly. --- .gitignore | 3 +-- configure.ac | 3 +-- emacs.am | 6 ++--- 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 -------------------------------------------= -- 8 files changed, 119 insertions(+), 88 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 4547557..a363c07 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 247a9d5..cbe5dfb 100644 --- a/configure.ac +++ b/configure.ac @@ -205,8 +205,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.am b/emacs.am index bf91cca..0f1ac94 100644 --- a/emacs.am +++ b/emacs.am @@ -26,11 +26,13 @@ ELFILES =3D \ emacs/guix-help-vars.el \ emacs/guix-history.el \ emacs/guix-info.el \ + emacs/guix-init.el \ emacs/guix-list.el \ emacs/guix-messages.el \ emacs/guix-pcomplete.el \ emacs/guix-popup.el \ emacs/guix-prettify.el \ + emacs/guix-profiles.el \ emacs/guix-read.el \ emacs/guix-utils.el \ emacs/guix.el @@ -41,9 +43,7 @@ dist_lisp_DATA =3D \ $(ELFILES) \ $(AUTOLOADS) =20 -nodist_lisp_DATA =3D \ - emacs/guix-init.el \ - emacs/guix-profiles.el +nodist_lisp_DATA =3D emacs/guix-config.el =20 $(AUTOLOADS): $(ELFILES) $(EMACS) --batch --eval \ 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.5.0 --=-=-= Content-Type: text/plain -- Mathieu Lirzin --=-=-=--