bug#38878: 26.3; EBDB fails to mark role as defunct

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Jorge P. de Morais Neto
 0x8000078ebdb<return><return>ETog<return><return>Appl<return><return>


Hello.  I use the latest EBDB (0.6.11) on an updated Spacemacs (develop
branch) atop GNU Emacs 26.3 on an updated Debian buster.  Emacs was
compiled locally and installed with GNU Stow.

I cannot mark EBDB roles as defunct.  To help you with reproducing the
bug, I reproduced it on a GNU Emacs configuration where the only
customization was augmenting `package-archives' (despite it probably not
being necessary to install EBDB ) and installing `ebdb'.  I also used a
minimal EBDB database.  After setting everything up, I started Emacs,
invoked `toggle-debug-on-error', opened the dribble file and quickly
reproduced the bug.

In short: invoke M-x ebdb; <RET> twice; move to the John line on the
ACME record and press E; toggle the defunct mark; try to apply.

The backtrace:

--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (ebdb-unacceptable-field ebdb-field-role)
  signal(ebdb-unacceptable-field (ebdb-field-role))
  #f(compiled-function (class &optional query alist) #<bytecode 0xe26771>)(ebdb-record-organization (nil . ebdb-field-role) ((mail . ebdb-field-mail) (phone . ebdb-field-phone) (address . ebdb-field-address) (domain . ebdb-field-domain)))
  apply(#f(compiled-function (class &optional query alist) #<bytecode 0xe26771>) (ebdb-record-organization (nil . ebdb-field-role) ((mail . ebdb-field-mail) (phone . ebdb-field-phone) (address . ebdb-field-address) (domain . ebdb-field-domain))))
  #f(compiled-function (&rest cnm-args) #<bytecode 0xe1ffad>)(ebdb-record-organization (nil . ebdb-field-role) ((mail . ebdb-field-mail) (phone . ebdb-field-phone) (address . ebdb-field-address) (domain . ebdb-field-domain)))
  #f(compiled-function (cl--cnm class &optional query alist) #<bytecode 0xe2e3c9>)(#f(compiled-function (&rest cnm-args) #<bytecode 0xe1ffad>) ebdb-record-organization (nil . ebdb-field-role) ((domain . ebdb-field-domain)))
  apply(#f(compiled-function (cl--cnm class &optional query alist) #<bytecode 0xe2e3c9>) #f(compiled-function (&rest cnm-args) #<bytecode 0xe1ffad>) (ebdb-record-organization (nil . ebdb-field-role) ((domain . ebdb-field-domain))))
  #f(compiled-function (&rest args) #<bytecode 0xe14ded>)(ebdb-record-organization (nil . ebdb-field-role) ((domain . ebdb-field-domain)))
  apply(#f(compiled-function (&rest args) #<bytecode 0xe14ded>) (ebdb-record-organization (nil . ebdb-field-role) ((domain . ebdb-field-domain))))
  #f(compiled-function (&rest cnm-args) #<bytecode 0xe1f709>)(ebdb-record-organization (nil . ebdb-field-role) ((domain . ebdb-field-domain)))
  #f(compiled-function (cl--cnm class &optional query alist) #<bytecode 0xe37051>)(#f(compiled-function (&rest cnm-args) #<bytecode 0xe1f709>) ebdb-record-organization (nil . ebdb-field-role))
  apply(#f(compiled-function (cl--cnm class &optional query alist) #<bytecode 0xe37051>) #f(compiled-function (&rest cnm-args) #<bytecode 0xe1f709>) (ebdb-record-organization (nil . ebdb-field-role)))
  #f(compiled-function (&rest args) #<bytecode 0xe1817d>)(ebdb-record-organization (nil . ebdb-field-role))
  apply(#f(compiled-function (&rest args) #<bytecode 0xe1817d>) ebdb-record-organization (nil . ebdb-field-role))
  ebdb-record-field-slot-query(ebdb-record-organization (nil . ebdb-field-role))
  #f(compiled-function (cl--cnm record field &optional slot) #<bytecode 0xe26729>)(#f(compiled-function (&rest cnm-args) #<bytecode 0xb5e949>) #<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (cl--cnm record field &optional slot) #<bytecode 0xe26729>) #f(compiled-function (&rest cnm-args) #<bytecode 0xb5e949>) (#<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role>))
  #f(compiled-function (&rest args) #<bytecode 0xb86e55>)(#<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (&rest args) #<bytecode 0xb86e55>) #<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role>)
  #f(compiled-function (arg &rest args) #<bytecode 0xb6eab1>)(#<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (arg &rest args) #<bytecode 0xb6eab1>) #<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role> nil)
  ebdb-record-delete-field(#<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role>)
  #f(compiled-function (record old-field &optional new-field) "Change the values of FIELD belonging to RECORD." #<bytecode 0xe26745>)(#<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role> #<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (record old-field &optional new-field) "Change the values of FIELD belonging to RECORD." #<bytecode 0xe26745>) #<ebdb-record-organization ACME> (#<ebdb-field-role ebdb-field-role> #<ebdb-field-role ebdb-field-role>))
  #f(compiled-function (arg &rest args) #<bytecode 0xc59379>)(#<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role> #<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (arg &rest args) #<bytecode 0xc59379>) #<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role> #<ebdb-field-role ebdb-field-role>)
  ebdb-record-change-field(#<ebdb-record-organization ACME> #<ebdb-field-role ebdb-field-role> #<ebdb-field-role ebdb-field-role>)
  #f(compiled-function (new-field) "Do the actual insertion of the newly-customized field." #<bytecode 0xe450d5>)(#<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (new-field) "Do the actual insertion of the newly-customized field." #<bytecode 0xe450d5>) #<ebdb-field-role ebdb-field-role>)
  #f(compiled-function (&rest cnm-args) #<bytecode 0xe2fe0d>)()
  #f(compiled-function (cl--cnm field) "Check that the record owning FIELD can be edited.\nAlso redisplay the record after customization." #<bytecode 0xe450e1>)(#f(compiled-function (&rest cnm-args) #<bytecode 0xe2fe0d>) #<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (cl--cnm field) "Check that the record owning FIELD can be edited.\nAlso redisplay the record after customization." #<bytecode 0xe450e1>) #f(compiled-function (&rest cnm-args) #<bytecode 0xe2fe0d>) #<ebdb-field-role ebdb-field-role>)
  #f(compiled-function (&rest args) #<bytecode 0xe2fdf1>)(#<ebdb-field-role ebdb-field-role>)
  apply(#f(compiled-function (&rest args) #<bytecode 0xe2fdf1>) #<ebdb-field-role ebdb-field-role> nil)
  eieio-done-customizing(#<ebdb-field-role ebdb-field-role>)
  #f(compiled-function (&rest _) #<bytecode 0xe15c41>)((push-button :args nil :value "Apply" :notify #f(compiled-function (&rest _) #<bytecode 0xe15c41>) :button-overlay #<overlay from 12 to 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :from #<marker (moves after insertion) at 12 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :to #<marker at 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*>) (push-button :args nil :value "Apply" :notify #f(compiled-function (&rest _) #<bytecode 0xe15c41>) :button-overlay #<overlay from 12 to 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :from #<marker (moves after insertion) at 12 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :to #<marker at 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*>) nil)
  widget-apply((push-button :args nil :value "Apply" :notify #f(compiled-function (&rest _) #<bytecode 0xe15c41>) :button-overlay #<overlay from 12 to 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :from #<marker (moves after insertion) at 12 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :to #<marker at 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*>) :notify (push-button :args nil :value "Apply" :notify #f(compiled-function (&rest _) #<bytecode 0xe15c41>) :button-overlay #<overlay from 12 to 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :from #<marker (moves after insertion) at 12 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :to #<marker at 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*>) nil)
  widget-item-action((push-button :args nil :value "Apply" :notify #f(compiled-function (&rest _) #<bytecode 0xe15c41>) :button-overlay #<overlay from 12 to 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :from #<marker (moves after insertion) at 12 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :to #<marker at 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*>) nil)
  widget-apply((push-button :args nil :value "Apply" :notify #f(compiled-function (&rest _) #<bytecode 0xe15c41>) :button-overlay #<overlay from 12 to 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :from #<marker (moves after insertion) at 12 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :to #<marker at 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*>) :action nil)
  widget-apply-action((push-button :args nil :value "Apply" :notify #f(compiled-function (&rest _) #<bytecode 0xe15c41>) :button-overlay #<overlay from 12 to 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :from #<marker (moves after insertion) at 12 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*> :to #<marker at 19 in *CUSTOMIZE #<ebdb-field-role ebdb-field-role> default*>) nil)
  widget-button-press(13)
  funcall-interactively(widget-button-press 13)
  call-interactively(widget-button-press nil nil)
  command-execute(widget-button-press)
--8<---------------cut here---------------end--------------->8---

In GNU Emacs 26.3 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.5)
 of 2019-08-24 built on jorge--inspiron-5570
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Debian GNU/Linux 10 (buster)

Recent messages:
Applying Changes...
Entering debugger...
Quit
Mark set
s-, is undefined [2 times]
Composing main Info directory...done
command-execute: Command attempted to use minibuffer while in minibuffer
Mark saved where search started
Making completion list...
user-error: Beginning of history; no preceding item

Configured using:
 'configure --with-mailutils --enable-link-time-optimization'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB
NOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM THREADS LIBSYSTEMD LCMS2

Important settings:
  value of $LC_MONETARY: pt_BR.UTF-8
  value of $LC_NUMERIC: pt_BR.UTF-8
  value of $LC_TIME: pt_BR.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Text

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
format-spec rfc822 mml mml-sec epa derived epg gnus-util rmail
rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils cl-print debug misearch multi-isearch eieio-custom
wid-edit ebdb-com crm mailabbrev ebdb-format ebdb cl-extra help-mode
eieio-opt speedbar sb-image ezimage dframe find-func eieio-base pcase
subr-x cal-menu calendar cal-loaddefs map timezone cus-start cus-load
elec-pair finder-inf info package easymenu epg-config url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv
cl-loaddefs cl-lib time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs
button faces cus-face macroexp files text-properties overlay sha1 md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 160169 18263)
 (symbols 48 25783 1)
 (miscs 40 230 235)
 (strings 32 46034 2853)
 (string-bytes 1 1391856)
 (vectors 16 23558)
 (vector-slots 8 658173 15904)
 (floats 8 65 159)
 (intervals 56 1664 460)
 (buffers 992 19))

--
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- I am Brazilian.  I hope my English is correct and I welcome feedback.
- Please adopt free formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z.
- Free/libre software for Replicant, LineageOS and Android: https://f-droid.org
- [[https://www.gnu.org/philosophy/free-sw.html][What is free software?]]
Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Eric Abrahamsen-2
[hidden email] (Jorge P. de Morais Neto) writes:

>  0x8000078ebdb<return><return>ETog<return><return>Appl<return><return>
>
>
> Hello.  I use the latest EBDB (0.6.11) on an updated Spacemacs (develop
> branch) atop GNU Emacs 26.3 on an updated Debian buster.  Emacs was
> compiled locally and installed with GNU Stow.
>
> I cannot mark EBDB roles as defunct.  To help you with reproducing the
> bug, I reproduced it on a GNU Emacs configuration where the only
> customization was augmenting `package-archives' (despite it probably not
> being necessary to install EBDB ) and installing `ebdb'.  I also used a
> minimal EBDB database.  After setting everything up, I started Emacs,
> invoked `toggle-debug-on-error', opened the dribble file and quickly
> reproduced the bug.

Hi, thanks for the report. I haven't been able to immediately reproduce
this, but I'll take a look over the next couple of days and get back to
you.

Thanks,
Eric



Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Jorge P. de Morais Neto
Em [2020-01-02 qui 13:59:08-0800], Eric Abrahamsen escreveu:

> Hi, thanks for the report.  I haven't been able to immediately
> reproduce this, but I'll take a look over the next couple of days and
> get back to you.

Thanks.  And I forgot to mention that I also cannot change the role
label.

Regards




Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Jorge P. de Morais Neto
Em [2020-01-03 sex 14:09:53-0300], Jorge P. de Morais Neto escreveu:

> Thanks.  And I forgot to mention that I also cannot change the role
> label.

And now I reproduced the problem on an Emacs instance installed by GNU
Guix.

Regards
--
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- Serviços digitais acessíveis, sem fins lucrativos, baseados em tecnologia
  livre e com respeito ao usuário: https://disroot.org/
- Escolha formatos livres/abertos como PDF, ODF, Org, LaTeX, Opus, WebM, 7z.
- Meu usuário no diaspora*: [hidden email]



Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Jorge P. de Morais Neto
In reply to this post by Eric Abrahamsen-2
Em [2020-01-02 qui 13:59:08-0800], Eric Abrahamsen escreveu:

> Hi, thanks for the report.  I haven't been able to immediately
> reproduce this, but I'll take a look over the next couple of days and
> get back to you.

Hi.  If you could not reproduce the error, then perhaps you did not
press "E" on the same line as me.  The error occurs when you press "E"
on the John line *within the ACME record*.  Yesterday I managed to mark
the role as defunct by pressing "E" on the *organization's reference
that sits to the right of the person's name*.  It seems that I was
pressing "E" on the wrong place.  So it appears all you have to do is:

1. Clarify the manual.
2. When the user presses "E" on the role field of a person in the
   respective organization's record, then EBDB should either just work
   or at least produce a clear and short error message.

Regards
--
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- I am Brazilian.  I hope my English is correct and I welcome feedback.
- Please adopt free formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z.
- Free/libre software for Replicant, LineageOS and Android: https://f-droid.org
- [[https://www.gnu.org/philosophy/free-sw.html][What is free software?]]



Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Eric Abrahamsen-2
Jorge P. de Morais Neto <[hidden email]> writes:

> Em [2020-01-02 qui 13:59:08-0800], Eric Abrahamsen escreveu:
>
>> Hi, thanks for the report.  I haven't been able to immediately
>> reproduce this, but I'll take a look over the next couple of days and
>> get back to you.
>
> Hi.  If you could not reproduce the error, then perhaps you did not
> press "E" on the same line as me.  The error occurs when you press "E"
> on the John line *within the ACME record*.  Yesterday I managed to mark
> the role as defunct by pressing "E" on the *organization's reference
> that sits to the right of the person's name*.  It seems that I was
> pressing "E" on the wrong place.  So it appears all you have to do is:
>
> 1. Clarify the manual.
> 2. When the user presses "E" on the role field of a person in the
>    respective organization's record, then EBDB should either just work
>    or at least produce a clear and short error message.

Oh, I see -- you're right I was doing this on the wrong line. Actually
if you edit a role field on an organization using a "little edit" (with
"e"), EBDB does some fancy footwork in the background to actually edit
the role field on the person record. That didn't happen with the
customize edit ("E") -- would you eval the following and confirm that it
works correctly?

(defun ebdb-edit-field-customize (record field)
  "Use the customize interface to edit FIELD of RECORD."
  (interactive
   (list (ebdb-current-record)
         (ebdb-current-field)))
  (let ((new-field (clone field)))
    (eieio-customize-object new-field)
    ;; If the user is editing a role field from an organization
    ;; record, do a switcharoo.
    (when (and (ebdb-record-organization-p record)
               (ebdb-field-role-p field))
      (setq record (ebdb-gethash (slot-value field 'record-uuid) 'uuid)))
    ;; The following two variables are buffer-local, and we're hoping
    ;; this will make them local to the customization buffer: ie, an
    ;; arbitrary number of *Customize* buffers can be opened, and the
    ;; accept/apply options will all behave correctly.
    (setq ebdb-customization-field field
          ebdb-customization-record record)))



Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Jorge P. de Morais Neto
Em [2020-01-12 dom 12:54:52-0800], Eric Abrahamsen escreveu:

> Oh, I see -- you're right I was doing this on the wrong line.
> Actually if you edit a role field on an organization using a "little
> edit" (with "e"), EBDB does some fancy footwork in the background to
> actually edit the role field on the person record.  That didn't happen
> with the customize edit ("E") -- would you eval the following and
> confirm that it works correctly?
> [...]

Yes, according to my quick testing, your code fixes the bug.  I tested
by editing the role label of one person and marking as defunct the roles
of two other persons.  In every case, I edited by pressing "E" on the
person's role field of a person in the respective organization's record.

Thank you!

Regards
--
- <https://jorgemorais.gitlab.io/justice-for-rms/>
- I am Brazilian.  I hope my English is correct and I welcome feedback.
- Please adopt free formats like PDF, ODF, Org, LaTeX, Opus, WebM and 7z.
- Free/libre software for Replicant, LineageOS and Android: https://f-droid.org
- [[https://www.gnu.org/philosophy/free-sw.html][What is free software?]]



Reply | Threaded
Open this post in threaded view
|

bug#38878: 26.3; EBDB fails to mark role as defunct

Eric Abrahamsen-2

On 01/13/20 14:07 PM, Jorge P. de Morais Neto wrote:

> Em [2020-01-12 dom 12:54:52-0800], Eric Abrahamsen escreveu:
>
>> Oh, I see -- you're right I was doing this on the wrong line.
>> Actually if you edit a role field on an organization using a "little
>> edit" (with "e"), EBDB does some fancy footwork in the background to
>> actually edit the role field on the person record.  That didn't happen
>> with the customize edit ("E") -- would you eval the following and
>> confirm that it works correctly?
>> [...]
>
> Yes, according to my quick testing, your code fixes the bug.  I tested
> by editing the role label of one person and marking as defunct the roles
> of two other persons.  In every case, I edited by pressing "E" on the
> person's role field of a person in the respective organization's record.
>
> Thank you!

Great! I've pushed that change, and will close this report once I've
made a new release.

Thanks,
Eric