From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id aC+xJefeQmLJZwAAgWs5BA (envelope-from ) for ; Tue, 29 Mar 2022 12:26:47 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id uAJoI+feQmJwNQEA9RJhRA (envelope-from ) for ; Tue, 29 Mar 2022 12:26:47 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id D26362DD7D for ; Tue, 29 Mar 2022 12:26:46 +0200 (CEST) Received: from localhost ([::1]:50142 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nZ93l-0000TD-LZ for larch@yhetil.org; Tue, 29 Mar 2022 06:26:45 -0400 Received: from eggs.gnu.org ([209.51.188.92]:43684) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nZ92B-0000Pk-00 for bug-guix@gnu.org; Tue, 29 Mar 2022 06:25:12 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:37833) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nZ926-0007e5-JK for bug-guix@gnu.org; Tue, 29 Mar 2022 06:25:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nZ926-0000ci-Af for bug-guix@gnu.org; Tue, 29 Mar 2022 06:25:02 -0400 X-Loop: help-debbugs@gnu.org Subject: bug#52808: Guix home should not assume that all targets are dot files Resent-From: Andrew Tropin Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Tue, 29 Mar 2022 10:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52808 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Ludovic =?UTF-8?Q?Court=C3=A8s?= , Nick Zalutskiy , 52808@debbugs.gnu.org Received: via spool by 52808-submit@debbugs.gnu.org id=B52808.16485494652332 (code B ref 52808); Tue, 29 Mar 2022 10:25:02 +0000 Received: (at 52808) by debbugs.gnu.org; 29 Mar 2022 10:24:25 +0000 Received: from localhost ([127.0.0.1]:59963 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nZ91U-0000bY-Vj for submit@debbugs.gnu.org; Tue, 29 Mar 2022 06:24:25 -0400 Received: from relay10.mail.gandi.net ([217.70.178.230]:47285) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nZ91S-0000bD-IW for 52808@debbugs.gnu.org; Tue, 29 Mar 2022 06:24:23 -0400 Received: (Authenticated sender: andrew@trop.in) by mail.gandi.net (Postfix) with ESMTPSA id 5F707240011; Tue, 29 Mar 2022 10:24:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=trop.in; s=gm1; t=1648549456; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=qdIoBvu/eBOiZBtVR0Ejy61Kt4D1R+xbJW4yJxH6grw=; b=XYmh2ZX2SdnBjncqmZG0Tmg4xahen75FPfxIpBtgyDpHsE0gdKZ2gR/AvUVLdlSWd0nH0e oBbAdAwL6xv8nbWFjGu7nhsNsIoP4bOcY9S24AXkxG8+3vWuOrdlkBbgROx4URDNm7CahM moETQ7TqrWRO84Ayr9mJTUuddciRkpG4iLnWv+OlI+d6J2fiDJJG9FYkTCaSFudWJZaGQs 4/nSBGOvDCPly+5jzRT303hBWNXczYXmXsNmZO3bS3yOSiSFwlYkFisNHPaXu7hohrNirN aCBcJGlCTJzh7n17dbtuS5az2/FSvqcsB7fzmh/MJCwyhRxg+E1bFkNFPXtoxw== From: Andrew Tropin In-Reply-To: <87h77sl4pn.fsf_-_@gnu.org> References: <87mthklcpt.fsf@gnu.org> <6050c325-9ae9-406a-97fe-91bdf9bcd12a@www.fastmail.com> <87h77sl4pn.fsf_-_@gnu.org> Date: Tue, 29 Mar 2022 13:24:12 +0300 Message-ID: <878rstf44z.fsf@trop.in> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: "bug-Guix" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1648549607; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:resent-cc:resent-from:resent-sender: resent-message-id:in-reply-to:in-reply-to:references:references: list-id:list-help:list-unsubscribe:list-subscribe:list-post: dkim-signature; bh=qdIoBvu/eBOiZBtVR0Ejy61Kt4D1R+xbJW4yJxH6grw=; b=ahdMm/m+OhMAgBaRP5ePhFUDAEJAuvQerybNlK+H8FNwcOVJY5z1tvg9DMSxtVwrQ/xLur N1r1GJr155vuS6H3G40Hx7PGfd1QwgxF66nR6Ql6YqIoWeBXSzI4Q5q1+Vjk9J0iiwvVYO QJ4LkmCrgRiqQEJjr9zEB2WT9gP7nLk02nSkeTxxdjskF7lqfxfi+Tm40yr5ZGRY0AaiU7 SG85cwvljgGxR8foQZ6QFhcN/UFUzUVxtjwu6Sg6+upUEcD/+HIiN3TGtuV8XBnUpa+Kh9 vnSgEl6xhWFmKF/BNDoro3Cgxix2EMfYuGV+QwUEc0a/NeKJLU0lODqSAmiC4w== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1648549607; a=rsa-sha256; cv=none; b=RUCEICizJo223/KfZZhM2tRwViUX/+xtd2FHMPFuVQiaUTV9kvVlYNFgioF24s9evtNx9T mjSa8cfAuJqFNJFPqikCvuwI7dpPPE30Gavoci2whU+ZxnWKHhrRYh959FNcYTS9gvrry7 P9q8AGxqeVOxxlOdQkLBgoQEexM/6an/qgHu8IjGfAA4c9bYbG8N7SaEhEZAaJYJyjd8x4 7jL+6pBJETdNMh+VQJDXwvjWeVzPs7sokIz2AcTWiYOCwdx2IkKfr5P3zuZJzjE4chA6YI qaI212zOfdfjUA8skpGCdrfyPYNlsiVZir1pCSHUAtgnZLOet2/c4auWGxpQpA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=trop.in header.s=gm1 header.b=XYmh2ZX2; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -1.27 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=trop.in header.s=gm1 header.b=XYmh2ZX2; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: D26362DD7D X-Spam-Score: -1.27 X-Migadu-Scanner: scn0.migadu.com X-TUID: BrZpayaK0AR6 --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2022-03-20 22:00, Ludovic Court=C3=A8s wrote: > I wrote: > >> I finally got around to committing it as >> 6da2a5a5655668f42ec5b26f875ddbc498e132b6. Thank you! > > I hit =E2=80=9Cclose=E2=80=9D too quickly: we still need the patch that c= hanges > =E2=80=98home-files-service-type=E2=80=99 and/or symlink-manager.scm to n= ot prepend a > dot, so reopening! :-) > > Ludo=E2=80=99. Those patches introduce a breaking change, but the surface and number of people affected should be small if everyone migrated to xdg-configuration-files. It removes the special handling of dot files in symlink-manager and doesn't add a leading dot automatically. Please, merge them on April 8. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-home-symlink-manager-Remove-appending-of-leading-dot.patch Content-Transfer-Encoding: quoted-printable From=201b556cda9716eba31a8a6dd9d3c263988de26ccf Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Tue, 29 Mar 2022 11:28:30 +0300 Subject: [PATCH 1/2] home: symlink-manager: Remove appending of leading dot. * gnu/home/services.scm (xdg-configuration-files-directory): Add leading do= t. * gnu/home/services.scm (xdg-configuration-files-service-type): Change name. * gnu/home/services/shells.scm (add-shell-profile-file, zsh-get-configuration-files, add-zsh-dot-configuration, add-zsh-xdg-configuration, add-bash-configuration): Add leading dots. * gnu/home/services/symlink-manager.scm (update-symlinks-script): Remove leading dot. =2D-- gnu/home/services.scm | 8 ++++---- gnu/home/services/shells.scm | 20 ++++++++++---------- gnu/home/services/symlink-manager.scm | 2 +- gnu/home/services/xdg.scm | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/gnu/home/services.scm b/gnu/home/services.scm index 2f441eb968..17acfcdb09 100644 =2D-- a/gnu/home/services.scm +++ b/gnu/home/services.scm @@ -285,10 +285,10 @@ (define home-files-service-type (description "Files that will be put in @file{~~/.guix-home/files}, and further processed during activation."))) =20 =2D(define xdg-configuration-files-directory "config") +(define xdg-configuration-files-directory ".config") =20 (define (xdg-configuration-files files) =2D "Add config/ prefix to each file-path in FILES." + "Add .config/ prefix to each file-path in FILES." (map (match-lambda ((file-path . rest) (cons (string-append xdg-configuration-files-directory "/" file-= path) @@ -296,7 +296,7 @@ (define (xdg-configuration-files files) files)) =20 (define home-xdg-configuration-files-service-type =2D (service-type (name 'home-files) + (service-type (name 'home-xdg-configuration) (extensions (list (service-extension home-files-service-type xdg-configuration-files))) @@ -304,7 +304,7 @@ (define home-xdg-configuration-files-service-type (extend append) (default-value '()) (description "Files that will be put in =2D@file{~~/.guix-home/files/config}, and further processed during activati= on."))) +@file{~~/.guix-home/files/.config}, and further processed during activatio= n."))) =20 (define %initialize-gettext #~(begin diff --git a/gnu/home/services/shells.scm b/gnu/home/services/shells.scm index 086fe7d8c4..8389968c96 100644 =2D-- a/gnu/home/services/shells.scm +++ b/gnu/home/services/shells.scm @@ -77,7 +77,7 @@ (define-configuration home-shell-profile-configuration really know what you do.")) =20 (define (add-shell-profile-file config) =2D `(("profile" + `((".profile" ,(mixed-text-file "shell-profile" "\ @@ -211,16 +211,16 @@ (define (zsh-file-by-field config field) (zsh-serialize-field config field))))) =20 (define (zsh-get-configuration-files config) =2D `(("zprofile" ,(zsh-file-by-field config 'zprofile)) ;; Always non-emp= ty + `((".zprofile" ,(zsh-file-by-field config 'zprofile)) ;; Always non-empty ,@(if (and (zsh-field-not-empty? config 'zshenv) (zsh-field-not-empty? config 'environment-variables)) =2D `(("zshenv" ,(zsh-file-by-field config 'zshenv))) '()) + `((".zshenv" ,(zsh-file-by-field config 'zshenv))) '()) ,@(if (zsh-field-not-empty? config 'zshrc) =2D `(("zshrc" ,(zsh-file-by-field config 'zshrc))) '()) + `((".zshrc" ,(zsh-file-by-field config 'zshrc))) '()) ,@(if (zsh-field-not-empty? config 'zlogin) =2D `(("zlogin" ,(zsh-file-by-field config 'zlogin))) '()) + `((".zlogin" ,(zsh-file-by-field config 'zlogin))) '()) ,@(if (zsh-field-not-empty? config 'zlogout) =2D `(("zlogout" ,(zsh-file-by-field config 'zlogout))) '()))) + `((".zlogout" ,(zsh-file-by-field config 'zlogout))) '()))) =20 (define (add-zsh-dot-configuration config) (define zshenv-auxiliary-file @@ -230,14 +230,14 @@ (define zshenv-auxiliary-file "[[ -f $ZDOTDIR/.zshenv ]] && source $ZDOTDIR/.zshenv\n")) =20 (if (home-zsh-configuration-xdg-flavor? config) =2D `(("zshenv" ,zshenv-auxiliary-file)) + `((".zshenv" ,zshenv-auxiliary-file)) (zsh-get-configuration-files config))) =20 (define (add-zsh-xdg-configuration config) (if (home-zsh-configuration-xdg-flavor? config) (map (lambda (lst) =2D (cons (string-append "zsh/." (car lst)) + (cons (string-append "zsh/" (car lst)) (cdr lst))) (zsh-get-configuration-files config)) '())) @@ -430,7 +430,7 @@ (define* (file-if-not-empty field #:optional (extra-con= tent #f)) (field-obj (car (filter-fields field)))) (if (or extra-content (not (null? ((configuration-field-getter field-obj) config))= )) =2D `(,(object->snake-case-string file-name) + `(,(string-append "." (object->snake-case-string file-name)) ,(apply mixed-text-file (object->snake-case-string file-name) (append (or extra-content '()) @@ -439,7 +439,7 @@ (define* (file-if-not-empty field #:optional (extra-con= tent #f)) =20 (filter (compose not null?) =2D `(("bash_profile" + `((".bash_profile" ,(mixed-text-file "bash_profile" "\ diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/syml= ink-manager.scm index 80ca73fed8..23ab1e3955 100644 =2D-- a/gnu/home/services/symlink-manager.scm +++ b/gnu/home/services/symlink-manager.scm @@ -67,7 +67,7 @@ (define (preprocess-file file) (1+ (string-length home-directory))) (substring file (string-length #$xdg-configuration-files-direct= ory))) =2D (string-append "." file))) + file)) =20 (define (target-file file) ;; Return the target of FILE, a config file name sans leading d= ot diff --git a/gnu/home/services/xdg.scm b/gnu/home/services/xdg.scm index 361a2a6148..3b504d7d09 100644 =2D-- a/gnu/home/services/xdg.scm +++ b/gnu/home/services/xdg.scm @@ -421,7 +421,7 @@ (define (home-xdg-mime-applications-files config) (define (add-xdg-desktop-entry-file entry) (let ((file (first entry)) (config (second entry))) =2D (list (format #f "local/share/applications/~a" file) + (list (format #f ".local/share/applications/~a" file) (apply mixed-text-file (format #f "xdg-desktop-~a-entry" file) config)))) =2D-=20 2.34.0 --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0002-home-Add-home-xdg-data-files-service-type.patch Content-Transfer-Encoding: quoted-printable From=205e1f45fa9ea1aca16843dc85d7d21fd46f3cfcb8 Mon Sep 17 00:00:00 2001 From: Andrew Tropin Date: Tue, 29 Mar 2022 12:47:39 +0300 Subject: [PATCH 2/2] home: Add home-xdg-data-files-service-type. * gnu/home/services.scm (home-xdg-data-files-service-type): New variable. * gnu/home/services/symlink-manager.scm (update-symlinks-script): Add a pro= per handling for XDG_DATA_HOME value. * gnu/home/services/xdg.scm (home-xdg-mime-applications-service-type): Use home-xdg-data-files service. =2D-- gnu/home/services.scm | 25 +++++++++++++++++++++++++ gnu/home/services/symlink-manager.scm | 25 ++++++++++++++++++------- gnu/home/services/xdg.scm | 5 +++-- 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/gnu/home/services.scm b/gnu/home/services.scm index 17acfcdb09..49bd6e3555 100644 =2D-- a/gnu/home/services.scm +++ b/gnu/home/services.scm @@ -39,6 +39,7 @@ (define-module (gnu home services) home-environment-variables-service-type home-files-service-type home-xdg-configuration-files-service-type + home-xdg-data-files-service-type home-run-on-first-login-service-type home-activation-service-type home-run-on-change-service-type @@ -46,6 +47,7 @@ (define-module (gnu home services) =20 home-files-directory xdg-configuration-files-directory + xdg-data-files-directory =20 fold-home-service-types home-provenance @@ -306,6 +308,29 @@ (define home-xdg-configuration-files-service-type (description "Files that will be put in @file{~~/.guix-home/files/.config}, and further processed during activatio= n."))) =20 +(define xdg-data-files-directory ".local/share") + +(define (xdg-data-files files) + "Add .local/share prefix to each file-path in FILES." + (map (match-lambda + ((file-path . rest) + (cons (string-append xdg-data-files-directory "/" file-path) + rest))) + files)) + +(define home-xdg-data-files-service-type + (service-type (name 'home-xdg-data) + (extensions + (list (service-extension home-files-service-type + xdg-data-files))) + (compose concatenate) + (extend append) + (default-value '()) + (description "Files that will be put in +@file{~~/.guix-home/files/.local/share}, and further processed during +activation."))) + + (define %initialize-gettext #~(begin (bindtextdomain %gettext-domain diff --git a/gnu/home/services/symlink-manager.scm b/gnu/home/services/syml= ink-manager.scm index 23ab1e3955..6d19258ec7 100644 =2D-- a/gnu/home/services/symlink-manager.scm +++ b/gnu/home/services/symlink-manager.scm @@ -54,6 +54,10 @@ (define xdg-config-home (or (getenv "XDG_CONFIG_HOME") (string-append (getenv "HOME") "/.config"))) =20 + (define xdg-data-home + (or (getenv "XDG_DATA_HOME") + (string-append (getenv "HOME") "/.local/share"))) + (define backup-directory (string-append home-directory "/" (number->string (current-time= )) "-guix-home-legacy-configs-backup")) @@ -61,13 +65,20 @@ (define backup-directory (define (preprocess-file file) "If file is in XDG-CONFIGURATION-FILES-DIRECTORY use subdirectory from XDG_CONFIG_HOME to generate a target path." =2D (if (string-prefix? #$xdg-configuration-files-directory file) =2D (string-append =2D (substring xdg-config-home =2D (1+ (string-length home-directory))) =2D (substring file =2D (string-length #$xdg-configuration-files-dire= ctory))) =2D file)) + (cond + ((string-prefix? #$xdg-configuration-files-directory file) + (string-append + (substring xdg-config-home + (1+ (string-length home-directory))) + (substring file + (string-length #$xdg-configuration-files-director= y)))) + ((string-prefix? #$xdg-data-files-directory file) + (string-append + (substring xdg-data-home + (1+ (string-length home-directory))) + (substring file + (string-length #$xdg-data-files-directory)))) + (else file))) =20 (define (target-file file) ;; Return the target of FILE, a config file name sans leading d= ot diff --git a/gnu/home/services/xdg.scm b/gnu/home/services/xdg.scm index 3b504d7d09..71c028c788 100644 =2D-- a/gnu/home/services/xdg.scm +++ b/gnu/home/services/xdg.scm @@ -421,7 +421,8 @@ (define (home-xdg-mime-applications-files config) (define (add-xdg-desktop-entry-file entry) (let ((file (first entry)) (config (second entry))) =2D (list (format #f ".local/share/applications/~a" file) + ;; TODO: Use xdg-data-files instead of home-files here + (list (format #f "applications/~a" file) (apply mixed-text-file (format #f "xdg-desktop-~a-entry" file) config)))) @@ -468,7 +469,7 @@ (define home-xdg-mime-applications-service-type (service-type (name 'home-xdg-mime-applications) (extensions (list (service-extension =2D home-files-service-type + home-xdg-data-files-service-type home-xdg-mime-applications-files) (service-extension home-xdg-configuration-files-service-type =2D-=20 2.34.0 --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable =2D-=20 Best regards, Andrew Tropin --=-=-=-- --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJDBAEBCgAtFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmJC3kwPHGFuZHJld0B0 cm9wLmluAAoJECII0glYwd6wemYQAIqGizTv/391UhCfwRYj2ha/yeNHdMgaRfaW DjF2C7VgbwSvVzMJULFaZb+NWOjJwATtSMkBzM/2vY32vXBlJYBDfchWDSWZqPQM 9LwwO5HTU5GekwG1ZMPyiTgh+cNE8gy9M84vkTdJg8zKmb0jTvRDDv+DueQXxaCv 83uwBxPuP2KksrxY+MWexzxDd3CIeSfkm3xTbmIUMS8CGkgsaqO/hQpjlcT2KiXm cIusfRJ2FwP/BsyPIk0aSvgw4eJqTuNxBVJw7YxDRkuvFvtpqkE9kffets4PjZpj rIAL9OisDmmbB8U36Qr1EGkMayh+7UEZjjSGIj7UlfIUblY7fipz+pJtNjUp+w96 VmqJmSoM4vJ3HbQFYCswppw1LlnX9HssfA9MvJikv/J4sOkSHsoVXnCEWuRj/RL2 nLQr7SpRahZUibIPdsOPTwzzQg9dKH57LHmnH8lpKCU13aoi/JaQkeQZCd6hcsFe +6Y+QY0zjN5/ssd6Okq54Qt5g37yX1DIpTibnfRhuctmBwdBrwwt81Wc4cOXyaLL Ep2XYdZVtACMNgBOGUA+yLp5ILZoMnvYyPxbMb4qQ7ZQBgD3Ljp0TYAZBni9prP8 cod5jPyhG7oB/z/yrOthN2wQf93tV8WymL7p4rC1JOgY9hcAMWY4mXm+Uzo/c+dV u+JXwOrI =wmIG -----END PGP SIGNATURE----- --==-=-=--