RE: [GHC] #8704: Use GHC.Exts.build in randoms, randomRs to achieve fusion

2014-02-04 Thread Simon Peyton Jones
Hi Ryan

Are you on this thread?   You probably should be!

Simon

| -Original Message-
| From: ghc-tickets [mailto:ghc-tickets-boun...@haskell.org] On Behalf Of
| GHC
| Sent: 27 January 2014 18:49
| Cc: ghc-tick...@haskell.org
| Subject: Re: [GHC] #8704: Use GHC.Exts.build in randoms, randomRs to
| achieve fusion
| 
| #8704: Use GHC.Exts.build in randoms, randomRs to achieve fusion
| -+-
| ---
| Reporter:  ion1  |Owner:
| Type:  feature request   |   Status:  patch
| Priority:  normal|Milestone:
|Component:  libraries/random  |  Version:  7.6.3
|   Resolution:| Keywords:  fusion
| Operating System:  Unknown/Multiple  | Architecture:
| Unknown/Multiple
|  Type of failure:  None/Unknown  |   Difficulty:  Unknown
|Test Case:|   Blocked By:
| Blocking:|  Related Tickets:  #4218
| -+-
| ---
| 
| Comment (by nomeata):
| 
|  Thanks. From my POV it is worth adding even if you can’t measure a
|  performance gain; it is still good to know that nice code is being
|  generated. But of course it is up to Ryan Newton (random maintainer)
| to
|  decide this.
| 
| --
| Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8704#comment:4
| GHC http://www.haskell.org/ghc/
| The Glasgow Haskell Compiler
| ___
| ghc-tickets mailing list
| ghc-tick...@haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-tickets
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


RE: Request: export runTcInteractive from TcRnDriver

2014-02-04 Thread Simon Peyton Jones
No, there's no reason it's not exported, excepting only that it's not currently 
called outside TcRnDriver.

Go ahead and create a ticket and patch.  It should be exported from GHC.hs (ie 
the official GHC API), not merely from TcRnDriver.  And I suggest you add a 
comment with the export from GHC.hs to explain why it's exported.  Otherwise 
someone might delete it again!

Thx

Simon

From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of 
p.k.f.holzensp...@utwente.nl
Sent: 29 January 2014 09:55
To: ghc-devs@haskell.org
Subject: Request: export runTcInteractive from TcRnDriver

Dear GHC-devs,

Is there a reason why, in HEAD, TcRnDriver does *not* export runTcInteractive? 
If not, can it please be added? (I considered sending a patch with this email, 
but it's so trivial a change that the check of the patch is more work than 
manually adding runTcInteractive to the export list.)

I'm developing against the GHC API of 7.6.3 and it would have saved me hours of 
work to have precisely that function. Seeing it's in HEAD, but not being 
exported seems a shame ;)

Regards,
Philip

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


RE: GHC boot-library package changelogs release-notes

2014-02-04 Thread Simon Peyton Jones
Herbert

Would you like to add some notes to 
https://ghc.haskell.org/trac/ghc/wiki/Commentary/Libraries, to describe what 
the file is, and the criteria for modifying it?  (After all, the patch history 
is a kind of change log too.)

Thanks

Simon

| -Original Message-
| From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
| Herbert Valerio Riedel
| Sent: 29 January 2014 16:33
| To: ghc-devs
| Subject: GHC boot-library package changelogs  release-notes
| 
| Hello fellow GHC devs,
| 
| As some of you might have noticed, I added a changelog.md file to
| libraries/base:
| 
|  https://github.com/ghc/packages-
| base/blob/c8634027d4e3315a2276fb1be8168c486419785a/changelog.md
| 
| (please feel free to fix any typos/omissions/whatever you notice)
| 
| My hope/motivation is that since Hackage gained the ability to display
| changelog files, the rather extensive changes in `base` might be a bit
| more easily/conveniently accessible on Hackage.
| 
| I chose to use Markdown format, as I believe it may be more convenient
| to maintain/edit the `base` changelog as plain text rather than having
| to edit XML after each noteworthy change in `base`. And as the
| release-notes typically only exploit a subset of the Docbook
| facilities,
| the conversion to Docbook XML could be performed semi-automatically
| shortly before a release.
| 
| Moreover, the release notes from previous major GHC release (which in
| the past contained the major changes in `base` et al.) are usually
| removed again. While a separate changelog file would usually retain
| (more) version history.
| 
| Therefore, I'd propose to switch from editing the user's guide release
| note for library release notes to using Hackage-changelog files in
| Markdown format (following a common structural convention) and make it
| the release-manager's responsibility to integrate the respective
| package's changelog content into the user's guide.
| 
| Any comments?
| 
| Cheers,
|   hvr
| ___
| ghc-devs mailing list
| ghc-devs@haskell.org
| http://www.haskell.org/mailman/listinfo/ghc-devs
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Pre-Master checks (Was: Nightlies)

2014-02-04 Thread Joachim Breitner
Hi,

Am Dienstag, den 04.02.2014, 08:04 + schrieb Simon Peyton Jones:
 I want just to say thank you for thinking about this.  We badly need better 
 nightly-builds for GHC, on a variety of platforms
 a) to identify regressions, preferably to the actually commit that
caused it, so Austin's big red message can go to the right person

I believe we can do better, so that Austin’s big red message does not
have to be written in the first place.

Here is what I have in mind, and I’ll volunteer to implement it if
people think it is a good idea and I get the resources/permissions:

Proposal


Nobody gets to push to master directly. Instead, every push to master is
diverted¹ to a temporary branch validating/some id. One of our
servers detects the appearance of such a branch and will
 * check it out,
 * validate it,
 * if ok: check if master can still be fast-forward’ed to it,
 * if yes: push to master.

If it does not validate, or if master has changed in between, the branch
will be moved to failed/some id, and a message is sent to the pushing
developer², including a tail of the log and a link to the full log.

Systems can fail, and maybe nothing validates anymore for reasons not
easily fixable. For that case, a backdoor is available: Pushes to the
branch master-unchecked will be moved to master, well, unchecked.

Benefits:
 * It is guaranteed that master has validated at least once somewhere.
   I.e. no need to ask on the mailing list “does master validate for you
   right now?”
 * It is now ok to do changes that are “obviously correct” (comment
   changes, removing dead code, code reformatting) without having
   to validate manually, which _saves developer time_ (our most precious
   resource).

Downsides:
 * When two commits are racing for master, one will be rejected for
   being a non-fast-forward commit. The user will then have to merge
   or rebase and try again.
   But: The same would be true if he was validating locally (unless he
   does not validate the merge/rebase, in which case we are again where 
   we don’t want to be: Unvalidated versions in master.)


Is this something you would what, or could live with?

If it is technically feasible (given our hardware constraints,
repository structure and git’s feature) is a different question, which
needs to be discussed afterwards.

Greetings,
Joachim



