I'm playing around with developing and publishing an Emacs package, very simple stuff, just trying things out before I commit to a bigger project. The problem that I'm having is that after I've made a MELPA package (as per this tutorial) and try the package-install-file command I'm greeted with the "Package lacks a file header" error message, even though as far as I can see my package contains all of the required header information (as you can see here). My source file looks like this:

;;; header-tracker.el --- Easy switching between header and source files.

;; Copyright (C) 2019 Nathan Campos

;; Author: Nathan Campos <nathan@innoveworkshop.com>
;; Homepage: http://github.com/nathanpc/header-tracker.el
;; Version: 1.0.0
;; Keywords: convenience, usability
;; Package-Requires: ((emacs "24.1"))

;; This file is NOT part of GNU Emacs.

;;; License:

;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; Quickly and easily keep track and switch between header and source files
;; using this handy package.

;; This package exports a interactive function `header-tracker-toggle-header`
;; which can be binded to a key to seamlessly switch between source and header
;; files. This can be accomplished by adding the following lines to your
;; configuration file:

;; (add-hook 'c-mode-common-hook
;;           (lambda ()
;;             (local-set-key (kbd "C-c h") 'header-tracker-toggle-header)))

;; For more information about this package please consult the README file.

;;; Code:

;; Some code here...

(provide 'header-tracker)
;;; header-tracker.el ends here

Also, when I run (package-buffer-info) in the source buffer this is what I get in return, so apparently the header is valid:

(package-desc header-tracker (1 0 0) "Easy switching between header and source files." ((emacs (24 1))) single nil nil ((:authors ("Nathan Campos" . "nathan@innoveworkshop.com")) (:maintainer "Nathan Campos" . "nathan@innoveworkshop.com") (:url . "http://github.com/nathanpc/header-tracker.el")) nil)

Running checkdoc yields:

Buffer comments and tags:  Ok
Documentation style:       Ok
Message/Query text style:  Ok
Unwanted Spaces:           Ok

Another interesting thing that is happening is that if I run package-install-from-buffer in my package (not in the MELPA fork) it installs without any issues.

How can I debug this error since apparently it doesn't give any indication of what made it happen in the first place.

  • Try M-x toggle-debug-on-error, install again, and see if the backtrace gives more clues – npostavs Aug 14 '19 at 11:54
  • 1
    Try to kill the ;;; License: line together with the following newline. – Tobias Aug 14 '19 at 13:27
  • 1
    package-install-file runs fine with the code in your question using GNU Emacs 26.2 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2019-04-12. – Tobias Aug 14 '19 at 13:41
  • You could try running checkdoc on the offending file. – DoMiNeLa10 Aug 14 '19 at 14:21
  • @Tobias That's interesting because I'm running the exact same version. Now I'm starting to think I'm missing something. – Nathan Campos Aug 14 '19 at 20:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.