japaric/steed

Rebase steed on top of rust/libstd

Opened this issue · 2 comments

Currently steed source tree is based on some mix of rust's libstd sources manually handpicked at different periods of time. Copying files one-by-one and maintaining tree up-to-date consumes time. There were several breakages recently that required copying changes from Rust master branch to steed.

In instead of maintaining source parity this way I propose to rebase steed changes on top of libstd. I tried to make a proof-of-concept, extracted libstd out of rust master branch, moved some changes from steed and I was able to compile static "hello world" example successfully. It works great.

Here is a git command that extracts libstd from Rust sources:
git filter-branch --prune-empty --subdirectory-filter src/libstd && git filter-branch -f --tree-filter 'mkdir -p src; mv * src; mv src/Cargo.toml .; true'

Developing steed on top of upstream libstd has following advantages:

  • bringing upstream changes simplified and becomes automatic
  • it is much easier to see delta between upstream libstd and steed. Keeping this delta small will help in the future when merging libc-less support back to upstream
tbu- commented

becomes automatic

Will still have merge conflicts.

I fear that we lose the benefits of VCS when we do this.

If both upstream and steed modifies the same code then yes there will be a merge conflict that needs to be resolved. Using git will help to identify such conflicting changes easily. But most of the upstream changes are non-conflicting and git will merge them automatically.

I fear that we lose the benefits of VCS when we do this.

I am not following this sentence. I actually propose to use git to do merges for us instead of bringing upstream changes by copy-pasting in an editor (like it is done now).