Skip to content

eask package fails under Emacs 32 snapshot because of current-time changes #431

Description

@laurynas-biveinis

(written with the LLM help but re-checked everything myself and edited too)

Emacs 32 now defaults to the (TICKS . HZ) representation, causing Eask to call car on the integer HZ value.

Steps to reproduce

Create Eask:

;; -*- mode: eask; lexical-binding: t -*-

(package "eask-current-time-repro"
         "0.1.0"
         "Reproduce Emacs 32 package failure")

(package-file "eask-current-time-repro.el")

Create eask-current-time-repro.el:

;;; eask-current-time-repro.el --- Reproduce Emacs 32 failure -*- lexical-binding: t; -*-

;; Version: 0.1.0

;;; Code:

(provide 'eask-current-time-repro)

;;; eask-current-time-repro.el ends here

Run with Emacs 32 snapshot and Eask 0.12.10:

eask package

Actual result

Error: wrong-type-argument (listp 1000000000)
  car(1000000000)
  (logior (ash (car now) 16) (car (cdr now)))
  eask-current-time()

Expected result

The package artifact is built successfully, as it is under Emacs 31.1 and earlier releases.

Analysis

Emacs 32 changed current-time-list to default to nil, so timestamps now use (TICKS . HZ) rather than (HIGH LOW USEC PSEC):

https://github.com/emacs-mirror/emacs/blob/57c5967828f0415604a393b244bd62be93262f30/etc/NEWS#L230-L232

The current implementation assumes the legacy list:

https://github.com/emacs-eask/eask/blob/a9dd17667c3df0b7eadef0cb5510452f0e1a41ba/eask-core.el#L723-L725

(defun eask-current-time ()
  "Return current time."
  (let ((now (current-time)))
    (logior (ash (car now) 16) (cadr now))))

With (TICKS . HZ), (cadr now) attempts to take car of HZ, matching the reported error.

Environment

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions