Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.0 release #37

Closed
38 of 56 tasks
raxod502 opened this issue Jun 8, 2017 · 3 comments
Closed
38 of 56 tasks

1.0 release #37

raxod502 opened this issue Jun 8, 2017 · 3 comments

Comments

@raxod502
Copy link
Member

raxod502 commented Jun 8, 2017

OBSOLETE: 1.0 release checklist

This is a tracking issue for issues that need to be closed for the 1.0 release of straight.el:

@raxod502 raxod502 added this to the 1.0 milestone Jun 8, 2017
@raxod502
Copy link
Member Author

raxod502 commented Jun 11, 2017

IMPLEMENTED: New recipe specification

  • :name - name of package, as a string
  • :local-repo - name of local repository, as a string; defaults to a
    value possibly provided by the VC backend, or the name of the
    package
  • :type - VC backend, as a symbol; support for git is built-in
    • :host - symbol specifying interpretation of :repo, can be
      nil (for url), github, gitlab, or bitbucket; defaults to nil
    • :repo - url or shorthand
    • :branch - branch to use for primary development; defaults to
      master
    • :upstream - optional, specifies upstream repository; plist
      with keys :host, :repo, :branch, as under :type

@raxod502
Copy link
Member Author

raxod502 commented Jun 11, 2017

OBSOLETE: Proposal for eliminating build step

Note: I have decided against this proposal. It introduces many new problems without offering any advantage over the current scheme.

Modified and added recipe keys:

  • :load-path - list of relative paths to be added to load path for
    package and to be used for autoload generation; defaults to root
    directory or lisp subdirectory if provided, or is generated based
    on :files specification
  • :autoloads-file - filename for autoloads file, defaults to package
    name
  • :files - list of files to be considered as part of the package;
    affects autoload generation and dependency resolution

The old workflow went something like the following:

  • At straight.el load-time, use find(1) to check for updates to any
    packages in the build cache. If there are none, then checks for
    packages in the build cache can later be skipped, as an
    optimization.
  • When a package is registered:
    • Check if its repository is available. If not, and the user
      confirms, clone it.
    • Add its build directory to the load path.
    • Check if the package has been modified since its last build; if
      so:
      • Recursively delete the build directory.
      • Symlink the files specified by :files into the build
        directory.
      • Compute the dependencies of the package based on the files
        in the build directory, and store these in the build cache.
      • Register all of the package's dependencies.
      • Generate the autoloads for the package based on the files in
        the build directory.
      • Byte-compile the package's files in the build directory.
    • Register all of the package's dependencies.
    • Activate the package's autoloads.

The new workflow will go something like the following:

  • When a package is registered:
    • Check if its repository is available. If not, and the user
      confirms, clone it.
    • Add the repository to the load path, according to :load-path.
    • Compute the dependencies, according to :files, and store these
      in a cache.
    • Register all of the package's dependencies.
    • Determine the autoloads file, according to :autoloads-file. If
      it does not exist, generate it based on :files and
      :load-path.
    • Activate the package's autoloads.
  • To update the dependencies for a package, run M-x straight-update-dependencies.
  • ...

@raxod502
Copy link
Member Author

Closing this in favor of https://github.com/raxod502/straight.el/milestone/1. It's too much work to keep up to date.

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

No branches or pull requests

1 participant