-
Notifications
You must be signed in to change notification settings - Fork 525
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
make restore fast by copying and comparing the lockfile. #2675
Conversation
I'm really wondering that this in itself doesn't make it faster at all (3 instead of 5 secs). From my first profiling attempt it looks like Argu is taking the most time :/ |
Also the magic mode bootstrapper is probably eating quite some time there |
src/Paket/Program.fs
Outdated
try | ||
let args = Environment.GetCommandLineArgs() | ||
if args.Length = 1 && args.[0] = "restore" || args.Length = 2 && args.[0] = "--from-bootstrapper" && args.[1] = "restore" then |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
match args with
| [| "restore" |]
| [| "--from-bootstrapper" ; "restore" |]
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes looks better but might be slower :P
The main problem is generating the sha512 hash in msbuild anyway ;) I don't think what I want is even possible...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok fixed :)
Oh my god this seems to work |
|
IMHO this is good enough for now. It will hopefully help large netcore solutions and |
WIP again, because netcore integration now needs to generate all files for all relevant frameworks beforehand |
@alfonsogarciacaro I'm trying to change the restore process here a bit. In the future paket will write We can still write the old file for compat. The question is what should we write into it? What is the target-framework fable uses? netstandard16? |
…t files and changed references files.
I guess the build will be red because this is a bootstrapping problem :/ |
referencesFile.Groups | ||
|> Seq.collect (fun kv -> kv.Value.NugetPackages) | ||
|> Seq.map (fun i -> i.Name) | ||
|> Set.ofSeq |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This might be a slight change in behavior. I just look into the references file and assume all things there are direct deps (which might not be true but I planned to add a warning when transitives are listed in the references file - should be issue open somewhere)
static member Init(directory) = Dependencies.Init(directory,false) | ||
|
||
/// Initialize paket.dependencies file in the given directory | ||
static member Init(directory,fromBootstrapper) = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While technically a breaking change in the public API - I don't think anyone used these weird overloads.
@matthid Fable 1.1.x uses |
@alfonsogarciacaro Thanks will update. So I will also assume that if no netstandard16 is in the project file we no longer need that file. |
TLDR:
|
Awesome work, @matthid! Could you please check if this is going in the right direction? fable-compiler/Fable@112fcd3#diff-e47dbd37b262f2f0394b5704369d4b31R109 |
@alfonsogarciacaro Yes that looks exactly like it would do. Currently I'm thinking about renaming it to end with |
Ok green - finally :) |
@Krzysztof-Cieslak Is Ionide calling paket restore directly or only |
Results in FAKE: Before:
https://ci.appveyor.com/project/matthid/fake-6w516/build/1.0.106 After:
https://ci.appveyor.com/project/matthid/fake-6w516/build/1.0.148 |
Awesome! How is the suffix finally? |
@alfonsogarciacaro Yes I think it makes sense, will try adding it later today. And I think this can be released. But before that someone (@forki) needs to answer how the target files are updated. Because older target files should be compatible with newer Once we know that we can make a "real" release with this. |
Paket install extracts the target files.
Am 28.08.2017 11:35 schrieb "Matthias Dittrich" <[email protected]>:
… @alfonsogarciacaro <https://github.com/alfonsogarciacaro> Yes I think it
makes sense, will try adding it later today. And I think this can be
released. But before that someone ***@***.*** <https://github.com/forki>)
needs to answer how the target files are updated. Because older target
files should be compatible with newer paket.exe but definitely not the
other way around (So we need to know if this can happen)
Once we know that we can make a "real" release with this.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#2675 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AADgNP0lPPtk-RC6fkNs0hC86Pd-kWrZks5sconjgaJpZM4PDmfw>
.
|
Perfect, thanks that should work. Will add another PR with the renaming later. |
I think checking & validating this hash in our msbuild targets file should make building large paket based solutions a lot faster...