Re: Gitlab workflow

2019-07-11 Thread Bardur Arantsson
On 11/07/2019 17.47, Ben Gamari wrote:
[--snip--]

I'm just going to snip all of that because that was an almost perfect
summary of why rebase-always is best.

I'm *not* talking about rebasing willy-nilly, but I agree that rebasing
private branches and rebasing-with-agreement is superior in every way to
the just-merge-things approach... and you formulated it perfectly. Thank
you.

Regards,

___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Gitlab workflow

2019-07-11 Thread Sven Panne
Am Do., 11. Juli 2019 um 14:32 Uhr schrieb Bryan Richter :

> [...] When references to commits (in emails etc.) get invalidated,
> it adds confusion and extra work. Seeing this happen is what led me to
> wonder why people even prefer this strategy.
>

I think there is a misunderstanding here: You never ever force-push rebased
commits to a public repo, this would indeed change commit hashes and annoy
all your collaborators like hell. In a rebase-only workflow you rebase
locally, pushing your then fast-forward-only merge to the public repo. You
can even disable force-pushed on the receiving side, an that's what is
normally done (well, not on GitHub...).


> [...] One final thing I like about merges is conflict resolution. Resolving
> conflicts via rebase is something I get wrong 40% of the time. It's
> hard. Even resolving a conflict during a merge is hard, but it's
> easier.


Hmmm, I don't see a difference with conflict resolution in both cases, the
work involved is equivalent.


> Plus, the eventual merge commit keeps a record of the
> resolution! (I only learned this recently, since `git log` doesn't
> show it by default.) Keeping a public record of how a conflict was
> resolved seems like a huge benefit. [...]
>

To me it is quite the opposite: In a collaborative environment, I don't
care even the tiniest bit about how somebody resolved the conflicts of his
branch: This is a technical artifact about when the branch was made and
when it is merged.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Issue weight migration

2019-07-11 Thread Ben Gamari
Brandon Allbery  writes:

> Isn't there already a "needs triage" label separate from this? Which would
> make that plus explicit priority a suggested priority to guide whoever's
> doing triage. (I expect triage goes beyond simply priority setting, e.g.
> making sure it has the right component(s) and maybe assigning specific
> people who know that component.)
>
Yes, this is precisely my concern. If our experience with Trac is any
guide it seems likely that reporters will indeed set issues priorities
and it's not clear that this is something that we want to discourage.

For this reason I haven't yet removed the "needs triage" label and won't
do so until we get a sense for how frequently reporters set the priority
themselves.

Cheers,

- Ben



signature.asc
Description: PGP signature
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Cabal reports mismatched interface file ways dyn

2019-07-11 Thread Stefan Schulze Frielinghaus
Yes, it looks so:

$ ls -1 libraries/ghc-prim/dist-install/build/GHC/CString.*
libraries/ghc-prim/dist-install/build/GHC/CString.dyn_hi
libraries/ghc-prim/dist-install/build/GHC/CString.dyn_o
libraries/ghc-prim/dist-install/build/GHC/CString.hi
libraries/ghc-prim/dist-install/build/GHC/CString.o

$ inplace/bin/ghc-stage2 --show-iface 
libraries/ghc-prim/dist-install/build/GHC/CString.hi | grep --after-context=1 
Way
Way: Wanted [d, y, n],
 got[]

On Thu, Jul 11, 2019 at 11:03:16AM +0100, Matthew Pickering wrote:
> Does the quick flavour build the dynamic libraries?
> 
> On Thu, Jul 11, 2019 at 10:07 AM Stefan Schulze Frielinghaus
>  wrote:
> >
> > Hi all,
> >
> > I'm trying to compile GHC 8.6.5 using the LLVM backend and dynamic linking. 
> > My
> > build.mk file looks as follows:
> >
> > include mk/flavours/quick-llvm.mk
> > DYNAMIC_BY_DEFAULT = YES
> >
> > I can build a stage3 compiler. However while executing `make install` the
> > following error shows up:
> >
> > "inplace/bin/ghc-cabal" register libraries/ghc-prim dist-install 
> > "/devel/ghc86/lib/ghc-8.6.5/bin/ghc" 
> > "/devel/ghc86/lib/ghc-8.6.5/bin/ghc-pkg" "/devel/ghc86/lib/ghc-8.6.5" '' 
> > '/devel/ghc86' '/devel/ghc86/lib/ghc-8.6.5' 
> > '/devel/ghc86/share/doc/ghc-8.6.5/html/libraries' NO
> > ghc-cabal: '/devel/ghc86/lib/ghc-8.6.5/bin/ghc' exited with an error:
> > Bad interface file: dist-install/build/GHC/CString.hi
> > mismatched interface file ways (wanted "dyn", got "")
> >
> > I found similar reports [1,2] from 2013 but no solution. Any ideas how to 
> > fix
> > this?
> >
> > Cheers,
> > Stefan
> >
> > [1] https://mail.haskell.org/pipermail/ghc-devs/2013-December/003488.html
> > [2] https://mail.haskell.org/pipermail/ghc-devs/2013-December/003507.html
> > ___
> > ghc-devs mailing list
> > ghc-devs@haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Gitlab workflow