¹ Might not be possible transparently
(http://stackoverflow.com/questions/21362833), but for the sake of
argument and workflow design, assume it was.
² As an approximation: The committer of the latest patch.

PS: I’m also considering (but not pushing hard) for a stronger variant
as follows. We do not need to discuss that now and should, if at all,
start the with the proposal above. I’m just adding it to show where this
is going ...

Stronger proposal
~

Every commit in master needs to be validated! 
I tend to make sure that all patches on my branch validate individually
(git rebase -i -x ./validate is a great tool here, you should use it!
). Contributors who do not want to go through that trouble should then
use git merge --squash to produce a single commit from their branch.

This would make the git history more useful for things like bitsecting.



-- 
Joachim Breitner
  e-Mail: m...@joachim-breitner.de
  Homepage: http://www.joachim-breitner.de
  Jabber-ID: nome...@joachim-breitner.de



signature.asc
Description: This is a digitally signed message part
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Pre-Master checks (Was: Nightlies)

2014-02-04 Thread Richard Eisenberg
Yay!

I, for one, would probably submit more bugfix patches with this structure in 
place. I take validating seriously, but my daily schedule often involves 
switching machines and tasks, and once I press validate, it's often hours 
before I actually look at the results... by which time, some other commit may 
have come through. My need (real or perceived) for an uninterrupted chunk of 
time to make a patch stops me from doing them, sometimes.

With Joachim's structure, I could spend a half hour doing a quick patch 
(especially comments!) and push and move on.

Please do it! :)

Thanks!
Richard

PS: Transparency in the git redirects would be nice, of course, but is in no 
way necessary. We could I suppose add a push script to the repo that handles 
some of the overhead.

On Feb 4, 2014, at 4:41 AM, Joachim Breitner m...@joachim-breitner.de wrote:

 Hi,
 
 Am Dienstag, den 04.02.2014, 08:04 + schrieb Simon Peyton Jones:
 I want just to say thank you for thinking about this.  We badly need better 
 nightly-builds for GHC, on a variety of platforms
 a) to identify regressions, preferably to the actually commit that
   caused it, so Austin's big red message can go to the right person
 
 I believe we can do better, so that Austin’s big red message does not
 have to be written in the first place.
 
 Here is what I have in mind, and I’ll volunteer to implement it if
 people think it is a good idea and I get the resources/permissions:
 
 Proposal
 
 
 Nobody gets to push to master directly. Instead, every push to master is
 diverted¹ to a temporary branch validating/some id. One of our
 servers detects the appearance of such a branch and will
 * check it out,
 * validate it,
 * if ok: check if master can still be fast-forward’ed to it,
 * if yes: push to master.
 
 If it does not validate, or if master has changed in between, the branch
 will be moved to failed/some id, and a message is sent to the pushing
 developer², including a tail of the log and a link to the full log.
 
 Systems can fail, and maybe nothing validates anymore for reasons not
 easily fixable. For that case, a backdoor is available: Pushes to the
 branch master-unchecked will be moved to master, well, unchecked.
 
 Benefits:
 * It is guaranteed that master has validated at least once somewhere.
   I.e. no need to ask on the mailing list “does master validate for you
   right now?”
 * It is now ok to do changes that are “obviously correct” (comment
   changes, removing dead code, code reformatting) without having
   to validate manually, which _saves developer time_ (our most precious
   resource).
 
 Downsides:
 * When two commits are racing for master, one will be rejected for
   being a non-fast-forward commit. The user will then have to merge
   or rebase and try again.
   But: The same would be true if he was validating locally (unless he
   does not validate the merge/rebase, in which case we are again where 
   we don’t want to be: Unvalidated versions in master.)
 
 
 Is this something you would what, or could live with?
 
 If it is technically feasible (given our hardware constraints,
 repository structure and git’s feature) is a different question, which
 needs to be discussed afterwards.
 
 Greetings,
 Joachim
 
 
 
 ¹ Might not be possible transparently
 (http://stackoverflow.com/questions/21362833), but for the sake of
 argument and workflow design, assume it was.
 ² As an approximation: The committer of the latest patch.
 
 PS: I’m also considering (but not pushing hard) for a stronger variant
 as follows. We do not need to discuss that now and should, if at all,
 start the with the proposal above. I’m just adding it to show where this
 is going ...
 
 Stronger proposal
 ~
 
Every commit in master needs to be validated! 
 I tend to make sure that all patches on my branch validate individually
 (git rebase -i -x ./validate is a great tool here, you should use it!
 ). Contributors who do not want to go through that trouble should then
 use git merge --squash to produce a single commit from their branch.
 
 This would make the git history more useful for things like bitsecting.
 
 
 
 -- 
 Joachim Breitner
  e-Mail: m...@joachim-breitner.de
  Homepage: http://www.joachim-breitner.de
  Jabber-ID: nome...@joachim-breitner.de
 
 ___
 ghc-devs mailing list
 ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Pre-Master checks (Was: Nightlies)

2014-02-04 Thread Mateusz Kowalczyk
On 04/02/14 09:41, Joachim Breitner wrote:
 Hi,
 
 Am Dienstag, den 04.02.2014, 08:04 + schrieb Simon Peyton Jones:
 I want just to say thank you for thinking about this.  We badly need better 
 nightly-builds for GHC, on a variety of platforms
 a) to identify regressions, preferably to the actually commit that
caused it, so Austin's big red message can go to the right person
 
 I believe we can do better, so that Austin’s big red message does not
 have to be written in the first place.
 
 Here is what I have in mind, and I’ll volunteer to implement it if
 people think it is a good idea and I get the resources/permissions:
 
 Proposal
 
 
 Nobody gets to push to master directly. Instead, every push to master is
 diverted¹ to a temporary branch validating/some id. One of our
 servers detects the appearance of such a branch and will
  * check it out,
  * validate it,
  * if ok: check if master can still be fast-forward’ed to it,
  * if yes: push to master.
 
 If it does not validate, or if master has changed in between, the branch
 will be moved to failed/some id, and a message is sent to the pushing
 developer², including a tail of the log and a link to the full log.
 
 Systems can fail, and maybe nothing validates anymore for reasons not
 easily fixable. For that case, a backdoor is available: Pushes to the
 branch master-unchecked will be moved to master, well, unchecked.
 
 Benefits:
  * It is guaranteed that master has validated at least once somewhere.
I.e. no need to ask on the mailing list “does master validate for you
right now?”
  * It is now ok to do changes that are “obviously correct” (comment
changes, removing dead code, code reformatting) without having
to validate manually, which _saves developer time_ (our most precious
resource).
 
 Downsides:
  * When two commits are racing for master, one will be rejected for
