From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Allen Li Newsgroups: gmane.emacs.bugs Subject: bug#35022: 26.1; Load order of custom-autoload, custom-load-symbol, custom-loads is backward? Date: Wed, 27 Mar 2019 12:45:42 -0700 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000007cd87c058518af38" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="15720"; mail-complaints-to="usenet@blaine.gmane.org" To: 35022@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Mar 27 20:47:12 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h9EW0-0003zP-45 for geb-bug-gnu-emacs@m.gmane.org; Wed, 27 Mar 2019 20:47:12 +0100 Original-Received: from localhost ([127.0.0.1]:52811 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h9EVz-0005Ph-3z for geb-bug-gnu-emacs@m.gmane.org; Wed, 27 Mar 2019 15:47:11 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:46320) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h9EVs-0005PZ-Ik for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2019 15:47:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h9EVr-0007Hc-0s for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2019 15:47:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:48250) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h9EVq-0007HG-Sf for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2019 15:47:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1h9EVq-00045B-HI for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2019 15:47:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Allen Li Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 27 Mar 2019 19:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 35022 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.155371596515628 (code B ref -1); Wed, 27 Mar 2019 19:47:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 27 Mar 2019 19:46:05 +0000 Original-Received: from localhost ([127.0.0.1]:33561 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h9EUv-000440-BM for submit@debbugs.gnu.org; Wed, 27 Mar 2019 15:46:05 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:60024) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h9EUt-00043G-S8 for submit@debbugs.gnu.org; Wed, 27 Mar 2019 15:46:04 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:33272) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h9EUo-0005DU-IM for submit@debbugs.gnu.org; Wed, 27 Mar 2019 15:45:58 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:46161) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h9EUn-0005HM-6n for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2019 15:45:58 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h9EUl-0005Ah-Uh for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2019 15:45:57 -0400 Original-Received: from mail-it1-x12c.google.com ([2607:f8b0:4864:20::12c]:50503) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h9EUl-00059L-FB for bug-gnu-emacs@gnu.org; Wed, 27 Mar 2019 15:45:55 -0400 Original-Received: by mail-it1-x12c.google.com with SMTP id m137so2137081ita.0 for ; Wed, 27 Mar 2019 12:45:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=felesatra-moe.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=xwGLgS0g7C7Z+Yvxxg0cIhIvY8+qV8Gd18n3nSP3kkM=; b=CG6wdyqqnxEco50rIMAH9/42nJyiBMoYMW7Xlh03tgPyGOMGfnnC+zR5falXCsV27L fdL/KnBuU6KnLdvnu400wViTodMBruCtZs6VZx/ZIO6v6+IB403WXdr1aE1T8kZAgqHA gZMF3CxMK4TzPtKHKlRjgvrVVwKLYiPr3RFjrcF9y5nd1Ny0OreJraoqVB8PY0dnMHxM 5I61+iZjoZeR2BKDtobEJEF7kkYooh5/M8vFFa8sGEqyeSa1Fo2UPvnVZQhcdcFM1gCl bdLuhUO5BGhJgLEeGKCjGnwmPVKGa00dYtQmBBHJsvVH4tL9p6GGcWJrnFBe431lyHUm GSlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=xwGLgS0g7C7Z+Yvxxg0cIhIvY8+qV8Gd18n3nSP3kkM=; b=ABQv30dXnKCljbFn4Lss9SCypMd2j8muVpzLklmVAXtVuskDYCMHumbHDD0GnZ1W6N bz5rnIGk6ivVHcLUnrqI6fK8k2A/9a8m/ygatbkrFgowvk50xZd+t0dAytgYUb2X+Q49 6Q33+YgV128CfIB5O5KE2buPBi0N52K8K+1loTbLJ1OMrzproaoucqJZLnWGPhYd4zij 26bwY7Dt/N0TxqCPVKLX3jt+nRS2qIWJE+DUyM+f2rEfl+DXCeVIJZEQY8llA96w82wO R9lFl+j9E4rxVpEuC7Z6C6QD+w7srhiWqSMgrFaWGg6rkxri2aOAKenjbriqOAfkssJV JFzQ== X-Gm-Message-State: APjAAAU0caKn+GB/qLOOAQhIpXM/QmPPO3uTWxhAI6GJSasmemBL2pzV PBHfORBKuzp4ppCqYbG6evWKfeIGKV+9sijF5tp3YsW4QEU= X-Google-Smtp-Source: APXvYqyFR7bF6qyZPQKdtpLtO73Ji0ygmKo0i6EVmtHL5l/ubMnh40p90I8NxGIMQJDo5eSXbqzMpayviuktROLFLXM= X-Received: by 2002:a24:6b84:: with SMTP id v126mr5009447itc.136.1553715953435; Wed, 27 Mar 2019 12:45:53 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:156864 Archived-At: --0000000000007cd87c058518af38 Content-Type: text/plain; charset="UTF-8" I just spent some time tracking down an unexpected behavior in custom autoloads. The custom-autoload function is used in autoloads/loaddef files to set up custom variables. custom-autoload adds a load path to the custom-loads property of a variable. This property is then used in custom-load-symbol to load each of the load paths. The problem is that custom-autoload adds load paths to the front of custom-loads, and custom-load-symbol loads the paths in forward order. This is unexpected because if the site distributes a package foo and the user installs their own version of foo, the site custom-autoload will be called first: ;; Called from site-start (custom-autoload 'foo-some-variable "path/to/site/foo" nil) ;; Called from init.el/package-initialize (custom-autoload 'foo-some-variable "path/to/user/foo" nil) In this case the custom-loads property will be ("path/to/user/foo" "path/to/site/foo") The user version will be loaded first, and the site version will be loaded later, overriding the user version. This behavior is unexpected; the user would expect that their version of foo overrides the site version of foo. Furthermore, this behavior is somewhat non-deterministic; site overrides foo *only if* foo is loaded via setting foo-some-variable with customize. If foo is loaded normally (e.g. with require), then the user version of foo will be loaded in preference to the site verison of foo. I have attached a patch fixing this. Note that this is technically a breaking change; however I really doubt any one is intentionally relying on this behavior. I consider this a bugfix and I think there are probably users who don't realize that they are suffering from this bug because it's so subtle. In GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.24), modified by Debian Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 System Description: Debian GNU/Linux rodete (upgraded from: Ubuntu 14.04 LTS) --0000000000007cd87c058518af38 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Load-custom-variable-dependencies-in-FIFO-order.patch" Content-Disposition: attachment; filename="0001-Load-custom-variable-dependencies-in-FIFO-order.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jtrmcp880 RnJvbSA3MTk1NzNjNDNlY2I2ZTM3ZTJmN2M4MTNkZmNhYjA5Yzg3MDdkNTlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGxlbiBMaSA8YXlhdGFuZUBnb29nbGUuY29tPgpEYXRlOiBX ZWQsIDI3IE1hciAyMDE5IDEyOjM5OjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gTG9hZCBjdXN0 b20gdmFyaWFibGUgZGVwZW5kZW5jaWVzIGluIEZJRk8gb3JkZXIKClRoZSBjdXN0b20tYXV0b2xv YWQgZnVuY3Rpb24gaXMgdXNlZCBpbiBhdXRvbG9hZHMvbG9hZGRlZiBmaWxlcyB0byBzZXQKdXAg Y3VzdG9tIHZhcmlhYmxlcy4gIGN1c3RvbS1hdXRvbG9hZCBhZGRzIGEgbG9hZCBwYXRoIHRvIHRo ZQpjdXN0b20tbG9hZHMgcHJvcGVydHkgb2YgYSB2YXJpYWJsZS4gIFRoaXMgcHJvcGVydHkgaXMg dGhlbiB1c2VkIGluCmN1c3RvbS1sb2FkLXN5bWJvbCB0byBsb2FkIGVhY2ggb2YgdGhlIGxvYWQg cGF0aHMuCgpUaGUgcHJvYmxlbSBpcyB0aGF0IGN1c3RvbS1hdXRvbG9hZCBhZGRzIGxvYWQgcGF0 aHMgdG8gdGhlIGZyb250IG9mCmN1c3RvbS1sb2FkcywgYW5kIGN1c3RvbS1sb2FkLXN5bWJvbCBs b2FkcyB0aGUgcGF0aHMgaW4gZm9yd2FyZCBvcmRlci4KClRoaXMgaXMgdW5leHBlY3RlZCBiZWNh dXNlIGlmIHRoZSBzaXRlIGRpc3RyaWJ1dGVzIGEgcGFja2FnZSBmb28gYW5kIHRoZQp1c2VyIGlu c3RhbGxzIHRoZWlyIG93biB2ZXJzaW9uIG9mIGZvbywgdGhlIHNpdGUgY3VzdG9tLWF1dG9sb2Fk IHdpbGwgYmUKY2FsbGVkIGZpcnN0OgoKOzsgQ2FsbGVkIGZyb20gc2l0ZS1zdGFydAooY3VzdG9t LWF1dG9sb2FkICdmb28tc29tZS12YXJpYWJsZSAicGF0aC90by9zaXRlL2ZvbyIgbmlsKQo7OyBD YWxsZWQgZnJvbSBpbml0LmVsL3BhY2thZ2UtaW5pdGlhbGl6ZQooY3VzdG9tLWF1dG9sb2FkICdm b28tc29tZS12YXJpYWJsZSAicGF0aC90by91c2VyL2ZvbyIgbmlsKQoKSW4gdGhpcyBjYXNlIHRo ZSBjdXN0b20tbG9hZHMgcHJvcGVydHkgd2lsbCBiZQoKKCJwYXRoL3RvL3VzZXIvZm9vIiAicGF0 aC90by9zaXRlL2ZvbyIpCgpUaGUgdXNlciB2ZXJzaW9uIHdpbGwgYmUgbG9hZGVkIGZpcnN0LCBh bmQgdGhlIHNpdGUgdmVyc2lvbiB3aWxsIGJlCmxvYWRlZCBsYXRlciwgb3ZlcnJpZGluZyB0aGUg dXNlciB2ZXJzaW9uLgoKVGhpcyBiZWhhdmlvciBpcyB1bmV4cGVjdGVkOyB0aGUgdXNlciB3b3Vs ZCBleHBlY3QgdGhhdCB0aGVpciB2ZXJzaW9uIG9mCmZvbyBvdmVycmlkZXMgdGhlIHNpdGUgdmVy c2lvbiBvZiBmb28uICBGdXJ0aGVybW9yZSwgdGhpcyBiZWhhdmlvciBpcwpzb21ld2hhdCBub24t ZGV0ZXJtaW5pc3RpYzsgc2l0ZSBvdmVycmlkZXMgZm9vICpvbmx5IGlmKiBmb28gaXMgbG9hZGVk CnZpYSBzZXR0aW5nIGZvby1zb21lLXZhcmlhYmxlIHdpdGggY3VzdG9taXplLiAgSWYgZm9vIGlz IGxvYWRlZCBub3JtYWxseQooZS5nLiB3aXRoIHJlcXVpcmUpLCB0aGVuIHRoZSB1c2VyIHZlcnNp b24gb2YgZm9vIHdpbGwgYmUgbG9hZGVkIGluCnByZWZlcmVuY2UgdG8gdGhlIHNpdGUgdmVyaXNv biBvZiBmb28uCgoqIGxpc3AvY3VzdG9tLmVsIChjdXN0b20tbG9hZC1zeW1ib2wpOiBMb2FkIHZh cmlhYmxlIGRlcHMgaW4gcmV2ZXJzZSBvcmRlci4KLS0tCiBsaXNwL2N1c3RvbS5lbCB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2xpc3AvY3VzdG9tLmVsIGIvbGlzcC9jdXN0b20uZWwKaW5kZXggZjAxMjU3NDJkMS4uZGE0 MDdiZWU4MyAxMDA2NDQKLS0tIGEvbGlzcC9jdXN0b20uZWwKKysrIGIvbGlzcC9jdXN0b20uZWwK QEAgLTYzOSw3ICs2MzksNyBAQCBjdXN0b20tbG9hZC1zeW1ib2wKICAgICAgIChjb25kaXRpb24t Y2FzZSBuaWwKIAkgIChyZXF1aXJlICdjdXMtc3RhcnQpCiAJKGVycm9yIG5pbCkpCi0gICAgICAo ZG9saXN0IChsb2FkIChnZXQgc3ltYm9sICdjdXN0b20tbG9hZHMpKQorICAgICAgKGRvbGlzdCAo bG9hZCAocmV2ZXJzZSAoZ2V0IHN5bWJvbCAnY3VzdG9tLWxvYWRzKSkpCiAJKGNvbmQgKChzeW1i b2xwIGxvYWQpIChjb25kaXRpb24tY2FzZSBuaWwgKHJlcXVpcmUgbG9hZCkgKGVycm9yIG5pbCkp KQogCSAgICAgIDs7IFRoaXMgaXMgc3Vic3VtZWQgYnkgdGhlIHRlc3QgYmVsb3csIGJ1dCBpdCdz IG11Y2ggZmFzdGVyLgogCSAgICAgICgoYXNzb2MgbG9hZCBsb2FkLWhpc3RvcnkpKQotLSAKMi4y MS4wLjM5Mi5nZjhmNjc4NzE1OWUtZ29vZwoK --0000000000007cd87c058518af38--