lf-lang / lingo

Package manager and build tool for the Lingua Franca coordination language
BSD 2-Clause "Simplified" License
4 stars 1 forks source link

[DRAFT] First Steps into Dependency Management Direction #46

Open tanneberger opened 7 months ago

tanneberger commented 7 months ago

Lingua-Franca Dependencies

graph TD;
    S1[[Lockfile Exists?]];
    S2[[Read Lockfile]];

    S3[[Iteratively Pull Dependencies]];
    S4[[Read Version Requirements]];
    S5[[Read Package Version]];
    S6[[Read Package Dependencies]];
    S7[[Select Packages based on Version Requirements]];
    S8[[Create Lockfile]];
    S9[[create lfc_include directory from Lockfile]];
    S10[[Call Backend -Start LFC]];
    S11[[Inherit and merge Target Properties]]

    S1-->S2;
    S1-->S3;
    S3-->S4;
    S4-->S5;
    S5-->S6;
    S6-->S3;
    S3-->S7;
    S7-->S8;
    S8-->S9;
    S2-->S9;
    S9-->S10;
    S10-->S11;

Explanation

File structure

./Lingo.toml
./src
./target
    ./libraries
        ./0ba957161fb429f610a42e881678a5bef797b138 (hash calculated from package sources)
            ./Lingo.toml
            ./src
        ./1618817019dab848783e80a2779eee1a4f57516
            ./Lingo.toml
            ./src
    ./lfc_include (we tell lfc to include files from this directory)
        ./lf-websockets
            ./Lingo.toml
            ./src
        ./requests
            ./Lingo.toml
            ./src

The version resolvement process

Requirements: [">=1.2", "<=1.5", "<=2.0", ">=1.3.2"] Sources: [("1.1.0", "github..."), ("1.6.90", "tarball...."),("1.4.6", "path...."), ("1.4.9", "github...")]

Open Discussion Topics

Unsolved Problems and Future Work