Re: Hadrian questions

2019-01-24 Thread Richard Eisenberg
In the "devel2" flavor, I also seem to have built Haddock. `make` didn't do 
this with devel2, and I'd prefer Hadrian didn't, too.

Maybe I'm not really on the devel2 flavor?

> On Jan 24, 2019, at 11:02 PM, Richard Eisenberg  wrote:
> 
> As suggested, I'm trying out Hadrian. I have a few questions.
> 
> - After building GHC the first time, I often go into the /ghc directory and 
> then do `make 2` to build just the stage-2 compiler. Is that now the same as 
> `build --freeze1`? It would seem not (I haven't tested), because running 
> `make 2` builds only the compiler, not the libraries. Can this workflow be 
> replicated in Hadrian?
> 
> - I have `userDefaultFlavour = "devel2"` in my hadrian/UserSettings.hs file. 
> But I see build artifacts during compilation of stage-2 that have dyn_o and 
> p_o extensions. I don't want these. Have I done something wrong? Or are these 
> artifacts now necessary?
> 
> - I have quite a few ghc directories. What are the dependencies of Hadrian so 
> that I can install these into my global package database and avoiding 
> rebuilding them for each ghc tree? (Please don't tell me that the global 
> package database is bad for my health. I know that, and I know why, but it's 
> still terribly convenient, and I'm happy to pay the occasional price for that 
> convenience.)
> 
> I'm sure I'll have more questions.
> 
> Thanks!
> Richard
> ___
> 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


Hadrian questions

2019-01-24 Thread Richard Eisenberg
As suggested, I'm trying out Hadrian. I have a few questions.

 - After building GHC the first time, I often go into the /ghc directory and 
then do `make 2` to build just the stage-2 compiler. Is that now the same as 
`build --freeze1`? It would seem not (I haven't tested), because running `make 
2` builds only the compiler, not the libraries. Can this workflow be replicated 
in Hadrian?

 - I have `userDefaultFlavour = "devel2"` in my hadrian/UserSettings.hs file. 
But I see build artifacts during compilation of stage-2 that have dyn_o and p_o 
extensions. I don't want these. Have I done something wrong? Or are these 
artifacts now necessary?

 - I have quite a few ghc directories. What are the dependencies of Hadrian so 
that I can install these into my global package database and avoiding 
rebuilding them for each ghc tree? (Please don't tell me that the global 
package database is bad for my health. I know that, and I know why, but it's 
still terribly convenient, and I'm happy to pay the occasional price for that 
convenience.)

I'm sure I'll have more questions.

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


[ANNOUNCE] You should try Hadrian

2019-01-24 Thread Andrey Mokhov
Dear GHC developers,

Summary: You should try to use Hadrian as the GHC build system, because it will 
(hopefully!) become the default around GHC 8.8.

What is Hadrian and how can I try it?
=

Hadrian is a new build system for GHC written in Haskell. It lives in the 
directory "hadrian" in the GHC tree, and we have been actively developing it in 
the past year to reach feature and correctness parity with the existing 
Make-based build system. While we haven't quite reached this goal (more on this 
below), Hadrian is already working well and we run Hadrian jobs alongside the 
Make ones in our CI pipelines since the recent move to GitLab.

At this point, we would like to encourage everyone to try using Hadrian for 
their usual GHC development tasks. Hadrian's documentation resides in GHC's 
source tree, and below are the documents you will be most interested in:


*https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/README.md: The 
root of Hadrian's documentation. It explains the basics and points to more 
specific documents where appropriate.



*https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/make.md: A 
cheatsheet-style document for GHC developers used to the Make build system 
(that is, most/all of you), showing equivalent Make/Hadrian commands for many 
tasks.


*
https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/user-settings.md: A 
description of the "user settings" mechanism in Hadrian, which is where you can 
customise the build flavour, choose the packages to build, add 
file/package/platform-specific command line flags, etc.


*
https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/testsuite.md: A 
description of the "test" rule and all the options it supports.

The documentation can surely be improved, so please do not hesitate to send us 
feedback and suggestions here, or even better on Trac: make sure you choose the 
component "Build System (Hadrian)" when creating a new ticket.

You need Hadrian


Hadrian is new, requires time to learn, and still has rough edges, but it has 
been developed to make your lives better. Here are a few advantages of Hadrian 
over the Make-based build system:

1) Hadrian is more reliable.

Hadrian can capture build dependencies more accurately, which means you rarely 
(if ever) need to do a clean rebuild.

2) Hadrian is faster.

Hadrian is faster for two reasons: (i) more accurate build dependencies, (ii) 
tracking of file contents instead of file modification times. Both allow you to 
avoid a lot of unnecessary rebuilds. Building Hadrian itself may take a while 
but needs to be done only once.

3) Hadrian is easier to understand and modify.

You no longer need to deal with Make's global namespace of mutable string 
variables. Hadrian is written in the language you love; it has modules, types 
and pure functions.


If you come across a situation where Hadrian is worse than the Make build 
system in any of the above aspects, this is a bug and you should report it.

Helping Hadrian
===

The best way to help is to try Hadrian, and let us know how it goes, what 
doesn't work, what's missing for you, what you think should be easier, and so 
on. Below is a list of known issues that we are in the process of fixing or 
that we will be tackling soon:


*Stage 2 GHC should be dynamically linked most of the time, but it 
never is, currently. See https://ghc.haskell.org/trac/ghc/ticket/15837

*There are about a dozen of failing tests in the GHC testsuite, some 
related to #15837.

*Binary distributions haven't been thoroughly tested on many platforms 
(only some Linux flavours). There will definitely be some issues here. For 
example, the binary distribution rule currently fails on Windows: 
https://ghc.haskell.org/trac/ghc/ticket/16073.

*There is no "validate" rule yet, only "test", but we have all the 
pieces to make this happen and it has a very high priority.

*There are issues with building cross compilers: see 
https://ghc.haskell.org/trac/ghc/ticket/16051.

We are likely missing some features compared to the Make build system, but none 
of them should take a lot of time to implement at this point. If you spot one, 
let us know! We'll do our best to implement it (or help you do it) as soon as 
we can. It is useful to look at the existing Hadrian tickets before submitting 
new ones, to make sure that the issue or idea that you would like to talk about 
hasn't been brought up yet: 
https://ghc.haskell.org/trac/ghc/query?status=!closed=Build+System+(Hadrian).

Of course, we welcome your code contributions too! Several GHC developers have 
a good understanding of Hadrian codebase and will be able to help you. To find 
their names, have a look at the list of recent Hadrian commits: 
https://gitlab.haskell.org/ghc/ghc/commits/master/hadrian. As you can see, 
Hadrian is actively developed by many people, and we hope 

Re: "resource exhausted" in CI

2019-01-24 Thread Brandon Allbery
Um, also this seems to have jumped threads; the subject of this message was
a different issue, about disk space. Is that part of the confusion?

On Thu, Jan 24, 2019 at 5:53 PM Brandon Allbery  wrote:

> Rebase is more or less stashing and removing all local commits, upgrading
> the underlying branch to current, then re-applying the local commits. This
> changes the commit hashes for any re-applied commit that lands on a change
> to the underlying branch, meaning that old commit hashes can be invalid
> afterward.
>
> (This is also why force-pushing causes problems, since this is only
> visible in a local tree *unless* force-pushed upstream, meaning now those
> changed/deleted commits affect anyone else who has checked out that
> upstream branch. The normal process of upstreaming commits can't expose
> local changes like that, since it all goes upstream as a group and becomes
> a permanent part of the branch's history. Unless someone force-pushes the
> branch afterward, forcibly overwriting that history with a different one
> and leaving anyoneelse who'd checked out the branch with dangling commits
> that no longer exist.)
>
> Here, CI is making a copy of someone's branch and testing each commit in
> turn to ensure consistency between multiple branches that touch the same
> code, whose commits may end up interleaved. If the branch is rebased or
> force-pushed during that testing, intermediate commits may become invalid
> as above and CI would need to start over with a new list of commits.
>
> On Thu, Jan 24, 2019 at 5:43 PM Simon Peyton Jones via ghc-devs <
> ghc-devs@haskell.org> wrote:
>
>> | Ah, yes -- I did push a rebase. OK: good to know that this is expected
>> | behavior after rebasing (makes sense).
>>
>> Does not make sense (yet) to me.
>>
>> Can someone explain (and perhaps document) the workflow here?
>>
>> Simon
>>
>> | -Original Message-
>> | From: ghc-devs  On Behalf Of Richard
>> | Eisenberg
>> | Sent: 24 January 2019 19:22
>> | To: Ben Gamari 
>> | Cc: GHC developers 
>> | Subject: Re: "resource exhausted" in CI
>> |
>> | Ah, yes -- I did push a rebase. OK: good to know that this is expected
>> | behavior after rebasing (makes sense).
>> |
>> | Thanks,
>> | Richard
>> |
>> | > On Jan 24, 2019, at 2:01 PM, Ben Gamari  wrote:
>> | >
>> | > Richard Eisenberg  writes:
>> | >
>> | >> Something is awry:
>> |
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.ha
>> | skell.org%2Frae%2Fghc%2F-
>> | %2Fjobs%2F16908data=02%7C01%7Csimonpj%40microsoft.com
>> %7C375c6daea23444
>> |
>> 7c3d2808d682314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63683954552
>> |
>> 1260172sdata=8OYI5PAk7B6P%2B%2BoJbqgeqPbTR%2BMH6F8Wm34ThdBhRL0%3D
>> | reserved=0 never got off the ground.
>> | >>
>> | > It is possible that you pushed a rebase? This error generally means
>> that
>> | > the commit is no longer accessible which may happen when you push a
>> | > rebase.
>> | >
>> | > I believe I cited the job for the current version of the patch [1] in
>> my
>> | > previous email. Note that the commit SHA is different between [1] and
>> | > the job you cited.
>> | >
>> | > Cheers,
>> | >
>> | > - Ben
>> | >
>> | >
>> | > [1]
>> |
>> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.ha
>> | skell.org%2Frae%2Fghc%2F-
>> | %2Fjobs%2F16913data=02%7C01%7Csimonpj%40microsoft.com
>> %7C375c6daea23444
>> |
>> 7c3d2808d682314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63683954552
>> |
>> 1260172sdata=wM0hlN60tQmsDtsXS%2BIqLzeAqhgK6RmUoEDzYG2b%2FhI%3Dre
>> | served=0
>> |
>> | ___
>> | ghc-devs mailing list
>> | ghc-devs@haskell.org
>> |
>> https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haske
>> | ll.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
>> | devsdata=02%7C01%7Csimonpj%40microsoft.com
>> %7C375c6daea234447c3d2808d68
>> |
>> 2314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636839545521260172
>> |
>> ;sdata=R2PHyXMyWDG4mmusi1KLmklGR0b%2FXAE%2BNp%2BwS4ZOmp8%3Dreserved=0
>> ___
>> ghc-devs mailing list
>> ghc-devs@haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>
>
>
> --
> brandon s allbery kf8nh
> allber...@gmail.com
>


-- 
brandon s allbery kf8nh
allber...@gmail.com
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: "resource exhausted" in CI

2019-01-24 Thread Brandon Allbery
Rebase is more or less stashing and removing all local commits, upgrading
the underlying branch to current, then re-applying the local commits. This
changes the commit hashes for any re-applied commit that lands on a change
to the underlying branch, meaning that old commit hashes can be invalid
afterward.

(This is also why force-pushing causes problems, since this is only visible
in a local tree *unless* force-pushed upstream, meaning now those
changed/deleted commits affect anyone else who has checked out that
upstream branch. The normal process of upstreaming commits can't expose
local changes like that, since it all goes upstream as a group and becomes
a permanent part of the branch's history. Unless someone force-pushes the
branch afterward, forcibly overwriting that history with a different one
and leaving anyoneelse who'd checked out the branch with dangling commits
that no longer exist.)

Here, CI is making a copy of someone's branch and testing each commit in
turn to ensure consistency between multiple branches that touch the same
code, whose commits may end up interleaved. If the branch is rebased or
force-pushed during that testing, intermediate commits may become invalid
as above and CI would need to start over with a new list of commits.

On Thu, Jan 24, 2019 at 5:43 PM Simon Peyton Jones via ghc-devs <
ghc-devs@haskell.org> wrote:

> | Ah, yes -- I did push a rebase. OK: good to know that this is expected
> | behavior after rebasing (makes sense).
>
> Does not make sense (yet) to me.
>
> Can someone explain (and perhaps document) the workflow here?
>
> Simon
>
> | -Original Message-
> | From: ghc-devs  On Behalf Of Richard
> | Eisenberg
> | Sent: 24 January 2019 19:22
> | To: Ben Gamari 
> | Cc: GHC developers 
> | Subject: Re: "resource exhausted" in CI
> |
> | Ah, yes -- I did push a rebase. OK: good to know that this is expected
> | behavior after rebasing (makes sense).
> |
> | Thanks,
> | Richard
> |
> | > On Jan 24, 2019, at 2:01 PM, Ben Gamari  wrote:
> | >
> | > Richard Eisenberg  writes:
> | >
> | >> Something is awry:
> |
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.ha
> | skell.org%2Frae%2Fghc%2F-
> | %2Fjobs%2F16908data=02%7C01%7Csimonpj%40microsoft.com
> %7C375c6daea23444
> |
> 7c3d2808d682314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63683954552
> |
> 1260172sdata=8OYI5PAk7B6P%2B%2BoJbqgeqPbTR%2BMH6F8Wm34ThdBhRL0%3D
> | reserved=0 never got off the ground.
> | >>
> | > It is possible that you pushed a rebase? This error generally means
> that
> | > the commit is no longer accessible which may happen when you push a
> | > rebase.
> | >
> | > I believe I cited the job for the current version of the patch [1] in
> my
> | > previous email. Note that the commit SHA is different between [1] and
> | > the job you cited.
> | >
> | > Cheers,
> | >
> | > - Ben
> | >
> | >
> | > [1]
> |
> https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.ha
> | skell.org%2Frae%2Fghc%2F-
> | %2Fjobs%2F16913data=02%7C01%7Csimonpj%40microsoft.com
> %7C375c6daea23444
> |
> 7c3d2808d682314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63683954552
> |
> 1260172sdata=wM0hlN60tQmsDtsXS%2BIqLzeAqhgK6RmUoEDzYG2b%2FhI%3Dre
> | served=0
> |
> | ___
> | ghc-devs mailing list
> | ghc-devs@haskell.org
> |
> https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haske
> | ll.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
> | devsdata=02%7C01%7Csimonpj%40microsoft.com
> %7C375c6daea234447c3d2808d68
> |
> 2314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636839545521260172
> |
> ;sdata=R2PHyXMyWDG4mmusi1KLmklGR0b%2FXAE%2BNp%2BwS4ZOmp8%3Dreserved=0
> ___
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>


-- 
brandon s allbery kf8nh
allber...@gmail.com
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


RE: "resource exhausted" in CI

2019-01-24 Thread Simon Peyton Jones via ghc-devs
| Ah, yes -- I did push a rebase. OK: good to know that this is expected
| behavior after rebasing (makes sense).

Does not make sense (yet) to me.

Can someone explain (and perhaps document) the workflow here?

Simon

| -Original Message-
| From: ghc-devs  On Behalf Of Richard
| Eisenberg
| Sent: 24 January 2019 19:22
| To: Ben Gamari 
| Cc: GHC developers 
| Subject: Re: "resource exhausted" in CI
| 
| Ah, yes -- I did push a rebase. OK: good to know that this is expected
| behavior after rebasing (makes sense).
| 
| Thanks,
| Richard
| 
| > On Jan 24, 2019, at 2:01 PM, Ben Gamari  wrote:
| >
| > Richard Eisenberg  writes:
| >
| >> Something is awry:
| https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.ha
| skell.org%2Frae%2Fghc%2F-
| %2Fjobs%2F16908data=02%7C01%7Csimonpj%40microsoft.com%7C375c6daea23444
| 7c3d2808d682314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63683954552
| 1260172sdata=8OYI5PAk7B6P%2B%2BoJbqgeqPbTR%2BMH6F8Wm34ThdBhRL0%3D
| reserved=0 never got off the ground.
| >>
| > It is possible that you pushed a rebase? This error generally means that
| > the commit is no longer accessible which may happen when you push a
| > rebase.
| >
| > I believe I cited the job for the current version of the patch [1] in my
| > previous email. Note that the commit SHA is different between [1] and
| > the job you cited.
| >
| > Cheers,
| >
| > - Ben
| >
| >
| > [1]
| https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.ha
| skell.org%2Frae%2Fghc%2F-
| %2Fjobs%2F16913data=02%7C01%7Csimonpj%40microsoft.com%7C375c6daea23444
| 7c3d2808d682314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63683954552
| 1260172sdata=wM0hlN60tQmsDtsXS%2BIqLzeAqhgK6RmUoEDzYG2b%2FhI%3Dre
| served=0
| 
| ___
| ghc-devs mailing list
| ghc-devs@haskell.org
| https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haske
| ll.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc-
| devsdata=02%7C01%7Csimonpj%40microsoft.com%7C375c6daea234447c3d2808d68
| 2314861%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636839545521260172
| ;sdata=R2PHyXMyWDG4mmusi1KLmklGR0b%2FXAE%2BNp%2BwS4ZOmp8%3Dreserved=0
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


Re: "resource exhausted" in CI

2019-01-24 Thread Richard Eisenberg
Ah, yes -- I did push a rebase. OK: good to know that this is expected behavior 
after rebasing (makes sense).

Thanks,
Richard

> On Jan 24, 2019, at 2:01 PM, Ben Gamari  wrote:
> 
> Richard Eisenberg  writes:
> 
>> Something is awry: https://gitlab.haskell.org/rae/ghc/-/jobs/16908 never got 
>> off the ground.
>> 
> It is possible that you pushed a rebase? This error generally means that
> the commit is no longer accessible which may happen when you push a
> rebase.
> 
> I believe I cited the job for the current version of the patch [1] in my
> previous email. Note that the commit SHA is different between [1] and
> the job you cited.
> 
> Cheers,
> 
> - Ben
> 
> 
> [1] https://gitlab.haskell.org/rae/ghc/-/jobs/16913

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


Re: access failed CI artifacts

2019-01-24 Thread Ben Gamari
Richard Eisenberg  writes:

> A pipeline of mine failed: https://gitlab.haskell.org/rae/ghc/-/jobs/16807
>
> The failures are just some output changes. I could delicately use the
> log to extract the changes and commit them, but it would be better to
> have direct access to, say, the *.run.stderr files and then commit
> those. Is this possible? Note that I do not have a build of this tree
> locally, as it's the result of a rebase that affected the output. Of
> course, I could build locally, but it would be nice to skip that step.
>
Unfortunately it's not possible to gain access to the resulting stderr
files; the working directory is blown up at the end of the build.

However, one thing I've been wanting to do for quite some time is to
teach the testsuite driver to report the actual test output in the JUnit
file it produces. With this you could in principle grab in the JUnit file
(which is one of the artifacts emitted by the job) and reliably scrape
the output from it.

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: "resource exhausted" in CI

2019-01-24 Thread Ben Gamari
Richard Eisenberg  writes:

> Something is awry: https://gitlab.haskell.org/rae/ghc/-/jobs/16908 never got 
> off the ground.
>
It is possible that you pushed a rebase? This error generally means that
the commit is no longer accessible which may happen when you push a
rebase.

I believe I cited the job for the current version of the patch [1] in my
previous email. Note that the commit SHA is different between [1] and
the job you cited.

Cheers,

- Ben


[1] https://gitlab.haskell.org/rae/ghc/-/jobs/16913


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


access failed CI artifacts

2019-01-24 Thread Richard Eisenberg
A pipeline of mine failed: https://gitlab.haskell.org/rae/ghc/-/jobs/16807

The failures are just some output changes. I could delicately use the log to 
extract the changes and commit them, but it would be better to have direct 
access to, say, the *.run.stderr files and then commit those. Is this possible? 
Note that I do not have a build of this tree locally, as it's the result of a 
rebase that affected the output. Of course, I could build locally, but it would 
be nice to skip that step.

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


"resource exhausted" in CI

2019-01-24 Thread Richard Eisenberg
Hi Ben,

The pipeline for a recent patch 
(https://gitlab.haskell.org/rae/ghc/-/jobs/16793) says:

  HC [stage 1] compiler/stage2/build/TcForeign.o
  HC [stage 1] compiler/stage2/build/TcRules.o
/tmp/ghc6477_0/ghc_3.s: hClose: resource exhausted (No space left on device)
compiler/ghc.mk:445: recipe for target 'compiler/stage2/build/TcTyClsDecls.o' 
failed
make[1]: *** [compiler/stage2/build/TcTyClsDecls.o] Error 1
make[1]: *** Waiting for unfinished jobs
Is there a way to avoid this? Or should I just restart the CI? And what does 
Marge think of it all? (As in, if I ask her to take another spin, will she do 
so on the same commit?)

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


Re: Why are nested brackets disallowed?

2019-01-24 Thread Richard Eisenberg
I think Geoff was primarily concerned with typed Template Haskell, not the 
untyped variety.

I, too, have wondered if there was a technical reason behind this restriction, 
or if merely it was assumed that nested brackets were not worthwhile.

One question: how would staging work between nesting levels of brackets?

Richard

> On Jan 24, 2019, at 12:42 PM, Ben Gamari  wrote:
> 
> Matthew Pickering  writes:
> 
>> There is a check in `RnSplice` which errors on the following program
>> with nested brackets.
>> 
> It might be good to explicitly include Geoff Mainland in this thread.
> I'm not sure he'll see it otherwise.
> 
> Cheers,
> 
> - Ben
> 
> ___
> 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: Why are nested brackets disallowed?

2019-01-24 Thread Ben Gamari
Matthew Pickering  writes:

> There is a check in `RnSplice` which errors on the following program
> with nested brackets.
>
It might be good to explicitly include Geoff Mainland in this thread.
I'm not sure he'll see it otherwise.

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: Groups and projects

2019-01-24 Thread Ben Gamari
Simon Peyton Jones via ghc-devs  writes:

>> Alright, I believe I have found the issue: you are a member of 
>> the GHC group and GitLab's default notification behavior is that 
>> you will receive notifications for all events of repositories in 
>> groups to which you belong.
>
> OK thanks, that's helpful.
>
> When you say "repository" could you also have said "project". That is,
> are "projects" and "repositories" in 1-1 correspondence?
>
Yes, exactly. A project has a git repository, a wiki, an issue tracker
(although this is currently disabled in the case of the ghc project),
and can accept pull requests. I have been guilty of using the words
"repository" and "project" interchangeably, which likely doesn't make
things any clearer.

> So, to understand the semantics, you can belong to
>
> * A project.
> * A group
>
> What's the difference? The group seems to be "Glasgow Haskell
> Compiler"; the project seems to be "Glasgow Haskell Compiler / GHC".
> Does that imply that
>
>  * every project is part of a group; but 
>  * a group may have many projects?
>
Almost. Projects have owners. An owner may be either a group or a user.
For instance,

 * https://gitlab.haskell.org/ghc/ghc is a project (named `ghc`)
   belonging to the `ghc` group.

 * https://gitlab.haskell.org/bgamari/ghc is a project belonging to the
   `bgamari` user.

Groups may nest. https://gitlab.haskell.org/ghc/packages is a subgroup
(named `packages`) of the `ghc` group.
https://gitlab.haskell.org/ghc/packages/haskeline is a project
(`haskeline`) owned by that group.

Users can be "members" of both groups and projects. There are a few
flavours of membership ("reporter", "developer", "maintainer", and
"owner") which all imply different sets of permissions (documented here
[1]). If a user is a member of a group then they are granted permissions
to all projects of that group (and its subgroups).

As you discovered, membership also implies a few things about the
notifications you will receive about a project or group of projects.


[1] https://docs.gitlab.com/ee/user/permissions.html

> Or maybe a project can be part of more than one group?
>
> The "Custom settings" on a project seem to be identical to the "custom
> settings" for a group. If Gitlab is deciding whether to send me a
> notification N, is it clear whether it's a "project notification" or a
> "group notification"? If so, then it can consult the appropriate
> settings; but if not, it's not clear.
>

> Sorry for all these questions. It's astonishingly common for large
> software systems to describe the surface knobs without describing the
> underlying model that makes sense of all those knobs!
>
Yes, this is quite true. I do hope I could help clear up the fog. Do ask
if things are still hazy.

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


Why are nested brackets disallowed?

2019-01-24 Thread Matthew Pickering
There is a check in `RnSplice` which errors on the following program
with nested brackets.

```
prog = [| [| True |] |]

T.hs:4:11: error:
• Template Haskell brackets cannot be nested (without intervening splices)
• In the Template Haskell quotation [| True |]
  In the Template Haskell quotation [| [| True |] |]
  |
4 | prog = [| [| True |] |]
  |   ^^

```

As far as I can see the check was added in 2013 in this commit,
https://github.com/ghc/ghc/commit/d0d47ba76f8f0501cf3c4966bc83966ab38cac27#diff-58794f81a415f148d011de563988c2b5R170

But there is no note, no tests and no comment about why it was added.

I removed the check and added a `BracketE` constructor to the
template-haskell AST and the
code compiles fine.

I can also construct a program which needs to be spliced twice and
this also works fine.

```
func Add = [| (+) |]
func Mul = [| (*) |]

f1 "+" = [| Add |]
f1 "*" = [| Mul |]

comb s = [| func $(f1 s) |]
```
```
res = $($(comb "*"))
```

So it seems the restriction is quite arbitrary but I was wondering if
I was missing some limitation which meant this check was added. I
would not be surprised if something more complicated goes wrong with
splicing.

Cheers,

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


Groups and projects

2019-01-24 Thread Simon Peyton Jones via ghc-devs
> Alright, I believe I have found the issue: you are a member of 
> the GHC group and GitLab's default notification behavior is that 
> you will receive notifications for all events of repositories in 
> groups to which you belong.

OK thanks, that's helpful.

When you say "repository" could you also have said "project".  That is, are 
"projects" and "repositories" in 1-1 correspondence?

So, to understand the semantics, you can belong to

* A project.
* A group

What's the difference? The group seems to be "Glasgow Haskell Compiler"; the 
project seems to be "Glasgow Haskell Compiler / GHC".  Does that imply that 
 * every project is part of a group; but 
 * a group may have many projects?

Or maybe a project can be part of more than one group?

The "Custom settings" on a project seem to be identical to the "custom 
settings" for a group.  If Gitlab is deciding whether to send me a notification 
N, is it clear whether it's a "project notification" or a "group notification"? 
 If so, then it can consult the appropriate settings; but if not, it's not 
clear.

Sorry for all these questions.  It's astonishingly common for large software 
systems to describe the surface knobs without describing the underlying model 
that makes sense of all those knobs!


Simon


-Original Message-
From: Ben Gamari  
Sent: 24 January 2019 03:30
To: Simon Peyton Jones 
Subject: RE: GHC | hWaitForInput-accurate-pipe test (!21)

Simon Peyton Jones  writes:

> Yes, tons of them! I attach a dozen that arrived in the last few hrs.
>
Alright, I believe I have found the issue: you are a member of the GHC group 
and GitLab's default notification behavior is that you will receive 
notifications for all events of repositories in groups to which you belong.

You can view and modify these settings yourself here but I have changed them to 
be a bit more selective. You should now only receive notifications of new merge 
requests and new comments on merge requests on which you have previously 
commented. Do let me know if you receive any more unwanted mail.

Cheers,

- Ben


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


Re: Thoughts on the Contributing page

2019-01-24 Thread Tobias Dammers
On Wed, Jan 23, 2019 at 12:54:51PM -0500, Ben Gamari wrote:
> >
> Sounds like we are largely in agreement. Let's start on this after the
> Trac migration is finished.

I can in fact start working on this already while the migration is
pipelined. It's just markdown in git, so writing a draft and then
merging it into the wiki is perfectly straightforward.

> I was going to recommend we rather just use something off-the-shelf to
> avoid reinventing the wheel. I use linkchecker [1] elsewhere and it
> works quite well. I believe you can use its -W flag to catch
> non-existent wiki pages (which won't return a 404).

Ofc, if we can do it without any extra coding effort, all the better.

I do think doing it as part of the migration script might make it easier
to capture those "redirect" pages (e.g.
https://ghc.haskell.org/trac/ghc/wiki/Newcomers): we're scraping anyway,
so I think detecting the shape of those pages shouldn't be overly
difficult, and might be something an off-the-shelf link checker isn't as
suitable for.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs