Workflow question (changing codegen)

Sebastian Graf sgraf1337 at gmail.com
Sun Jun 30 08:50:24 UTC 2019


Re: git worktree: That's the workflow I'm currently using. It has its
problems with submodules, see
https://stackoverflow.com/questions/31871888/what-goes-wrong-when-using-git-worktree-with-git-submodules.
But you can make it work with this git alias from the first answer:
https://gitlab.com/clacke/gists/blob/0c4a0b6e10f7fbf15127339750a6ff490d9aa3c8/.config/git/config#L12.
Just go into your main checkout and do `git wtas ../T9876`. AFAIR it
interacts weirdly with MinGW's git or git for Windows, but nothing you
can't work around.

Anyway, I was hoping that one day hadrian will be smart enough to have a
build directory for each branch or something, so that I would only need one
checkout where I can switch between branches as needed. In the meantime,
`git wtas` does what I want.

Am Sa., 29. Juni 2019 um 21:53 Uhr schrieb Richard Eisenberg <
rae at richarde.dev>:

> Just to pass on something that looks cool (I haven't tried it myself yet):
> git worktree. It seems git can hang several different checkouts of a repo
> in different directories. This seems far superior to my current habit of
> having many clones of ghc, sometimes going through machinations to get
> commits from one place to another. The documentation for git worktree seems
> quite approachable, so you might find it useful. I plan on using it in the
> future.
>
> Richard
>
> > On Jun 29, 2019, at 8:24 AM, Ben Gamari <ben at smart-cactus.org> wrote:
> >
> > On June 28, 2019 5:09:45 AM EDT, "Ömer Sinan Ağacan" <
> omeragacan at gmail.com> wrote:
> >> Hi all,
> >>
> >> I'm currently going through this torturous process and I'm hoping that
> >> someone
> >> here will be able to help.
> >>
> >> I'm making changes in the codegen. My changes are currently buggy, and
> >> I need a
> >> working stage 1 compiler to be able to debug. Basically I need to build
> >> libraries using the branch my changes are based on, then build stage 1
> >> with my
> >> branch, so that I'll be able to build and run programs using stage 1
> >> that uses
> >> my codegen changes. The changes are compatible with the old codegen
> >> (i.e. no
> >> changes in calling conventions or anything like that) so this should
> >> work.
> >>
> >> Normally I do this
> >>
> >>   $ git checkout master
> >>   $ git distclean && ./boot && ./configure && make
> >>   $ git checkout my_branch
> >>   $ cd compiler; make 1
> >>
> >> This gives me stage 1 compiler that uses my buggy codegen changes, plus
> >> libraries built with the old and correct codegen.
> >>
> >> However the problem is I'm also adding a new file in my_branch, and the
> >> build
> >> system just doesn't register that fact, even after adding the line I
> >> added to
> >> compiler/ghc.cabal.in to compiler/ghc.cabal. So far the only way to fix
> >> this
> >> that I could find was to run ./configure again, then run make for a few
> >> seconds
> >> at the top level, then do `make 1` in compiler/. Unfortunately even
> >> that doesn't
> >> work when the master branch and my_branch have different dates, because
> >> `make`
> >> in master branch produces a different version than the `make` in
> >> my_branch, so
> >> the interface files become incompatible.
> >>
> >> Anyone have any ideas on how to proceed here?
> >>
> >> Thanks,
> >>
> >> Ömer
> >> _______________________________________________
> >> ghc-devs mailing list
> >> ghc-devs at haskell.org
> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
> >
> > In general I think it is wise to avoid switching branches in a tree you
> are actively developing in. The cost of switching both in the compilation
> time that it implies and the uncertain state that it leaves the tree in is
> in my opinion too high. It you want to compare your change against master I
> would recommend using two working directories.
> >
> >
> > Cheers,
> >
> > - Ben
> >
> > _______________________________________________
> > ghc-devs mailing list
> > ghc-devs at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20190630/2104c2f0/attachment.html>


More information about the ghc-devs mailing list