being a non-fast-forward commit. The user will then have to merge
or rebase and try again.
But: The same would be true if he was validating locally (unless he
does not validate the merge/rebase, in which case we are again where 
we don’t want to be: Unvalidated versions in master.)
 
 
 Is this something you would what, or could live with?
 
 If it is technically feasible (given our hardware constraints,
 repository structure and git’s feature) is a different question, which
 needs to be discussed afterwards.
 
 Greetings,
 Joachim
 
 
 
 ¹ Might not be possible transparently
 (http://stackoverflow.com/questions/21362833), but for the sake of
 argument and workflow design, assume it was.
 ² As an approximation: The committer of the latest patch.
 
 PS: I’m also considering (but not pushing hard) for a stronger variant
 as follows. We do not need to discuss that now and should, if at all,
 start the with the proposal above. I’m just adding it to show where this
 is going ...
 
 Stronger proposal
 ~
 
 Every commit in master needs to be validated! 
 I tend to make sure that all patches on my branch validate individually
 (git rebase -i -x ./validate is a great tool here, you should use it!
 ). Contributors who do not want to go through that trouble should then
 use git merge --squash to produce a single commit from their branch.
 
 This would make the git history more useful for things like bitsecting.
 
 
 
 
 
 ___
 ghc-devs mailing list
 ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs
 

You mention that it's enough for one machine to validate the patch. What
if the change was for example to fix something on ARM (where builds take
a long time) and has no effect on x86? The x86 machine is likely to come
through first and give you the OK, pushing to master something that's
effectively not checked. In fact, the fastest slave is likely to come
through first every time and if it validates there (for example, I hear
that 64-bit Linux is the golden platform for validate), it will be
pushed to master.

I think the proposal needs an enhancement: ability to specify which
platform the commit needs to validate on (i.e. even if i686 comes
through first, we'll wait for ARM anyway) before being pushed in.

-- 
Mateusz K.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Pre-Master checks (Was: Nightlies)

2014-02-04 Thread Carter Schonwald
This actually raises an important question: we don't have any good policy
for making sure validate / etc stays clean on all the platforms.   There's
enough variations that it might take an implausible amount of resources to
test all the targets we want to support on every commit. (Eg given how long
builds apparently take on certain platforms like arm, we'd need quite a few
wee arm machines to test arm at every commit.  Or maybe not?)

Point being: I agree that support tooling to make sure builds don't stay
broken and don't get broken aren't where it should be. And I  agree that
something like you describe should be done.  I'm just wondering if we have
the resources to do that correctly.

On Tuesday, February 4, 2014, Mateusz Kowalczyk fuuze...@fuuzetsu.co.uk
wrote:

 On 04/02/14 09:41, Joachim Breitner wrote:
  Hi,
 
  Am Dienstag, den 04.02.2014, 08:04 + schrieb Simon Peyton Jones:
  I want just to say thank you for thinking about this.  We badly need
 better nightly-builds for GHC, on a variety of platforms
  a) to identify regressions, preferably to the actually commit that
 caused it, so Austin's big red message can go to the right person
 
  I believe we can do better, so that Austin’s big red message does not
  have to be written in the first place.
 
  Here is what I have in mind, and I’ll volunteer to implement it if
  people think it is a good idea and I get the resources/permissions:
 
  Proposal
  
 
  Nobody gets to push to master directly. Instead, every push to master is
  diverted¹ to a temporary branch validating/some id. One of our
  servers detects the appearance of such a branch and will
   * check it out,
   * validate it,
   * if ok: check if master can still be fast-forward’ed to it,
   * if yes: push to master.
 
  If it does not validate, or if master has changed in between, the branch
  will be moved to failed/some id, and a message is sent to the pushing
  developer², including a tail of the log and a link to the full log.
 
  Systems can fail, and maybe nothing validates anymore for reasons not
  easily fixable. For that case, a backdoor is available: Pushes to the
  branch master-unchecked will be moved to master, well, unchecked.
 
  Benefits:
   * It is guaranteed that master has validated at least once somewhere.
 I.e. no need to ask on the mailing list “does master validate for you
 right now?”
   * It is now ok to do changes that are “obviously correct” (comment
 changes, removing dead code, code reformatting) without having
 to validate manually, which _saves developer time_ (our most precious
 resource).
 
  Downsides:
   * When two commits are racing for master, one will be rejected for
 being a non-fast-forward commit. The user will then have to merge
 or rebase and try again.
 But: The same would be true if he was validating locally (unless he
 does not validate the merge/rebase, in which case we are again where
 we don’t want to be: Unvalidated versions in master.)
 
 
  Is this something you would what, or could live with?
 
  If it is technically feasible (given our hardware constraints,
  repository structure and git’s feature) is a different question, which
  needs to be discussed afterwards.
 
  Greetings,
  Joachim
 
 
 
  ¹ Might not be possible transparently
  (http://stackoverflow.com/questions/21362833), but for the sake of
  argument and workflow design, assume it was.
  ² As an approximation: The committer of the latest patch.
 
  PS: I’m also considering (but not pushing hard) for a stronger variant
  as follows. We do not need to discuss that now and should, if at all,
  start the with the proposal above. I’m just adding it to show where this
  is going ...
 
  Stronger proposal
  ~
 
  Every commit in master needs to be validated!
  I tend to make sure that all patches on my branch validate individually
  (git rebase -i -x ./validate is a great tool here, you should use it!
  ). Contributors who do not want to go through that trouble should then
  use git merge --squash to produce a single commit from their branch.
 
  This would make the git history more useful for things like bitsecting.
 
 
 
 
 
  ___
  ghc-devs mailing list
  ghc-devs@haskell.org javascript:;
  http://www.haskell.org/mailman/listinfo/ghc-devs
 

 You mention that it's enough for one machine to validate the patch. What
 if the change was for example to fix something on ARM (where builds take
 a long time) and has no effect on x86? The x86 machine is likely to come
 through first and give you the OK, pushing to master something that's
 effectively not checked. In fact, the fastest slave is likely to come
 through first every time and if it validates there (for example, I hear
 that 64-bit Linux is the golden platform for validate), it will be
 pushed to master.

 I think the proposal needs an enhancement: ability to specify which
 platform the commit needs to 

RE: Pre-Master checks (Was: Nightlies)

2014-02-04 Thread Simon Peyton Jones
I can see advantages here, similar to Richard.  I'm just a bit worried about 
keeping all those branches straight in my head.

Who names all these temporary branches?  Does someone delete them so they don't 
accumulate and dominate the branch list? 

Would need careful documenting, so that new people know exactly what to do.

Simon

| -Original Message-
| From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
| Joachim Breitner
| Sent: 04 February 2014 09:42
| To: ghc-devs@haskell.org
| Subject: Re: Pre-Master checks (Was: Nightlies)
| 
| Hi,
| 
| Am Dienstag, den 04.02.2014, 08:04 + schrieb Simon Peyton Jones:
|  I want just to say thank you for thinking about this.  We badly need
| better nightly-builds for GHC, on a variety of platforms
|  a) to identify regressions, preferably to the actually commit that
| caused it, so Austin's big red message can go to the right person
| 
| I believe we can do better, so that Austin’s big red message does not
| have to be written in the first place.
| 
| Here is what I have in mind, and I’ll volunteer to implement it if
| people think it is a good idea and I get the resources/permissions:
| 
| Proposal
| 
| 
| Nobody gets to push to master directly. Instead, every push to master
| is
| diverted¹ to a temporary branch validating/some id. One of our
| servers detects the appearance of such a branch and will
|  * check it out,
|  * validate it,
|  * if ok: check if master can still be fast-forward’ed to it,
|  * if yes: push to master.
| 
| If it does not validate, or if master has changed in between, the
| branch
| will be moved to failed/some id, and a message is sent to the pushing
| developer², including a tail of the log and a link to the full log.
| 
| Systems can fail, and maybe nothing validates anymore for reasons not
| easily fixable. For that case, a backdoor is available: Pushes to the
| branch master-unchecked will be moved to master, well, unchecked.
| 
| Benefits:
|  * It is guaranteed that master has validated at least once somewhere.
|I.e. no need to ask on the mailing list “does master validate for
| you
|right now?”
|  * It is now ok to do changes that are “obviously correct” (comment
|changes, removing dead code, code reformatting) without having
|to validate manually, which _saves developer time_ (our most
| precious
|resource).
| 
| Downsides:
|  * When two commits are racing for master, one will be rejected for
|being a non-fast-forward commit. The user will then have to merge
|or rebase and try again.
|But: The same would be true if he was validating locally (unless he
|does not validate the merge/rebase, in which case we are again where
|we don’t want to be: Unvalidated versions in master.)
| 
| 
| Is this something you would what, or could live with?
| 
| If it is technically feasible (given our hardware constraints,
| repository structure and git’s feature) is a different question, which
| needs to be discussed afterwards.
| 
| Greetings,
| Joachim
| 
| 
| 
| ¹ Might not be possible transparently
| (http://stackoverflow.com/questions/21362833), but for the sake of
| argument and workflow design, assume it was.
| ² As an approximation: The committer of the latest patch.
| 
| PS: I’m also considering (but not pushing hard) for a stronger variant
| as follows. We do not need to discuss that now and should, if at all,
| start the with the proposal above. I’m just adding it to show where
| this
| is going ...
| 
| Stronger proposal
| ~
| 
| Every commit in master needs to be validated!
| I tend to make sure that all patches on my branch validate individually
| (git rebase -i -x ./validate is a great tool here, you should use it!
| ). Contributors who do not want to go through that trouble should then
| use git merge --squash to produce a single commit from their branch.
| 
| This would make the git history more useful for things like bitsecting.
| 
| 
| 
| --
| Joachim Breitner
|   e-Mail: m...@joachim-breitner.de
|   Homepage: http://www.joachim-breitner.de
|   Jabber-ID: nome...@joachim-breitner.de

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


please elaborate on comment for base:Data.Type.Equality.(==)?

2014-02-04 Thread Nicolas Frisby
[CC'ing Richard, as I'm guessing he's the author of the comment.]

I have a question regarding the comment on the type
family Data.Type.Equality.(==).

  A poly-kinded instance [of ==] is *not* provided, as a recursive
definition for algebraic kinds is generally more useful.

Can someone elaborate on generally more useful.

Thank you.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Pre-Master checks (Was: Nightlies)

2014-02-04 Thread Carter Schonwald
one point in the design space (mind you one i'm not going to advocate) is
the testing / merging workflow that the Mozilla folks are doing for rust.
 Every patch / pull request gets tested by their build bot before merging.
Does make the commits on master look pretty mess / mergy though.

mind you its a bit tightly coupled to github, but some of the ideas *might*
be a good strawman.  Likewise, how does eg LLVM/Clang manage its
testing infrastructure?  How does GCC manage it?


On Tue, Feb 4, 2014 at 12:56 PM, Simon Peyton Jones
simo...@microsoft.comwrote:

 I can see advantages here, similar to Richard.  I'm just a bit worried
 about keeping all those branches straight in my head.

 Who names all these temporary branches?  Does someone delete them so they
 don't accumulate and dominate the branch list?

 Would need careful documenting, so that new people know exactly what to do.

 Simon

 | -Original Message-
 | From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
 | Joachim Breitner
 | Sent: 04 February 2014 09:42
 | To: ghc-devs@haskell.org
 | Subject: Re: Pre-Master checks (Was: Nightlies)
 |
 | Hi,
 |
 | Am Dienstag, den 04.02.2014, 08:04 + schrieb Simon Peyton Jones:
 |  I want just to say thank you for thinking about this.  We badly need
 | better nightly-builds for GHC, on a variety of platforms
 |  a) to identify regressions, preferably to the actually commit that
 | caused it, so Austin's big red message can go to the right person
 |
 | I believe we can do better, so that Austin’s big red message does not
 | have to be written in the first place.
 |
 | Here is what I have in mind, and I’ll volunteer to implement it if
 | people think it is a good idea and I get the resources/permissions:
 |
 | Proposal
 | 
 |
 | Nobody gets to push to master directly. Instead, every push to master
 | is
 | diverted¹ to a temporary branch validating/some id. One of our
 | servers detects the appearance of such a branch and will
 |  * check it out,
 |  * validate it,
 |  * if ok: check if master can still be fast-forward’ed to it,
 |  * if yes: push to master.
 |
 | If it does not validate, or if master has changed in between, the
 | branch
 | will be moved to failed/some id, and a message is sent to the pushing
 | developer², including a tail of the log and a link to the full log.
 |
 | Systems can fail, and maybe nothing validates anymore for reasons not
 | easily fixable. For that case, a backdoor is available: Pushes to the
 | branch master-unchecked will be moved to master, well, unchecked.
 |
 | Benefits:
 |  * It is guaranteed that master has validated at least once somewhere.
 |I.e. no need to ask on the mailing list “does master validate for
 | you
 |right now?”
 |  * It is now ok to do changes that are “obviously correct” (comment
 |changes, removing dead code, code reformatting) without having
 |to validate manually, which _saves developer time_ (our most
 | precious
 |resource).
 |
 | Downsides:
 |  * When two commits are racing for master, one will be rejected for
 |being a non-fast-forward commit. The user will then have to merge
 |or rebase and try again.
 |But: The same would be true if he was validating locally (unless he
 |does not validate the merge/rebase, in which case we are again where
 |we don’t want to be: Unvalidated versions in master.)
 |
 |
 | Is this something you would what, or could live with?
 |
 | If it is technically feasible (given our hardware constraints,
 | repository structure and git’s feature) is a different question, which
 | needs to be discussed afterwards.
 |
 | Greetings,
 | Joachim
 |
 |
 |
 | ¹ Might not be possible transparently
 | (http://stackoverflow.com/questions/21362833), but for the sake of
 | argument and workflow design, assume it was.
 | ² As an approximation: The committer of the latest patch.
 |
 | PS: I’m also considering (but not pushing hard) for a stronger variant
 | as follows. We do not need to discuss that now and should, if at all,
 | start the with the proposal above. I’m just adding it to show where
 | this
 | is going ...
 |
 | Stronger proposal
 | ~
 |
 | Every commit in master needs to be validated!
 | I tend to make sure that all patches on my branch validate individually
 | (git rebase -i -x ./validate is a great tool here, you should use it!
 | ). Contributors who do not want to go through that trouble should then
 | use git merge --squash to produce a single commit from their branch.
 |
 | This would make the git history more useful for things like bitsecting.
 |
 |
 |
 | --
 | Joachim Breitner
 |   e-Mail: m...@joachim-breitner.de
 |   Homepage: http://www.joachim-breitner.de
 |   Jabber-ID: nome...@joachim-breitner.de

 ___
 ghc-devs mailing list
 ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs

___
ghc-devs mailing list

Re: please elaborate on comment for base:Data.Type.Equality.(==)?

2014-02-04 Thread Richard Eisenberg
Say I have

 data Nat = Zero | Succ Nat
 data SNat :: Nat - * where
   SZero :: SNat Zero
   SSucc :: SNat n - SNat (Succ n)
 data SBool :: Bool - * where
   SFalse :: SBool False
   STrue :: SBool True

Now, I want

 eq :: SNat a - SNat b- SBool (a == b)
 eq SZero SZero = STrue
 eq (SSucc _) SZero = SFalse
 eq SZero (SSucc _) = SFalse
 eq (SSucc c) (SSucc d) = eq c d

Does that type check?

Suppose we have

 type family EqPoly (a :: k) (b :: k) :: Bool where
   EqPoly a a = True
   EqPoly a b = False
 type instance a == b = EqPoly a b

(Let's forget that the instance there would overlap with any other instance.)

Now, in the last line of `eq`, we have that the type of `eq c d` is `SBool (e 
== f)` where (c :: SNat e), (d :: SNat f), (a ~ Succ e), and (b ~ Succ f). But, 
does ((e == f) ~ (a == b))? It would need to for the last line of `eq` to 
type-check. Alas, there is no way to proof ((e == f) ~ (a == b)), so we're 
hosed.

Now, suppose

 type family EqNat a b where
   EqNat Zero Zero = True
   EqNat (Succ n) (Succ m) = EqNat n m
   EqNat Zero (Succ n) = False
   EqNat (Succ n) Zero = False
 type instance a == b = EqNat a b

Here, we know that (a ~ Succ e) and (b ~ Succ f), so we compute that (a == b) ~ 
(EqNat (Succ e) (Succ f)) ~ (EqNat e f) ~ (e == f). Huzzah!

Thus, the second version is better.

I hope this helps!
Richard

On Feb 4, 2014, at 1:08 PM, Nicolas Frisby nicolas.fri...@gmail.com wrote:

 [CC'ing Richard, as I'm guessing he's the author of the comment.]
 
 I have a question regarding the comment on the type family 
 Data.Type.Equality.(==).
 
   A poly-kinded instance [of ==] is not provided, as a recursive definition 
 for algebraic kinds is generally more useful.
 
 Can someone elaborate on generally more useful.
 
 Thank you.

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: please elaborate on comment for base:Data.Type.Equality.(==)?

2014-02-04 Thread Nicolas Frisby
Great. Thanks.

This reminds me of one emphasis of McBride's lectures and keynotes
regarding Agda: it's generally a Good Thing for the shape of your type
level recursion to match your value level recursion.
On Feb 4, 2014 1:20 PM, Richard Eisenberg e...@cis.upenn.edu wrote:

 Say I have

  data Nat = Zero | Succ Nat
  data SNat :: Nat - * where
SZero :: SNat Zero
SSucc :: SNat n - SNat (Succ n)
  data SBool :: Bool - * where
SFalse :: SBool False
STrue :: SBool True

 Now, I want

  eq :: SNat a - SNat b- SBool (a == b)
  eq SZero SZero = STrue
  eq (SSucc _) SZero = SFalse
  eq SZero (SSucc _) = SFalse
  eq (SSucc c) (SSucc d) = eq c d

 Does that type check?

 Suppose we have

  type family EqPoly (a :: k) (b :: k) :: Bool where
EqPoly a a = True
EqPoly a b = False
  type instance a == b = EqPoly a b

 (Let's forget that the instance there would overlap with any other
 instance.)

 Now, in the last line of `eq`, we have that the type of `eq c d` is `SBool
 (e == f)` where (c :: SNat e), (d :: SNat f), (a ~ Succ e), and (b ~ Succ
 f). But, does ((e == f) ~ (a == b))? It would need to for the last line of
 `eq` to type-check. Alas, there is no way to proof ((e == f) ~ (a == b)),
 so we're hosed.

 Now, suppose

  type family EqNat a b where
EqNat Zero Zero = True
EqNat (Succ n) (Succ m) = EqNat n m
EqNat Zero (Succ n) = False
EqNat (Succ n) Zero = False
  type instance a == b = EqNat a b

 Here, we know that (a ~ Succ e) and (b ~ Succ f), so we compute that (a ==
 b) ~ (EqNat (Succ e) (Succ f)) ~ (EqNat e f) ~ (e == f). Huzzah!

 Thus, the second version is better.

 I hope this helps!
 Richard

 On Feb 4, 2014, at 1:08 PM, Nicolas Frisby nicolas.fri...@gmail.com
 wrote:

 [CC'ing Richard, as I'm guessing he's the author of the comment.]

 I have a question regarding the comment on the type
 family Data.Type.Equality.(==).

   A poly-kinded instance [of ==] is *not* provided, as a recursive
 definition for algebraic kinds is generally more useful.

 Can someone elaborate on generally more useful.

 Thank you.



___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Summarize #7602

2014-02-04 Thread Andrew Farmer
I know that #7602 has been mentioned as a final loose end in the RC. I was
wondering if someone in the know could summarize its status in regards to
how it effects GHC users.

Feel free to be blisteringly brief... ;-) I'm just looking for things like:
this is a non-issue on modern OS X/Clang or it'll be fixed soon just be
patient or we've done our part, this is Apple's problem now.

I gave the trac thread a read-through, but there seems to be several
degrees of flexibility/workarounds, so I'm still not sure if this is
something I should worry about on my OS X machine.

Thanks for your cycles!
Andrew
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Summarize #7602

2014-02-04 Thread Austin Seipp
TL;DR OS X suffers a performance hit when build with llvm-gcc/clang.
The binary builds are built this way. The fix I outlined in the ticket
(a fast `pthread_getspecific`/`pthread_setspecific`) could still work
to recover most of the performance, but Apple accidentally messed up
the Mavericks source code release, so I'm not sure if anything
regarding the pthread implementation has changed. If it hasn't, then I
think it should be reasonably easy to fix with some testing.

(The ticket is a bit of a long and dry read I'm afraid.)

On Tue, Feb 4, 2014 at 3:22 PM, Andrew Farmer afar...@ittc.ku.edu wrote:
 I know that #7602 has been mentioned as a final loose end in the RC. I was
 wondering if someone in the know could summarize its status in regards to
 how it effects GHC users.

 Feel free to be blisteringly brief... ;-) I'm just looking for things like:
 this is a non-issue on modern OS X/Clang or it'll be fixed soon just be
 patient or we've done our part, this is Apple's problem now.

 I gave the trac thread a read-through, but there seems to be several degrees
 of flexibility/workarounds, so I'm still not sure if this is something I
 should worry about on my OS X machine.

 Thanks for your cycles!
 Andrew

 ___
 ghc-devs mailing list
 ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs




-- 
Regards,

Austin Seipp, Haskell Consultant
Well-Typed LLP, http://www.well-typed.com/
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Pre-Master checks (Was: Nightlies)

2014-02-04 Thread Gabor Greif
On 2/4/14, Carter Schonwald carter.schonw...@gmail.com wrote:
 one point in the design space (mind you one i'm not going to advocate) is
 the testing / merging workflow that the Mozilla folks are doing for rust.
  Every patch / pull request gets tested by their build bot before merging.
 Does make the commits on master look pretty mess / mergy though.

 mind you its a bit tightly coupled to github, but some of the ideas *might*
 be a good strawman.  Likewise, how does eg LLVM/Clang manage its
 testing infrastructure?  How does GCC manage it?

LLVM devs need to run 'make check' before committing to the repo. This
runs 8000+ tests in about 30 seconds.

Then there is the bot infrastructure at http://lab.llvm.org:8011/console ,
and who breaks a target is alerted by mail. But this applies to all
committers whose changes entered into (slow) builds. It is not
commit-exact, though better on the fast bots.

Cheers,

Gabor



 On Tue, Feb 4, 2014 at 12:56 PM, Simon Peyton Jones
 simo...@microsoft.comwrote:

 I can see advantages here, similar to Richard.  I'm just a bit worried
 about keeping all those branches straight in my head.

 Who names all these temporary branches?  Does someone delete them so they
 don't accumulate and dominate the branch list?

 Would need careful documenting, so that new people know exactly what to
 do.

 Simon

 | -Original Message-
 | From: ghc-devs [mailto:ghc-devs-boun...@haskell.org] On Behalf Of
 | Joachim Breitner
 | Sent: 04 February 2014 09:42
 | To: ghc-devs@haskell.org
 | Subject: Re: Pre-Master checks (Was: Nightlies)
 |
 | Hi,
 |
 | Am Dienstag, den 04.02.2014, 08:04 + schrieb Simon Peyton Jones:
 |  I want just to say thank you for thinking about this.  We badly need
 | better nightly-builds for GHC, on a variety of platforms
 |  a) to identify regressions, preferably to the actually commit that
 | caused it, so Austin's big red message can go to the right person
 |
 | I believe we can do better, so that Austin's big red message does not
 | have to be written in the first place.
 |
 | Here is what I have in mind, and I'll volunteer to implement it if
 | people think it is a good idea and I get the resources/permissions:
 |
 | Proposal
 | 
 |
 | Nobody gets to push to master directly. Instead, every push to master
 | is
 | diverted¹ to a temporary branch validating/some id. One of our
 | servers detects the appearance of such a branch and will
 |  * check it out,
 |  * validate it,
 |  * if ok: check if master can still be fast-forward'ed to it,
 |  * if yes: push to master.
 |
 | If it does not validate, or if master has changed in between, the
 | branch
 | will be moved to failed/some id, and a message is sent to the pushing
 | developer², including a tail of the log and a link to the full log.
 |
 | Systems can fail, and maybe nothing validates anymore for reasons not
 | easily fixable. For that case, a backdoor is available: Pushes to the
 | branch master-unchecked will be moved to master, well, unchecked.
 |
 | Benefits:
 |  * It is guaranteed that master has validated at least once somewhere.
 |I.e. no need to ask on the mailing list does master validate for
 | you
 |right now?
 |  * It is now ok to do changes that are obviously correct (comment
 |changes, removing dead code, code reformatting) without having
 |to validate manually, which _saves developer time_ (our most
 | precious
 |resource).
 |
 | Downsides:
 |  * When two commits are racing for master, one will be rejected for
 |being a non-fast-forward commit. The user will then have to merge
 |or rebase and try again.
 |But: The same would be true if he was validating locally (unless he
 |does not validate the merge/rebase, in which case we are again where
 |we don't want to be: Unvalidated versions in master.)
 |
 |
 | Is this something you would what, or could live with?
 |
 | If it is technically feasible (given our hardware constraints,
 | repository structure and git's feature) is a different question, which
 | needs to be discussed afterwards.
 |
 | Greetings,
 | Joachim
 |
 |
 |
 | ¹ Might not be possible transparently
 | (http://stackoverflow.com/questions/21362833), but for the sake of
 | argument and workflow design, assume it was.
 | ² As an approximation: The committer of the latest patch.
 |
 | PS: I'm also considering (but not pushing hard) for a stronger variant
 | as follows. We do not need to discuss that now and should, if at all,
 | start the with the proposal above. I'm just adding it to show where
 | this
 | is going ...
 |
 | Stronger proposal
 | ~
 |
 | Every commit in master needs to be validated!
 | I tend to make sure that all patches on my branch validate individually
 | (git rebase -i -x ./validate is a great tool here, you should use it!
 | ). Contributors who do not want to go through that trouble should then
 | use git merge --squash to produce a single commit from their branch.
 |
 | This 

Re: Summarize #7602

2014-02-04 Thread Carter Schonwald
@Andrew, if you have GHC built with a real GCC, theres no perf issue.
(though if you built GHC with clang, thereis)

I've a bindist thats from the 7.8 branch from 5 days ago that I built wiht
GCC-4.8 here
https://github.com/cartazio/ghc/releases/tag/carters-build-7.8-preRC1
you may need to patch the settings file to point to your own GCC version

point being, no issue if you built with GCC. :)


On Tue, Feb 4, 2014 at 4:31 PM, Austin Seipp aus...@well-typed.com wrote:

 TL;DR OS X suffers a performance hit when build with llvm-gcc/clang.
 The binary builds are built this way. The fix I outlined in the ticket
 (a fast `pthread_getspecific`/`pthread_setspecific`) could still work
 to recover most of the performance, but Apple accidentally messed up
 the Mavericks source code release, so I'm not sure if anything
 regarding the pthread implementation has changed. If it hasn't, then I
 think it should be reasonably easy to fix with some testing.

 (The ticket is a bit of a long and dry read I'm afraid.)

 On Tue, Feb 4, 2014 at 3:22 PM, Andrew Farmer afar...@ittc.ku.edu wrote:
  I know that #7602 has been mentioned as a final loose end in the RC. I
 was
  wondering if someone in the know could summarize its status in regards to
  how it effects GHC users.
 
  Feel free to be blisteringly brief... ;-) I'm just looking for things
 like:
  this is a non-issue on modern OS X/Clang or it'll be fixed soon just
 be
  patient or we've done our part, this is Apple's problem now.
 
  I gave the trac thread a read-through, but there seems to be several
 degrees
  of flexibility/workarounds, so I'm still not sure if this is something I
  should worry about on my OS X machine.
 
  Thanks for your cycles!
  Andrew
 
  ___
  ghc-devs mailing list
  ghc-devs@haskell.org
  http://www.haskell.org/mailman/listinfo/ghc-devs
 



 --
 Regards,

 Austin Seipp, Haskell Consultant
 Well-Typed LLP, http://www.well-typed.com/
 ___
 ghc-devs mailing list
 ghc-devs@haskell.org
 http://www.haskell.org/mailman/listinfo/ghc-devs

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


GHC iOS make binary-dist

2014-02-04 Thread Luke Iannini
Hi folks,

I'm all set to release binaries for GHC iOS (arm and i386 simulator), but
didn't realize the make binary-dist machinery is broken for
cross-compilers.

I'm starting work on it but will be fumbling in the dark a bit so if anyone
has any knowledge or link or ideas on where to look, I'd love to hear them!

Here's the output of make binary-dist on a tree after a successful make
for arm-apple-darwin10 (which will make install perfectly).
http://lpaste.net/99475

Cheers
Luke
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: Cabal release for 7.8

2014-02-04 Thread Johan Tibell
On Mon, Feb 3, 2014 at 11:21 PM, Herbert Valerio Riedel
hvrie...@gmail.comwrote:

 On 2014-02-04 at 06:10:24 +0100, Johan Tibell wrote:
  I guess we need one last cabal release for 7.8? Are we ready for that
 now,
  or do you expect any more 7.8 change that will require cabal changes?

 The RC1 has just started, and I'd rather wait a little more till we're
 closer to a final release...

 PS: We'll also need a 'cabal-install' release, as the current 1.18.0.2
 doesn't build with GHC 7.8RC1


I will make one as soon as the last Cabal release is out. Please let me
know when you're ready for that.

PS2: would it be possible to have

 https://github.com/haskell/cabal/commit/32dddcb1f0495a633ab806e0bcd43816cac67b03
  picked up for 1.18 (assuming it applies cleanly)? It would make it
  easier to generate documentation tarballs for uploading to Hackage
  w/o needing to 'sed' away all 'file:///' prefixes.


This is already in the 1.18 branch as
1eb2181fae2b706ee8024d3f8fef104b5089b1a9. I intend to release the following
in the last patch release in the 1.18 series:

0d5ffeb91075739246627da17bda945aedc6a427 Disable
TemplateHaskell/{dynamic,profiling} tests on Travis.
ee6d1cf5cefe18f6d74ed379af21d92f8b0ae92d Don't use -dylib-install-name on
OS X with GHC  7.8.
e97aa58f68519db54de1c62339459ebb88aed069 Add some more OS aliases.
1eb2181fae2b706ee8024d3f8fef104b5089b1a9 Fix the haddock --html-location=
for relative URLs
43f1e2a5a81688eb186102c684bb4d134ca3c63a Add CPP pragma to D.Simple.Setup
8aea1f994c526f0f43ac5b1b29b04e9ab4565b01 Bump Cabal version number to
1.18.1.3.
cb0ad7a77457ef77c34ab4b6d54e2bdc5a972fa1 Default 'library-for-ghci' to True
on Windows.
345650535993522a0fd75a53a4c681c5d3027030 Small warning.
8d168c5fbbcd01ce0c5ff3d9c4a959b4c0819746 Documentation fix.
e93b01dfb34ab1de6fbfaec1b5805eddbb8a46f5
s/extra-html-files/extra-doc-files/.
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: GHC iOS make binary-dist

2014-02-04 Thread Luke Iannini
OK, I've made a bit of progress here.

Again, I have very little understanding of the binary-dist system so I hope
this isn't nonsense.

The utils/ghc-cabal/dist-install/build/tmp/ghc-cabal and
utils/ghc-pwd/dist-install/build/tmp/ghc-pwd
executables have .a extensions, which is a bug, but more importantly are
built for arm and thus can't be used.

lukexi@thopminkingscape:~/Code/ghc (ghc-7.8 *=)$ file
utils/ghc-cabal/dist-install/build/tmp/ghc-cabal.a
utils/ghc-cabal/dist-install/build/tmp/ghc-cabal.a: Mach-O executable arm

lukexi@thopminkingscape:~/Code/ghc (ghc-7.8 *=)$ file
utils/ghc-pwd/dist-install/build/tmp/ghc-pwd.a
utils/ghc-pwd/dist-install/build/tmp/ghc-pwd.a: Mach-O executable arm

So I tried switching them to the inplace/bin/ghc-cabal and
utils/ghc-pwd/dist-boot/ghc-pwd copies, respectively, with this patch:
http://lpaste.net/99485

This let me build the .tar.gz without errors, and ./configure it fine, but
make install fails here now.
inplace/bin/ghc-cabal register libraries/ghc-prim dist-install
/usr/local/lib/arm-apple-darwin10ghc-7.8.20140129/bin/ghc
/usr/local/lib/arm-apple-darwin10ghc-7.8.20140129/bin/ghc-pkg
/usr/local/lib/arm-apple-darwin10ghc-7.8.20140129 '' '/usr/local'
'/usr/local/lib/arm-apple-darwin10ghc-7.8.20140129'
'/usr/local/share/doc/ghc/html/libraries' NO
ghc-cabal: Bad interface file: dist-install/build/GHC/CString.hi
magic number mismatch: old/corrupt interface file? (wanted 33214052, got
129742)

http://lpaste.net/99486

(looks like a missing dash in the CrossCompilePrefix as well but that's a
minor issue)

Does this offer any clues?

Cheers
Luke


On Tue, Feb 4, 2014 at 6:22 PM, Luke Iannini lukex...@gmail.com wrote:

 Hi folks,

 I'm all set to release binaries for GHC iOS (arm and i386 simulator), but
 didn't realize the make binary-dist machinery is broken for
 cross-compilers.

 I'm starting work on it but will be fumbling in the dark a bit so if
 anyone has any knowledge or link or ideas on where to look, I'd love to
 hear them!

 Here's the output of make binary-dist on a tree after a successful
 make for arm-apple-darwin10 (which will make install perfectly).
 http://lpaste.net/99475

 Cheers
 Luke

___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: GHC iOS make binary-dist

2014-02-04 Thread Luke Iannini
Aha. Looks like the target word size is incorrect in the binary-dist
version.
Here's arm-apple-darwin10ghc --info (i.e., the binary-dist version)
http://lpaste.net/99489

and here's arm-apple-darwin10-ghc --info (from a working 'make install'ed
version)
http://lpaste.net/99490

A bad settings file, I guess. I'll see if I can fix that...
Cheers
Luke


On Tue, Feb 4, 2014 at 8:59 PM, Luke Iannini lukex...@gmail.com wrote:

 OK, I've made a bit of progress here.

 Again, I have very little understanding of the binary-dist system so I
 hope this isn't nonsense.

 The utils/ghc-cabal/dist-install/build/tmp/ghc-cabal and 
 utils/ghc-pwd/dist-install/build/tmp/ghc-pwd
 executables have .a extensions, which is a bug, but more importantly are
 built for arm and thus can't be used.

 lukexi@thopminkingscape:~/Code/ghc (ghc-7.8 *=)$ file
 utils/ghc-cabal/dist-install/build/tmp/ghc-cabal.a
 utils/ghc-cabal/dist-install/build/tmp/ghc-cabal.a: Mach-O executable arm

 lukexi@thopminkingscape:~/Code/ghc (ghc-7.8 *=)$ file
 utils/ghc-pwd/dist-install/build/tmp/ghc-pwd.a
 utils/ghc-pwd/dist-install/build/tmp/ghc-pwd.a: Mach-O executable arm

 So I tried switching them to the inplace/bin/ghc-cabal and
 utils/ghc-pwd/dist-boot/ghc-pwd copies, respectively, with this patch:
 http://lpaste.net/99485

 This let me build the .tar.gz without errors, and ./configure it fine, but
 make install fails here now.
 inplace/bin/ghc-cabal register libraries/ghc-prim dist-install
 /usr/local/lib/arm-apple-darwin10ghc-7.8.20140129/bin/ghc
 /usr/local/lib/arm-apple-darwin10ghc-7.8.20140129/bin/ghc-pkg
 /usr/local/lib/arm-apple-darwin10ghc-7.8.20140129 '' '/usr/local'
 '/usr/local/lib/arm-apple-darwin10ghc-7.8.20140129'
 '/usr/local/share/doc/ghc/html/libraries' NO
 ghc-cabal: Bad interface file: dist-install/build/GHC/CString.hi
 magic number mismatch: old/corrupt interface file? (wanted 33214052, got
 129742)

 http://lpaste.net/99486

 (looks like a missing dash in the CrossCompilePrefix as well but that's a
 minor issue)

 Does this offer any clues?

 Cheers
 Luke


 On Tue, Feb 4, 2014 at 6:22 PM, Luke Iannini lukex...@gmail.com wrote:

 Hi folks,

 I'm all set to release binaries for GHC iOS (arm and i386 simulator), but
 didn't realize the make binary-dist machinery is broken for
 cross-compilers.

 I'm starting work on it but will be fumbling in the dark a bit so if
 anyone has any knowledge or link or ideas on where to look, I'd love to
 hear them!

 Here's the output of make binary-dist on a tree after a successful
 make for arm-apple-darwin10 (which will make install perfectly).
 http://lpaste.net/99475

 Cheers
 Luke



___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


Re: GHC iOS make binary-dist

2014-02-04 Thread Luke Iannini
After fixing that, and the prefix missing a -, I've got a working make
install! Hurray!

I'll tidy this up and make a patch.

Cheers
Luke

On Tue, Feb 4, 2014 at 9:24 PM, Luke Iannini lukex...@gmail.com wrote:

 Aha. Looks like the target word size is incorrect in the binary-dist
 version.
 Here's arm-apple-darwin10ghc --info (i.e., the binary-dist version)
 http://lpaste.net/99489

 and here's arm-apple-darwin10-ghc --info (from a working 'make install'ed
 version)
 http://lpaste.net/99490

 A bad settings file, I guess. I'll see if I can fix that...
 Cheers
 Luke


 On Tue, Feb 4, 2014 at 8:59 PM, Luke Iannini lukex...@gmail.com wrote:

 OK, I've made a bit of progress here.

 Again, I have very little understanding of the binary-dist system so I
 hope this isn't nonsense.

 The utils/ghc-cabal/dist-install/build/tmp/ghc-cabal and 
 utils/ghc-pwd/dist-install/build/tmp/ghc-pwd
 executables have .a extensions, which is a bug, but more importantly are
 built for arm and thus can't be used.

 lukexi@thopminkingscape:~/Code/ghc (ghc-7.8 *=)$ file
 utils/ghc-cabal/dist-install/build/tmp/ghc-cabal.a
 utils/ghc-cabal/dist-install/build/tmp/ghc-cabal.a: Mach-O executable arm

 lukexi@thopminkingscape:~/Code/ghc (ghc-7.8 *=)$ file
 utils/ghc-pwd/dist-install/build/tmp/ghc-pwd.a
 utils/ghc-pwd/dist-install/build/tmp/ghc-pwd.a: Mach-O executable arm

 So I tried switching them to the inplace/bin/ghc-cabal and
 utils/ghc-pwd/dist-boot/ghc-pwd copies, respectively, with this patch:
 http://lpaste.net/99485

 This let me build the .tar.gz without errors, and ./configure it fine,
 but make install fails here now.
 inplace/bin/ghc-cabal register libraries/ghc-prim dist-install
 /usr/local/lib/arm-apple-darwin10ghc-7.8.20140129/bin/ghc
 /usr/local/lib/arm-apple-darwin10ghc-7.8.20140129/bin/ghc-pkg
 /usr/local/lib/arm-apple-darwin10ghc-7.8.20140129 '' '/usr/local'
 '/usr/local/lib/arm-apple-darwin10ghc-7.8.20140129'
 '/usr/local/share/doc/ghc/html/libraries' NO
 ghc-cabal: Bad interface file: dist-install/build/GHC/CString.hi
 magic number mismatch: old/corrupt interface file? (wanted 33214052, got
 129742)

 http://lpaste.net/99486

 (looks like a missing dash in the CrossCompilePrefix as well but that's a
 minor issue)

 Does this offer any clues?

 Cheers
 Luke


 On Tue, Feb 4, 2014 at 6:22 PM, Luke Iannini lukex...@gmail.com wrote:

 Hi folks,

 I'm all set to release binaries for GHC iOS (arm and i386 simulator),
 but didn't realize the make binary-dist machinery is broken for
 cross-compilers.

 I'm starting work on it but will be fumbling in the dark a bit so if
 anyone has any knowledge or link or ideas on where to look, I'd love to
 hear them!

 Here's the output of make binary-dist on a tree after a successful
 make for arm-apple-darwin10 (which will make install perfectly).
 http://lpaste.net/99475

 Cheers
 Luke




___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs


ghc-ios 7.8 working build

2014-02-04 Thread Luke Iannini
Hi all,

I believe I've worked around the issues with make binary-dist and
cross-compilation.

This should be a working binary for iOS devices
https://github.com/ghc-ios/ghc-ios-scripts/releases/download/7.8-rc1-device/ghc-7.8.20140129-arm-apple-ios.tar.bz2

Please try ./configure  make install (it should live happily next to your
current ghc as arm-apple-darwin10-ghc) and let me know so we can have a
build ready for 7.8 RC2!

Cheers
Luke
___
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs