Skip to content

Solving versioning and dependencies #28

@berenddeboer

Description

@berenddeboer

Currently we have a good way of finding packages: iron:crypto:crypto.ecf will correctly locate the package.

But what would be really great to have is being able to install dependencies of a package. I propose we do that with:

iron install

Without a package install will look for a dependencies section in package.iron. This looks like:

dependencies
    base: v >= 18.07
    gobo: 4.1 <= v < 5.0
    eposix: master

it will then install these things. I.e. for base it verifies the ISE Eiffel compiler is at least 18.07. This may need work though, as you should be able to compile with either gec or ec. So perhaps we should not list the base library this way.

The version numbers should be github tags. If the version is simply a name, it's a github branch.

We could also use the php composer style versions, so then it would read:

dependencies
    base: "~18.07"
    gobo: "^4.1"
    eposix: "dev-master"

Installation then proceeds to create packages like:

~/.iron/gobo/4.1

It writes the installed version to package-lock.iron (package.iron should become a yml file too at some point IMO). This looks something like:

- packages:
  - gobo: 4.1

I.e. something that writes the package + installed version.

Once we have this file, we can change the resolver for iron:crypto:crypto.ecf to go through package-lock.iron. I.e. it looks up what version of gobo actually should be used.

Once this all works, we can work on a proper dependency solver, which picks the compatible versions of packages taking all dependencies into account.

Metadata

Metadata

Assignees

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