2019-07-11 Thread Bryan Richter

On 7/7/19 7:53 PM, Sven Panne wrote:> Am So., 7. Juli 2019 um 17:06
Uhr schrieb Bryan Richter :

> > How does the scaling argument reconcile with the massive scope
> > of the Linux kernel, the project for which git was created? I
> > can find some middle ground with the more specific points
> > you made in your email, but I have yet to understand how the
> > scaling argument holds water when Linux trucks along with "4000
> > developers, 450 different companies, and 200 new developers each
> > release"[1]. What makes Linux special in this regard? Is there
> > some second inflection point?
>
>
> Well, somehow I saw that example coming... :-D I think the main
> reason why things work for Linux is IMHO the amount of highly
> specialized high-quality maintainers, i.e. the people who pick the
> patches into the (parts of) the releases they maintain, and who do
> it as their main (sole?) job. In addition they have a brutal review
> system plus an army of people continuously testing *and* they have
> Linus.

:D

I would add to your argument that they appear to use git primarily
to *keep a record of merges*. Incoming patches have no history
whatsoever; they're just individual patches. I guess that could be
considered a simpler-to-use version of the fast-forward-only strategy!
Perhaps Linux isn't such a great counterexample after all

Once they have committed patches to some particular history, though,
they don't rebase, since that would rewrite important audit history.

> I would very much like to turn the question around: I never fully
> understood why some people like merge-based workflows so much. OK,
> you can see that e.g. commits A, B, and C together implement feature
> X, but to be honest: After the feature X landed, probably nobody
> really cares about the feature's history anymore, you normally care
> much more about:  Which commit broke feature Y? Which commit slowed
> down things? Which commit introduced a space leak/race condition?

What I *don't* like is rewriting history, for all the reasons I don't
like mutable state. As you say, what you're generally interested in is
commits. When references to commits (in emails etc.) get invalidated,
it adds confusion and extra work. Seeing this happen is what led me to
wonder why people even prefer this strategy.

On top of that, many of the problems people have with merges actually
seem to be problems with bad commits, as you yourself hinted. Other
concerns seem to be based in unfamiliarity with git's features, or an
irrational desire for "pure history". (Merges *are* history!)

One final thing I like about merges is conflict resolution. Resolving
conflicts via rebase is something I get wrong 40% of the time. It's
hard. Even resolving a conflict during a merge is hard, but it's
easier. Plus, the eventual merge commit keeps a record of the
resolution! (I only learned this recently, since `git log` doesn't
show it by default.) Keeping a public record of how a conflict was
resolved seems like a huge benefit.

In the end, my main takeaway is that good commits are just as
important as good code, regardless of strategy.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Cabal reports mismatched interface file ways dyn

2019-07-11 Thread Matthew Pickering
Does the quick flavour build the dynamic libraries?

On Thu, Jul 11, 2019 at 10:07 AM Stefan Schulze Frielinghaus
 wrote:
>
> Hi all,
>
> I'm trying to compile GHC 8.6.5 using the LLVM backend and dynamic linking. My
> build.mk file looks as follows:
>
> include mk/flavours/quick-llvm.mk
> DYNAMIC_BY_DEFAULT = YES
>
> I can build a stage3 compiler. However while executing `make install` the
> following error shows up:
>
> "inplace/bin/ghc-cabal" register libraries/ghc-prim dist-install 
> "/devel/ghc86/lib/ghc-8.6.5/bin/ghc" "/devel/ghc86/lib/ghc-8.6.5/bin/ghc-pkg" 
> "/devel/ghc86/lib/ghc-8.6.5" '' '/devel/ghc86' '/devel/ghc86/lib/ghc-8.6.5' 
> '/devel/ghc86/share/doc/ghc-8.6.5/html/libraries' NO
> ghc-cabal: '/devel/ghc86/lib/ghc-8.6.5/bin/ghc' exited with an error:
> Bad interface file: dist-install/build/GHC/CString.hi
> mismatched interface file ways (wanted "dyn", got "")
>
> I found similar reports [1,2] from 2013 but no solution. Any ideas how to fix
> this?
>
> Cheers,
> Stefan
>
> [1] https://mail.haskell.org/pipermail/ghc-devs/2013-December/003488.html
> [2] https://mail.haskell.org/pipermail/ghc-devs/2013-December/003507.html
> ___
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Cleanly setting C compiler options when building RTS

2019-07-11 Thread Alp Mestanogullari
That's indeed one Hadrian solution. An alternative one (requires 
'master' from yesterday) is:


$ hadrian/build.sh --flavour=... "stage1.rts.cc.c.opts += 
-fsanitize=address -fsanitize=undefined"


Note that I'm not quite sure who between GHC and the C compiler gets 
invoked to build the RTS. If it's GHC, then you'll need to replace 
'builder Cc' in Matthew's solution with 'builder (Ghc CompileCWithGhc)', 
or with the key-value style approach:


