Giter Club home page Giter Club logo

melpa's Introduction

MELPA

Build Status

MELPA is a growing collection of package.el-compatible Emacs Lisp packages built automatically on our server from the upstream source code using simple recipes. (Think of it as a server-side version of el-get, or even Homebrew.)

Packages are updated at intervals throughout the day.

To browse available packages, check out the archive index page.

Adding packages is as simple as submitting a new recipe as a pull request; read on for details.

Table of Contents

Usage

To use the MELPA repository, you'll need an Emacs with package.el, i.e., Emacs 24.1 or greater. To test TLS support you can visit a HTTPS URL, for example with M-x eww RET https://wikipedia.org RET.

Enable installation of packages from MELPA by adding an entry to package-archives after (require 'package) and before the call to package-initialize in your init.el or .emacs file:

(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Comment/uncomment this line to enable MELPA Stable if desired.
;; See `package-archive-priorities` and `package-pinned-packages`.
;; Most users will not need or want to do this.
;; (add-to-list 'package-archives
;;              '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)

Then just use M-x package-list-packages to browse and install packages from MELPA and elsewhere.

Note that you'll need to run M-x package-refresh-contents or M-x package-list-packages to ensure that Emacs has fetched the MELPA package list before you can install packages with M-x package-install or similar.

MELPA Stable

Packages in MELPA are built directly from the latest package source code in the upstream repositories, but we also build and publish packages corresponding to the latest tagged code in those repositories, where version tags exist. These packages are published in a separate package archive called MELPA Stable. Most users should prefer MELPA over MELPA Stable.

Some notes:

  • If you leave the original MELPA server in your package-archives then by default you will get the development versions of packages and not the stable ones, because the development versions are higher.

  • If your Emacs has the variables package-pinned-packages (available in 24.4 and later) and/or package-archive-priorities, you can customize or modify those variables as needed.

  • You can use the package-filter package which we provide.

  • You will probably want to remove all packages and then reinstall them. Any packages you already have installed from MELPA will never get "updated" to the stable version because of the way version numbering is handled.

Note that the MELPA maintainers do not use MELPA Stable themselves, and do not particularly recommend its use.

Contributing

See the CONTRIBUTING.org document.

Recipe Format

Packages are specified by files in the recipes directory. You can contribute a new package by adding a new file under recipes using the following form ([...] denotes optional or conditional values),

(<package-name>
 :fetcher [git|github|gitlab|codeberg|sourcehut|hg]
 [:url "<repo url>"]
 [:repo "user-name/repo-name"]
 [:commit "commit"]
 [:branch "branch"]
 [:version-regexp "<regexp>"]
 [:files ("<file1>" ...)]
 [:old-names (<old-name> ...)])
  • package-name a lisp symbol that has the same name as the package being specified.

  • :fetcher specifies the type of repository the package is being maintained in.

    Melpa supports the Git and Mercurial version control systems and provides generic fetcher types for them: git and hg. When you use one of these fetchers, you must specify the :url property.

    Melpa also provides dedicated fetchers for certain Git forges (aka "Git repository hosting platforms"), which should always be preferred over the generic git fetcher. When using a dedicated fetcher, you must specify :repo, not :url. Currently these Git forge fetchers exist: github, gitlab, codeberg and sourcehut.

    There are no dedicated fetchers for Mercurial. When a forge supports both Git and Mercurial, then the respective fetcher can only be used for Git repositories. For Mercurial repositories always use the hg fetcher.

  • :url specifies the URL of the version control repository. It is required for the generic git and hg fetchers and is invalid for forge-specific fetchers.

  • :repo specifies the repository used by forge-specific fetchers and is of the form user-name/repo-name. It is required for forge-specific fetchers and is invalid for the generic fetchers.

    Note that user names in Sourcehut URLs are prefixed with ~, that has to be omitted in the value of this property.

  • :commit specifies the commit of the Git repository to checkout. The value will be passed to git reset in a repo where upstream is the original repository. Can therefore be either a SHA, if pointing at a specific commit, or a full ref prefixed with "origin/". Only used by the git-based fetchers.

  • :branch specifies the branch of the Git repository to use. This is like :commit, but it adds the "origin/" prefix automatically. This must be specified when using a branch other than the default branch.

  • :version-regexp is a regular expression for extracting a version-string from the repository tags. The default matches typical version tags such as 1.0, R16 or v4.3.5, so you should not override it unless necessary. For an unusual tag like "OTP-18.1.5", we might add :version-regexp "[^0-9]*\\(.*\\)" to strip the "OTP-" prefix. The captured portion of the regexp must be parseable by Emacs' version-to-list function.

  • :files optional property specifying the Emacs Lisp libraries and info files used to build the package. Please do not override this if the default value (below) is adequate, which it should usually be:

    '("*.el" "lisp/*.el"
      "dir" "*.info" "*.texi" "*.texinfo"
      "doc/dir" "doc/*.info" "doc/*.texi" "doc/*.texinfo"
      "docs/dir" "docs/*.info" "docs/*.texi" "docs/*.texinfo"
      (:exclude
       ".dir-locals.el" "lisp/.dir-locals.el"
       "test.el" "tests.el" "*-test.el" "*-tests.el"
       "lisp/test.el" "lisp/tests.el" "lisp/*-test.el" "lisp/*-tests.el"))

    Note that you should place Emacs Lisp libraries in the root of the repository or in the lisp/ directory. Test files should be placed in the test/ directory and they should not provide a feature. Likewise NAME-pkg.el isn't a library, so you might want to place it in the root directory, even when libraries reside in lisp/.

    Please do not track any third-party libraries and test utilities in your repository. If you absolutely must do it, then place these files in a directory dedicated to that purpose, alongside a file named .nosearch. The latter prevents various tools from adding the containing directory to the load-path or from otherwise getting confused.

    The elements of the :files list are glob-expanded to make a list of paths that will be copied into the root of the new package. This means a file like lisp/foo.el would become foo.el in the new package. To specify a destination subdirectory, use a list element of the form (TARGET-DIR SOURCE-PATH ...).

    To exclude certain paths, use (:exclude SOURCE-PATH ...). There should only be one element that begins with :exclude and it should be the last element, though that is not enforced at this time.

    If your package requires some additional files, but is otherwise fine with the defaults, use the special element :defaults as the first element of the :files list. This causes the default value shown above to be prepended to the specified file list. For example :files (:defaults "snippets") would cause the snippets subdir to be copied in addition to the defaults.

    Warning: Elements of :files are (no longer) processed in order because we feed these globs to git log or hg log to determine the last commit that touched a relevant file. These commands unfortunately process all exclude globs after all include globs. Therefore it is not possible to override the :exclude element that appears in :defaults in a later element of :files. This means that a package whose name ends with -test cannot use :defaults. Likewise if the name of a library (as opposed to a file implementing tests) ends with -test.el, then :defaults cannot be used.

    Warning: Once the appropriate commit has been determined file-expand-wildcards is used to determine the files matched by each glob. Unfortunately (unlike in a shell) a glob that begins with * may also match filenames that begin with ., so you might have to add exclude globs to prevent those from being included. :defaults takes care to exclude .dir-locals.el; if you don't use :defaults, then you might have to exclude that explicitly.

  • :old-names specifies former names of the package, if any. The value is a list of symbols.

Example: Single File Repository

smex is a repository that contains two files:

  • README.markdown
  • smex.el

Since there is only one .el file, this package only needs the :fetcher and :repo specified,

(smex :fetcher github :repo "nonsequitur/smex")

Example: Multiple Packages in one Repository

Assume we have a repository containing three libraries mypackage.el, helm-mypackage.el, and persp-mypackage.el. The latter two libraries are optional and users who don't want to use the packages helm and/or perspective should not be forced to install them just so they can install mypackage. These libraries should therefore be distributed as separate packages.

The three packages have to be declared in three separate files recipes/mypackage, recipes/helm-mypackage, and recipes/persp-mypackage:

(mypackage
 :fetcher github
 :repo "someuser/mypackage"
 :files ("mypackage.el"))
(helm-mypackage
 :fetcher github
 :repo "someuser/mypackage"
 :files ("helm-mypackage.el"))
(persp-mypackage
 :fetcher github
 :repo "someuser/mypackage"
 :files ("persp-mypackage.el"))

Example: Multiple Files in Multiple Directories

There are special cases where creation of the package comes from many different sub-directories in the repository and the destination sub-directories need to be explicitly set.

Consider the flymake-perlcritic recipe,

(flymake-perlcritic
 :fetcher github
 :repo "illusori/emacs-flymake-perlcritic"
 :files ("*.el" ("bin" "bin/flymake_perlcritic")))

which will result in a package structure of,

flymake-perlcritic-YYYYMMDD
|-- bin
|   `-- flymake_perlcritic
|-- flymake-perlcritic-pkg.el
`-- flymake-perlcritic.el

Notice that specifying an entry in :files that is a list takes the first element to be the destination directory.

But a better solution, given that we probably want to copy the entire snippets directory to the root of the package, we could just specify that directory. Consider the pony-mode recipe,

(pony-mode
 :fetcher github
 :repo "davidmiller/pony-mode"
 :files ("src/*.el" "snippets"))

which generates the package,

pony-mode-YYYYMMDD
|-- pony-mode-pkg.el
|-- pony-mode.el
|-- pony-tpl.el
`-- snippets
    |-- html-mode
    |   |-- bl
    |   |-- ex
    |   |-- for
    |   |-- if
    |   |-- loa
    |   |-- sup
    |   |-- testc
    |   `-- {{
    `-- python-mode
        |-- auth-view
        |-- bn
        |-- model
        |-- modelform
        |-- render-to
        |-- testc
        `-- view

Build Scripts

Building MELPA is all based around using the Makefile included in the root repository directory. Described below are the actions that accepted by the Makefile.

  • all — build all packages under the recipes/ directory and compiles the index.html file for the MELPA website.

  • recipes/<NAME> — build individual recipe <NAME>. Built packages are put in the packages/ folder with version corresponding to the date of the latest commit that modified at least one of the files specified by the recipe; given according to the %Y%m%d format.

  • json — build all JSON files.

  • archive.json — construct the archive.json file that will contain a JSON object of all compiled packages.

  • recipes.json — construct the recipes.json file containing a JSON object of all packages available for building.

  • clean — clean everything.

  • html — build index.html.

  • clean-working — remove all repositories that have been checked out to the working/ directory.

  • clean-packages — remove all compiled packages from the packages directory.

  • clean-json — remove all JSON files.

Note that these scripts require an Emacs with package.el installed, such as Emacs 24. If you have an older version of Emacs, you can get a suitable package.el here.

API

All repository code is contained in the file package-build/package-build.el. That code is maintained in a separate repository: the version in the MELPA repository is imported using git subtree.

Functions

  • (package-build-all) — build packages for all recipes in the directory specified by package-build-recipes-dir.

  • (package-build-archive NAME) — interactive Emacs Lisp function to build a single archive. NAME is a symbol for the package to be built. Packages are staged in the directory specified by package-build-working-dir and built packages are placed in the directory specified by package-build-archive-dir. Packages are versioned based on the most recent commit date to package files based on commits to upstream package repository. For multi-file packages, the file <NAME>-pkg.el is automatically generated and contains description, version, and requires information determined by searching <NAME>-pkg.el, <NAME>.el, and <NAME>-pkg.el.in, if they exist in the repository.

Variables

  • package-build-working-dir — Staging area containing package repositories and package directories being built.

  • package-build-archive-dir — Location to store archive-contents and any built packages.

  • package-build-recipes-dir — Directory containing MELPA compatible recipes. See Recipe Format section for more details.

Configuration

Packages end up in the packages/ directory by default. This can be configured using the package-build-archive-dir variable.

Repositories are checked out to the working/ directory by default. This can be configured using the package-build-working-dir variable.

Mirrors

Official mirrors are available (with many thanks to mirrorservice.org) so that if melpa.org is down, packages can still be installed. The following are the HTTP/HTTPS URLs to use in package-archives for MELPA and MELPA Stable respectively:

Only the packages are mirrored, not the web site front-end itself.

We are NOT responsible for the contents of any UNOFFICIAL mirror of our packages.

Use rsync to get started with your own mirror:

rsync -avz --delete rsync://melpa.org/packages/ snapshots/
rsync -avz --delete rsync://melpa.org/packages-stable/ releases/

About

MELPA is Milkypostman's ELPA or Milkypostman's Experimental Lisp Package Archive if you're not into the whole brevity thing.

melpa's People

Contributors

abo-abo avatar aki2o avatar alphapapa avatar conao3 avatar damiencassou avatar fanael avatar fuco1 avatar ideasman42 avatar jcs090218 avatar lassik avatar lujun9972 avatar malabarba avatar marsam avatar milkypostman avatar myuhe avatar proofit404 avatar purcell avatar rejeep avatar riscy avatar rubikitch avatar stardiviner avatar swflint avatar swsnr avatar syohex avatar tarsius avatar tumashu avatar wilfred avatar xuchunyang avatar yasuyk avatar zonuexe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

melpa's Issues

Pathing problems with multi-file packages

With #86, there is a problem because for single file packages, specifying a path such as modules/starter-kit-bindings.el work fine because starter-kit-bindings.el is just one file and so that file gets copied into the root path. However, with the proposed erlang package, there are multiple files and since the entire tree gets copied, the paths within the tar file include the parent directories.

I'm not sure what the solution is here, but maybe we need a "basedir" property for recipes. Will wait to let people chime in on this.

Need documentation for contributors

To encourage contributions, we need a short guide for contributors; which file to edit, which options the recipes support, how to test-build a recipe etc.

getting ess (emacs speaks statistics) as a package

I am wanting to get ESS in the repo but the package isn't that "package.el friendly". Right now there is a file ess-site.el in the lisp directory of the package that needs to be required after installed. There aren't pre-defined autoloads for the package and so I am not really sure where to go. I think I need to file a bug with the ESS people and/or see how it's done in main repository. I'll have a look. I don't know how much "special" code we want to put into MELPA just to handle one package. But it's an important package. Maybe it's better for this package just to use a marmalade / elpa version.

buildpkg is broken on linux

buildpkg script uses shebang #!/usr/bin/env emacs --script where emacs --script is treated as single argument on linux systems (tested on Arch). According to http://en.wikipedia.org/wiki/Shebang_(Unix):

Another portability problem is the interpretation of the command arguments. Some systems, including Linux, do not split up the arguments[14]; for example, when running the script with the first line like,

!/usr/bin/env python -c

That is, python -c will be passed as one argument to /usr/bin/env, rather than two arguments. Cygwin also behaves this way.

As a result:

ineu@ineu melpa % LANG= ./buildpkg
/usr/bin/env: emacs --script: No such file or directory

Add ".el" suffix to recipe files?

This is somewhat bikeshedding, but it would be helpful for the recipes were all named foo.el so Emacs could recognize and apply the correct mode. Always nice not to have to make the extra effort of telling Emacs what mode to use :)

package.el required

Hi,

package-build.el requires package.el, which is not included by default in Emacs < 24.

Adding it to the MELPA repo or adding a note inte the README is probably a good idea!

Problem with slime-repl

This may be an upsteam issue, but when trying to install the slime package, the slime-repl.el fails to compile (and load). Recompiling the file however seems to work.

Import recipes from el-get

Many el-get recipes (https://github.com/dimitri/el-get/tree/master/recipes) could be automatically translated into Melpa recipes, and doing so would immediately make Melpa more extensive and useful.

Here's an example el-get recipe file:

(:name auto-complete
       :website "http://cx4a.org/software/auto-complete/"
       :description "The most intelligent auto-completion extension."
       :type github
       :pkgname "m2ym/auto-complete"
       :depends (popup fuzzy)
       :load-path "."
       :post-init (progn
                    (require 'auto-complete)
                    (add-to-list 'ac-dictionary-directories
                                 (expand-file-name "dict"))
                    (require 'auto-complete-config)
                    (ac-config-default)))

Case of package names is not consistent.

I noticed the following error,

"Removing archive: (inliner . [(20120520) nil insert Tag for inline image of R graphics [source: github] single])"

"Removing archive: (helm-r . [(20120523) ((helm (20120517)) (ess (20120509))) helm-sources and some utilities for GNU R. [source: github] single])"

And the problem is that package-build-alist is setup to use package names out of the "recipes" directory which allows for capitalization of the package name. However, in pb/merge-package-info the name is getting downcased. And thus when the package gets added to pacage-build-archive-alist the car of each package is no longer consistent. I have removed the downcase in 6c46737

Please close this if it is OK, otherwise let us discuss why that is in there.

slime repository down

We have git://git.boinkor.net/slime.git as the repo for slime but it's been unresponsive today. Not sure where else we could go for this and I can't figure out where that url came from. Quick google search didn't turn up anything except for a CVS repo from common-lisp.net

single file package build strategy has a qustion

I found when a package just has one file,then package build rename the file to repo-name file that descripted in recipe file.but in this case if repo-name is not same with the origin file name and the provide sentence argument ,then the package can't loaded by package.el.
so I found evil-surround package encountered this scene .repo-name is evil-surround,but file name is surround and has (provide 'surround) sentence in file. thus package.el download this package in melpa evil-surround.el to elpa fold.but can't be load because filename is no consistence with provide argument.

volatile-highlights not available

Hello,

When trying to install the volatile-highlights package, I get the following:

Contacting host: melpa.milkbox.net:80
package-handle-response: Error during download request: Not Found
Quit [2 times]
Mark set
Install package `volatile-highlights'? (y or n) y

nil

Contacting host: melpa.milkbox.net:80
package-handle-response: Error during download request: Not Found

Same is happening for yasnippet - but that's already been reported.

Cheers,

vc-darcs problems

looks like http://www.pps.jussieu.fr/ is down. so vc-darcs is not building today. will wait until tomorrow but otherwise we should decide what to do with this package.

Document policy for allowing inclusion of packages

It would be good to let recipe contributors know in advance what guidelines we apply when deciding whether to add their package.

Some possible constraints:

  • Upstream source must be stored in an authoritative SCM repo, or on the Emacswiki
  • Must be actively developed, or not otherwise included in a different ELPA archive (see #64)
  • ...

Packages built from git are rebuilt if any file in the repo is touched

Consider #78, in which several packages are built from @bbatsov's prelude-modules repo. The git fetcher uses the timestamp of the last commit as the package timestamp, regardless of whether that commit touched the elisp being packaged, so all the prelude-* packages will get rebuilt if any file in that repo is touched.

We should instead determine the timestamp by looking at the timestamp of the most recent commit to touch the files matched by :files.

(This is a particularly big issue with packages like erlang-mode, which I am in the process of adding. The elisp for that lies deep within a huge repo of unrelated code, and so that package would certainly be rebuilt at least daily with the existing package-build code.)

Need CVS support

The shimbun recipe added in #176 uses the emacsmirror repo for w3m. However, there's a CVS repo available upstream according to http://emacs-w3m.namazu.org/#download.

If we added CVS support (probably limiting URLs to those using the :pserver: protocol) we would therefore find it easier in some cases to obtain source from the authoritative source repo.

ebib recipe

Please add a recipe for ebib.

ebib is a powerful BibTeX database manager.

Building stable packages using VC tags

When a recipe specifies an upstream source with numeric tags (or perhaps branches), we can use that info to build stable packages.

package.el won't easily handle coexistence of stable and snapshot packages in the same package archive, since package-list-packages (currently) only shows the highest available version number of a package, and package.el provides no way to selectively install a version 1.4 instead of 20120406.

Renaming snapshot packages to add a -snapshot suffix is an option, but might wreak havoc with inter-package dependencies; foo-snapshot packages would not satisfy a dependency upon foo, for example, and so dependency names might need to be updated.

The alternative plan we've discussed is to provide two parallel archives, each with separate URLs and contents; one would contain snapshot packages, and the other would contain stable packages. In reality, though, many users would want to combine packages from both archives, and so machinery like that provided by melpa.el would be required in order to selectively install stable package versions when snapshots are also available.

can't delete obsolete packages

i have several packages in a list, marked as obsolete. i can't delete them, because Emacs throws the following:

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
file-name-directory(nil)
package-delete("yasnippet" "20120502")
#[nil "\301�@�A\"\207" [elt package-delete] 3]()
package-menu-execute()
call-interactively(package-menu-execute nil nil)

What could be the problem?

Characters missing from package descriptions on index page

The package list at http://melpa.milkbox.net/ has certain non-word characters missing from the package descriptions, such as the apostrophe in:

A version of Chris Kempson s various Tomorrow themes

Additionally,

Major mode for editing LESS CSS files (lesscss org)

is displayed as

Major mode for editing LESS CSS files lesscss org

I haven't investigated the cause for this yet, but wanted to log it as a (minor) issue.

Support a new packaging attribute 'Source' for unifying Marmalade

Packagers could start to add a Source packaging attribute to define the canonical source of the package, for example:

;;; elnode.el --- a simple emacs async HTTP server -*- lexical-binding: t -*-
;; Copyright (C) 2010  Nic Ferrier
;; Author: Nic Ferrier <[email protected]>
;; Maintainer: Nic Ferrier <[email protected]>
;; Created: 5th October 2010
;; Version: 0.9.2
;; Keywords: lisp, http, hypermedia
;; Package-Requires: ((fakir "0.0.3")(creole "0.8.1"))
;; Source: git://github.com/nicferrier/elnode.git

If package maintainers did this then MELPA would be able to scan Marmalade for new packages and pull their source into MELPA.

End of file during parsing

Hey,

MELPA seems nice. I hope I can find time to contribute it!

When I run:

./buildpkg yari

I get:

End of file during parsing

Any ideas!?

MELPA overwrites NAME-pkg.el?

I added ein-pkg.el to my EIN package and try to build package locally. However, it seems that generated ein-pkg.el overwrites the existing one. Is this expected behavior?

% emacs-snapshot -Q --script ./buildpkg ein
[...]
% tar -Oxf packages/ein-20120703.tar ein-20120703/ein-pkg.el
(define-package "ein" "20120703" "No description available. [source: github]" 'nil)
% cat working/ein/lisp/ein-pkg.el
(define-package "ein"
  "0.1beta1"
  "Emacs IPython Notebook"
  '((websocket "0.9")))

change name to <name>

In this code in readme:

(name
 :fetcher [git|github|bzr|hg|darcs|svn|wiki]
 [:url "<repo url>"]
 [:repo "github-user/repo-name"]
 [:files ("<file1>", ...)])

please change name to <name>, because at first look it is easy to forget that there is no function called "name" and instead there should be a name of a package. This is a minor issue, but for sum reason i stumbled several time upon this.

When reading "-pkg.el" files, handle multiple expressions

At least one package ends up with an empty description because the contents of its -pkg.el file is not simply a (define-package ...):

See https://github.com/emacs-helm/helm/blob/master/helm-pkg.el, which looks like the following:

;;; helm-pkg.el --- define helm for package.el
(eval-when-compile (require 'package))
(define-package "helm" "1.4.0"
  "Helm is an Emacs incremental and narrowing framework")

When we slurp in data files, we just take the first expression. If we could guarantee it would be safe, we could eval the pkg files and collect the package info defined there, but this isn't practical. Instead, pb/get-pkg-file-info should really search all the expressions in the pkg file, and extract arguments from the expression that is an invocation of define-package.

Report which packages failed to build [wishlist]

I just synced my fork to upstream and rebuild everything by running ./melpa, and I got:

*** Building html

146/151 packages built

Would it be a good idea for the 5 failing packages to get listed?

Can't open recipes/ in Emacs Dired

When i try to open directory recipes/ in Emacs either from Dired or through find-file, the error is thrown:

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
string-match("R" nil)
dired-sort-R-check(nil)
dired-sort-other(nil t)
dired-mode("~/labor/melpa/recipes/" "-al")
dired-internal-noselect("~/labor/melpa/recipes/" nil)
dired-noselect("~/labor/melpa/recipes/")
run-hook-with-args-until-success(dired-noselect "~/labor/melpa/recipes/")
find-file-noselect("/home/sindikat/labor/melpa/recipes/" nil nil)
ido-file-internal(raise-frame)
ido-find-file()
call-interactively(ido-find-file nil nil)

I tried it with both Ido-mode enabled and disabled. May be it is not melpa issue at all. What could it be?

evil package install error

I found evil recipe in recipes directory,but can't fint it in archive and package-list can't find it too.maybe lost it when gather pack?

git reset mechanism is a little messy

I've kinda hot-patched the git reset stuff because some repositories don't specify a HEAD branch and thus have an ambiguous one (see gnuplot and popwin).

In e20c315 I've set it to default to master but I don't like this code (seems sloppy to me) and there has to be a better way?

Support some sort of post-processing

I'm working with Pymacs author to make it compatible with ELPA and wanted to create a Melpa recipe for it. The problem is it uses some sort of preprocessing to update version in .el file, check for some compatibility problems and other minor stuff.

Do you plan on adding some sort of post-processing mechanisms? It can be similar to post-inst of el-get. In case of Pymacs it is essentially enough to run "make" in fetched directory of the package to create a cleared up .el file.

[jabber 20120615] cannot open load file: jabber-autoloads

Im using emacs-snapshot in Ubuntu 12.04.

Byte compilation and connecting produce cannot open load file: jabber-autoloads error.

Maybe because there is no jabber-autoloads in elpa/jabber folder? There is jabber-mode-autoloads there though

Publish package archive to github pages

In the long term, having github serve the built packages would likely result in a more stable and maintenance-free experience for both @milkypostman and Melpa's users.

To achieve this, the build script could commit built packages to the gh-pages branch, and then push them up to github.

It would be worth trying this out (perhaps in a test repo) to determine whether there are any url timeout issues, since these are often seen when installing packages from upstream archives (see recommended workarounds for melpa itself).

Package version collisions and inconsistencies

What are the reasons to not use the internally marked version of packages? Perhaps this should be a recipe option.

Currently MELPA uses the commit date as the version number, with a resolution of days (i.e. 20120815). If the package is updated within the same day it is repackaged with the same version number. Now there are two different versions of the package with the same version number. package won't know to update between these.

A bigger concern to me: there's also the inconsistency with the same package hosted in other archives. For example, Marmalade lists smex as version 1.1.2 while MELPA lists it as version 20120812. If I want to list a dependency in my package I have to either decide which package archive I'm going to support or maintain multiple versions.

I understand one reason why the current method is desirable: package maintainers don't (and can't, and shouldn't) bump the version number with every commit, so there would still be version collisions. Some may never increment their version number.

Recipe option

Each method makes sense in different scenarios. The versioning method could be selected in the recipe (defaulting to commit),

(<package-name>
 ...
 [:versioning <commit|internal>])

Better commit date resolution

The commit version could have better resolution. Currently MELPA updates hourly, so YYYYMMDD.hh would make more sense as a version number.

Add bazaar support

bazaar is somewhat popular (albeit far less than git) for hosting Emacs related projects (probably because of Ubuntu's Launchpad and the fact that it's used by Emacs itself). It would be really nice if bazaar support were added to MELPA.

Add specialized github fetcher

Since so many packages are developed on github it would be nice if it were treated a little bit specially in pkglist. In a Ruby Gemfile one can write either:

"some_gem", git: "https://github.com/user/repo"

or

"some_gem", github: "user/repo"

Maybe we can have a github fetcher as well :-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.