melpa / package-build

Tools for assembling a package archive
https://github.com/melpa/melpa
25 stars 34 forks source link

Select coding system? #70

Closed jcs090218 closed 1 year ago

jcs090218 commented 1 year ago

Describe issue

I've recently encounter this and wonder if this is the bug from this package.

Loading package information... done ✓
  - Installing package-build (20230206.1931)... done ✓

Building artifact elsa (0.1.0)... Copying files (->) and directories (=>)
  from d:/a/Elsa/Elsa/
  to c:/Users/RUNNER~1/AppData/Local/Temp/elsalXxwCq/elsa-0.1.0
    elsa-analyser.el -> elsa-analyser.el
    elsa-check.el -> elsa-check.el
    elsa-dependencies.el -> elsa-dependencies.el
    elsa-english.el -> elsa-english.el
    elsa-error.el -> elsa-error.el
    elsa-extension-builtin.el -> elsa-extension-builtin.el
    elsa-extension-cl.el -> elsa-extension-cl.el
    elsa-extension-dash.el -> elsa-extension-dash.el
    elsa-extension-eieio.el -> elsa-extension-eieio.el
    elsa-extension-elsa.el -> elsa-extension-elsa.el
    elsa-extension-flycheck.el -> elsa-extension-flycheck.el
    elsa-extension-seq.el -> elsa-extension-seq.el
    elsa-extension-subr.el -> elsa-extension-subr.el
    elsa-font-lock.el -> elsa-font-lock.el
    elsa-functions.el -> elsa-functions.el
    elsa-reader.el -> elsa-reader.el
    elsa-rules-list.el -> elsa-rules-list.el
    elsa-ruleset.el -> elsa-ruleset.el
    elsa-scope.el -> elsa-scope.el
    elsa-state.el -> elsa-state.el
    elsa-type-algebra.el -> elsa-type-algebra.el
    elsa-type-helpers.el -> elsa-type-helpers.el
    elsa-typed-builtin.el -> elsa-typed-builtin.el
    elsa-typed-cl.el -> elsa-typed-cl.el
    elsa-typed-eieio.el -> elsa-typed-eieio.el
    elsa-typed-subr.el -> elsa-typed-subr.el
    elsa-typed-syntax.el -> elsa-typed-syntax.el
    elsa-typed-thingatpt.el -> elsa-typed-thingatpt.el
    elsa-types.el -> elsa-types.el
    elsa-variable.el -> elsa-variable.el
  ! bin/elsa -> elsa
  ! bin/elsa.bat -> elsa.bat
  ! d:/a/Elsa/Elsa/elsa.el -> elsa.el
Created elsa-0.1.0.tar containing:
  elsa-0.1.0/
  elsa-0.1.0/elsa
  elsa-0.1.0/elsa-analyser.el
  elsa-0.1.0/elsa-check.el
  elsa-0.1.0/elsa-dependencies.el
  elsa-0.1.0/elsa-english.el
  elsa-0.1.0/elsa-error.el
  elsa-0.1.0/elsa-extension-builtin.el
  elsa-0.1.0/elsa-extension-cl.el
  elsa-0.1.0/elsa-extension-dash.el
  elsa-0.1.0/elsa-extension-eieio.el
  elsa-0.1.0/elsa-extension-elsa.el
  elsa-0.1.0/elsa-extension-flycheck.el
  elsa-0.1.0/elsa-extension-seq.el
  elsa-0.1.0/elsa-extension-subr.el
  elsa-0.1.0/elsa-font-lock.el
  elsa-0.1.0/elsa-functions.el
  elsa-0.1.0/elsa-pkg.el
  elsa-0.1.0/elsa-reader.el
  elsa-0.1.0/elsa-rules-list.el
  elsa-0.1.0/elsa-ruleset.el
  elsa-0.1.0/elsa-scope.el
  elsa-0.1.0/elsa-state.el
  elsa-0.1.0/elsa-type-algebra.el
  elsa-0.1.0/elsa-type-helpers.el
  elsa-0.1.0/elsa-typed-builtin.el
  elsa-0.1.0/elsa-typed-cl.el
  elsa-0.1.0/elsa-typed-eieio.el
  elsa-0.1.0/elsa-typed-subr.el
  elsa-0.1.0/elsa-typed-syntax.el
  elsa-0.1.0/elsa-typed-thingatpt.el
  elsa-0.1.0/elsa-types.el
  elsa-0.1.0/elsa-variable.el
  elsa-0.1.0/elsa.bat
  elsa-0.1.0/elsa.el
Select coding system (default utf-8): 

It's cause by this line,

https://github.com/melpa/package-build/blob/10e8518f14e343e63251b4385206037ab6e1bf87/package-build.el#L937

Since it only happens in Windows 10 (works in Linux and macOS, should this package handle this type of error?

Steps to reproduce

  1. You need a Windows 10 machine
  2. Install Eask, https://github.com/emacs-eask/cli (Optional, it's easier for me to do it this way)
  3. git clone https://github.com/jcs-PR/Elsa/ --branch test/eask
  4. Navigate to project Elsa root directory, cd elsa
  5. Package it with command eask package

Environment

OS: Windows 10 (x64) Emacs version: 29.0.50

Propose solution or workaround

 (defun package-build--write-archive-entry (desc)
   (with-temp-file
       (expand-file-name (concat (package-desc-full-name desc) ".entry")
                         package-build-archive-dir)
+    (set-buffer-file-coding-system 'utf-8)
     (pp (cons (package-desc-name    desc)
               (vector (package-desc-version desc)
                       (package-desc-reqs    desc)
                       (package-desc-summary desc)
                       (package-desc-kind    desc)
                       (package-desc-extras  desc)))
         (current-buffer))))

Additional informaion

As you can see, it works on Linux and macOS but not Windows.