$ hadrian/build.sh --flavour=... "stage1.rts.ghc.c.opts += 
-fsanitize=address -fsanitize=undefined"


You can find more about how both of those settings mechanisms work here: 
https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/user-settings.md


... once GitLab works again. :-)

Until then: 
https://github.com/ghc/ghc/blob/master/hadrian/doc/user-settings.md


On 11/07/2019 11:49, Matthew Pickering wrote:

Hi Siddharth,

The correct way is to create a custom flavour with something like the
following in.

grts = quickFlavour { name = "grts", args = args quickFlavour <>
(builder Cc ? package rts ? arg "-g3" <> arg "-O0") }

Cheers,

Matt

On Thu, Jul 11, 2019 at 10:20 AM Siddharth Bhat  wrote:

Hello all,

I was interested in building the GHC RTS with GCC's AddressSanitizer and Ubsan 
enabled.

What I want to do very specifically is to pass "-fsanitize=address 
-fsanitize=undefined" when compiling the RTS.

What's the "correct" way to set this up in the build system? Is there a 
configure flag? Do I need to change the Shake script?
Thanks,
~Siddharth
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


--
Alp Mestanogullari, Haskell Consultant
Well-Typed LLP, https://www.well-typed.com/

Registered in England and Wales, OC335890
118 Wymering Mansions, Wymering Road, London, W9 2NF, England

___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Cleanly setting C compiler options when building RTS

2019-07-11 Thread Matthew Pickering
Hi Siddharth,

The correct way is to create a custom flavour with something like the
following in.

grts = quickFlavour { name = "grts", args = args quickFlavour <>
(builder Cc ? package rts ? arg "-g3" <> arg "-O0") }

Cheers,

Matt

On Thu, Jul 11, 2019 at 10:20 AM Siddharth Bhat  wrote:
>
> Hello all,
>
> I was interested in building the GHC RTS with GCC's AddressSanitizer and 
> Ubsan enabled.
>
> What I want to do very specifically is to pass "-fsanitize=address 
> -fsanitize=undefined" when compiling the RTS.
>
> What's the "correct" way to set this up in the build system? Is there a 
> configure flag? Do I need to change the Shake script?
> Thanks,
> ~Siddharth
> ___
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: Cleanly setting C compiler options when building RTS

2019-07-11 Thread Alp Mestanogullari
Since you mention the Shake script, should we assume you're using 
Hadrian, or the Make build system?


On 11/07/2019 11:19, Siddharth Bhat wrote:

Hello all,

I was interested in building the GHC RTS with GCC's AddressSanitizer 
and Ubsan enabled.


What I want to do very specifically is to pass "-fsanitize=address 
-fsanitize=undefined" when compiling the RTS.


What's the "correct" way to set this up in the build system? Is there 
a configure flag? Do I need to change the Shake script?

Thanks,
~Siddharth

___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


--
Alp Mestanogullari, Haskell Consultant
Well-Typed LLP, https://www.well-typed.com/

Registered in England and Wales, OC335890
118 Wymering Mansions, Wymering Road, London, W9 2NF, England

___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Cleanly setting C compiler options when building RTS

2019-07-11 Thread Siddharth Bhat
Hello all,

I was interested in building the GHC RTS with GCC's AddressSanitizer and
Ubsan enabled.

What I want to do very specifically is to pass "-fsanitize=address
-fsanitize=undefined" when compiling the RTS.

What's the "correct" way to set this up in the build system? Is there a
configure flag? Do I need to change the Shake script?
Thanks,
~Siddharth
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Cabal reports mismatched interface file ways dyn

2019-07-11 Thread Stefan Schulze Frielinghaus
Hi all,

I'm trying to compile GHC 8.6.5 using the LLVM backend and dynamic linking. My
build.mk file looks as follows:

include mk/flavours/quick-llvm.mk
DYNAMIC_BY_DEFAULT = YES

I can build a stage3 compiler. However while executing `make install` the
following error shows up:

"inplace/bin/ghc-cabal" register libraries/ghc-prim dist-install 
"/devel/ghc86/lib/ghc-8.6.5/bin/ghc" "/devel/ghc86/lib/ghc-8.6.5/bin/ghc-pkg" 
"/devel/ghc86/lib/ghc-8.6.5" '' '/devel/ghc86' '/devel/ghc86/lib/ghc-8.6.5' 
'/devel/ghc86/share/doc/ghc-8.6.5/html/libraries' NO
ghc-cabal: '/devel/ghc86/lib/ghc-8.6.5/bin/ghc' exited with an error:
Bad interface file: dist-install/build/GHC/CString.hi
mismatched interface file ways (wanted "dyn", got "")

I found similar reports [1,2] from 2013 but no solution. Any ideas how to fix
this?

Cheers,
Stefan

[1] https://mail.haskell.org/pipermail/ghc-devs/2013-December/003488.html
[2] https://mail.haskell.org/pipermail/ghc-devs/2013-December/003507.html
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs