Testing invasive proposals with Hackager

In many discussions we make guesses about how much code proposals like Functor => Monad would break. You can use https://github.com/dterei/Hackager to build all of Hackage (preferably in a VM). Of course many packages have external dependencies, so I'd like to share the following list of packages to save you some time. (These are the names of packages suited for a Ubuntu 13.04 VM, and with these installed, 2800 packages are successfully built and 1700 failing, so it's quite good coverage. If you find more packages that improve on this, please add them.) acl-dev attr-dev binutils-dev cfitsio-dev expect-dev freeglut3-dev libadns1-dev libalure-dev libasound-dev libaspell-dev libatlas-dev libaugeas-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libbibutils-dev libbluetooth-dev libbz2-dev libcal3d12-dev libcmph-dev libcrack2-dev libcrypto++-dev libcsound64-dev libctemplate-dev libcurl-dev libcv-dev libcwiid-dev libdb-dev libdevil-dev libdpkg-dev libev-dev libevent-dev libexif-dev libfam-dev libfcgi-dev libfftw3-dev libfltk1.3-dev libfreenect-dev libftgl-dev libfuse-dev libgd2-xpm-dev libgeoip-dev libglfw-dev libglpk-dev libgmime-2.6-dev libgnome-keyring-dev libgnutls-dev libgnutls-dev libgpcl-dev libhighgui-dev libimlib2-dev libinsighttoolkit4-dev libjasper-dev libjudy-dev libkyotocabinet-dev liblapack-dev libldap2-dev libldap2-dev libleveldb-dev libmagic-dev libmarkdown2-dev libmecab-dev libmpfr-dev libmtp-dev libmx-dev libmysqlclient-dev libncurses-dev libncurses-dev libnotmuch-dev libobjc-4.7-dev libodbc1 libode-dev libogg-dev libois-dev libopenal-dev libpam0g-dev libpcap-dev libpoker-eval-dev libportaudio-dev libpulse-dev libqd-dev libqrencode-dev libraw1394-dev libreadline-dev libscsynth1 libselinux-dev libsnappy-dev libsndfile1-dev libsqlite3-dev libssl-dev libssl-dev libst-dev libsvm-dev libtalloc-dev libtbb-dev libtheora-dev libtiff-dev libtokyocabinet-dev libtokyotyrant-dev libtre-dev libuuid-dev libv4l-dev libvxl1-dev libxapian-dev libxen-dev libxerces-c-dev libxine-dev libxmmsclient-dev libxosd-dev libxqilla-dev libxss-dev libxtst-dev libyaml-dev libz-dev libzephyr-dev libzmq-dev linux-libc-dev tcl-dev wx2.8-headers xmms2-dev

On 13 June 2013 09:59, Niklas Hambüchen
In many discussions we make guesses about how much code proposals like Functor => Monad would break.
You can use https://github.com/dterei/Hackager to build all of Hackage (preferably in a VM).
Of course many packages have external dependencies, so I'd like to share the following list of packages to save you some time.
(These are the names of packages suited for a Ubuntu 13.04 VM, and with these installed, 2800 packages are successfully built and 1700 failing, so it's quite good coverage. If you find more packages that improve on this, please add them.)
awesome! How do we add packages to the list; do you have a github repo for it? Conrad.

On 13/06/13 10:06, Conrad Parker wrote:
How do we add packages to the list; do you have a github repo for it?
I've put it on haskell-pkg-janitors: https://github.com/haskell-pkg-janitors/hackage-build-deps/blob/master/ubunt...

Hi, Am Donnerstag, den 13.06.2013, 09:59 +0800 schrieb Niklas Hambüchen:
In many discussions we make guesses about how much code proposals like Functor => Monad would break.
You can use https://github.com/dterei/Hackager to build all of Hackage (preferably in a VM).
Of course many packages have external dependencies, so I'd like to share the following list of packages to save you some time.
Great tool. Does someone have the resources to run it regularly (i.e. daily), dump the results and the diff-to-previous run somewhere and link the status (currently building/not building) on the hackage package? More CI-like data and testing is always good! How much overlap is there between this tool and stackage? Greetings, Joachim -- Joachim “nomeata” Breitner mail@joachim-breitner.de • http://www.joachim-breitner.de/ Jabber: nomeata@joachim-breitner.de • GPG-Key: 0x4743206C Debian Developer: nomeata@debian.org

2013/6/13 Joachim Breitner
Hi,
Am Donnerstag, den 13.06.2013, 09:59 +0800 schrieb Niklas Hambüchen:
In many discussions we make guesses about how much code proposals like Functor => Monad would break.
You can use https://github.com/dterei/Hackager to build all of Hackage (preferably in a VM).
Of course many packages have external dependencies, so I'd like to share the following list of packages to save you some time.
Great tool. Does someone have the resources to run it regularly (i.e. daily), dump the results and the diff-to-previous run somewhere and link the status (currently building/not building) on the hackage package? More CI-like data and testing is always good!
I will give it a try in a few days, see if it is possible for me to do it daily. Thu

2013/6/13 Vo Minh Thu
2013/6/13 Joachim Breitner
Hi,
Am Donnerstag, den 13.06.2013, 09:59 +0800 schrieb Niklas Hambüchen:
In many discussions we make guesses about how much code proposals like Functor => Monad would break.
You can use https://github.com/dterei/Hackager to build all of Hackage (preferably in a VM).
Of course many packages have external dependencies, so I'd like to share the following list of packages to save you some time.
Great tool. Does someone have the resources to run it regularly (i.e. daily), dump the results and the diff-to-previous run somewhere and link the status (currently building/not building) on the hackage package? More CI-like data and testing is always good!
I will give it a try in a few days, see if it is possible for me to do it daily.
Thu
I just read this note on Hackager's README: "For example, here is a run with GHC, no special options and using 4 threads (note that this generally takes a long time, i.e. a few days):"

I was thinking about something similar some time ago, but not just
testing but also fixing things automatically. Taking for example
Semigroup => Monoid this would break in places where you have instance
for Monoid but don't have instance for Semigroup. But if you have
instance for Monoid making instance for Semigroup is straightforward:
instance Semigroup <TypeYouAreFixing> where
(<>) = <copy code from mappend for that type>
I'm still kind of new to Haskell, so I'm not sure how hard such,
TemplateHaskell-like automagic migration tool, would be to make, but
I feel like such a tool would be of incredible importance for the
community. Because otherwise, without such thing, there are usually
two ways a language can evolve:
1. Caring for backwards compatibility, and accumulating mistakes
like that over time, and becoming more and more like crap.
2. Making fixes that break everyones code, and because of that
being ignored by the industry.
I like Haskell because it usually takes the second route, but as
community grows it will be less and less the case. With such a tool
you could have best of both worlds.
Though I assume that somebody already thought of that and come to the
conclusion that in general case you cannot make such tool because
Gödel is a bastard that breaks everyones toys, or something along this
lines.
On Thu, Jun 13, 2013 at 12:54 PM, Niklas Hambüchen
On 13/06/13 18:36, Vo Minh Thu wrote:
"For example, here is a run with GHC, no special options and using 4 threads (note that this generally takes a long time, i.e. a few days):"
My builds finished in < 10 hours on an i7.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Roman Cheplyaka has written a tool called HasFix for updating source based on new versions of libraries. The presentation on it is here http://ro-che.info/docs/ and the code is at https://github.com/feuerbach/hasfix Perhaps it could be pressed into use for automatic update of historical code? Alan On Thu, Jun 13, 2013 at 6:30 PM, Maksymilian Owsianny < maksymilian.owsianny@gmail.com> wrote:
I was thinking about something similar some time ago, but not just testing but also fixing things automatically. Taking for example Semigroup => Monoid this would break in places where you have instance for Monoid but don't have instance for Semigroup. But if you have instance for Monoid making instance for Semigroup is straightforward:
instance Semigroup <TypeYouAreFixing> where (<>) = <copy code from mappend for that type>
I'm still kind of new to Haskell, so I'm not sure how hard such, TemplateHaskell-like automagic migration tool, would be to make, but I feel like such a tool would be of incredible importance for the community. Because otherwise, without such thing, there are usually two ways a language can evolve: 1. Caring for backwards compatibility, and accumulating mistakes like that over time, and becoming more and more like crap. 2. Making fixes that break everyones code, and because of that being ignored by the industry.
I like Haskell because it usually takes the second route, but as community grows it will be less and less the case. With such a tool you could have best of both worlds.
Though I assume that somebody already thought of that and come to the conclusion that in general case you cannot make such tool because Gödel is a bastard that breaks everyones toys, or something along this lines.
On Thu, Jun 13, 2013 at 12:54 PM, Niklas Hambüchen
wrote: On 13/06/13 18:36, Vo Minh Thu wrote:
"For example, here is a run with GHC, no special options and using 4 threads (note that this generally takes a long time, i.e. a few days):"
My builds finished in < 10 hours on an i7.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Hmm... I'll have to look into it, but it looks promising. Now if we
could make hackage run such fixes automatically whilst sending pull
requests to authors... then maybe we could even fix The Great Num
Fiasco of 98.
On Thu, Jun 13, 2013 at 8:45 PM, AlanKim Zimmerman
Roman Cheplyaka has written a tool called HasFix for updating source based on new versions of libraries.
The presentation on it is here http://ro-che.info/docs/ and the code is at https://github.com/feuerbach/hasfix
Perhaps it could be pressed into use for automatic update of historical code?
Alan
On Thu, Jun 13, 2013 at 6:30 PM, Maksymilian Owsianny < maksymilian.owsianny@gmail.com> wrote:
I was thinking about something similar some time ago, but not just testing but also fixing things automatically. Taking for example Semigroup => Monoid this would break in places where you have instance for Monoid but don't have instance for Semigroup. But if you have instance for Monoid making instance for Semigroup is straightforward:
instance Semigroup <TypeYouAreFixing> where (<>) = <copy code from mappend for that type>
I'm still kind of new to Haskell, so I'm not sure how hard such, TemplateHaskell-like automagic migration tool, would be to make, but I feel like such a tool would be of incredible importance for the community. Because otherwise, without such thing, there are usually two ways a language can evolve: 1. Caring for backwards compatibility, and accumulating mistakes like that over time, and becoming more and more like crap. 2. Making fixes that break everyones code, and because of that being ignored by the industry.
I like Haskell because it usually takes the second route, but as community grows it will be less and less the case. With such a tool you could have best of both worlds.
Though I assume that somebody already thought of that and come to the conclusion that in general case you cannot make such tool because Gödel is a bastard that breaks everyones toys, or something along this lines.
On Thu, Jun 13, 2013 at 12:54 PM, Niklas Hambüchen
wrote: On 13/06/13 18:36, Vo Minh Thu wrote:
"For example, here is a run with GHC, no special options and using 4 threads (note that this generally takes a long time, i.e. a few days):"
My builds finished in < 10 hours on an i7.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 13/06/13 23:13, Maksymilian Owsianny wrote:
Hmm... I'll have to look into it, but it looks promising. Now if we could make hackage run such fixes automatically whilst sending pull requests to authors... then maybe we could even fix The Great Num Fiasco of 98.
I don't know about automatic pull requests (perhaps e-mail to the maintainer with a patch is a far better and easier to implement idea) but something to let maintainers know that their package no longer builds on GHC HEAD (per request of the maintainer) or with a new proposal in place would be a very useful tool to have. - -- Mateusz K. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQIcBAEBAgAGBQJRuk0qAAoJEM1mucMq2pqX0IAQAINWmBK4ZI62+zPkEkyH9lGh hs0Hb876GOv/BJBGiVAzttWjeuMXTiUGrNcc+ZH6AKxiSmaVBBAqNdvFWAIobGY0 6WfHWF6gqUtidY4dboQXGg6vWRw2ONaD7yH9CUbpTSUVb9zFBKO/OLc+4i41vrwZ 0ZCx4lNZiM0MvBtnyJTuEkUb0hYeAW1ty32gFEEwNwqeInyGXr77TElXCVyXUOXC BpW+pZv7AeCnuQZQpTZKTGQd40SCv0byrn6frFB+kZBJVO/Qga7/6DhbXDuuke07 VjG9Jt7EMmqFy6E2UZMZZYjU6k7g/brUkylV0SDBVheeWpJpxId9eFXuyYQAhpBf y/sjW9p7PcvPBESTXi7sjQtq/qY3gwdc0tZXbrgEBzhkWj4XYojJ4SxsULTkmPPo NWjCYmaFgV84ODtedsekNP5n1pJZCD+HPZWkIKw24lJvhT/MoG0Yj2EsMt2h/VZR U7M5tk5/XhjC4s9JeXdfNk3TdX6SccRT0a1cqxpOznZGR3jDwSjbN9dLu77k7r1w LQ6NVZJvYo0IRDs6KhxBS0UpvRKxSUcNRvlgamtUbNGhRGHmHCTN5BQY/4DrYpZo LEtZjtdM9Ndj8FBwzyfzeOLzDKCpn2uOAT2MoiHBgq0pM3WhNNHOxBH3cJSony0l tbuiW4Mj83vL1rYthXDR =g9we -----END PGP SIGNATURE-----

To make it clear, it's not yet written, although I'll start spending
more time on it soon.
So far I've been working on the haskell-suite set of libraries that are
necessary to implement HasFix.
(https://github.com/haskell-suite)
Roman
* AlanKim Zimmerman
Roman Cheplyaka has written a tool called HasFix for updating source based on new versions of libraries.
The presentation on it is here http://ro-che.info/docs/ and the code is at https://github.com/feuerbach/hasfix
Perhaps it could be pressed into use for automatic update of historical code?
Alan
On Thu, Jun 13, 2013 at 6:30 PM, Maksymilian Owsianny < maksymilian.owsianny@gmail.com> wrote:
I was thinking about something similar some time ago, but not just testing but also fixing things automatically. Taking for example Semigroup => Monoid this would break in places where you have instance for Monoid but don't have instance for Semigroup. But if you have instance for Monoid making instance for Semigroup is straightforward:
instance Semigroup <TypeYouAreFixing> where (<>) = <copy code from mappend for that type>
I'm still kind of new to Haskell, so I'm not sure how hard such, TemplateHaskell-like automagic migration tool, would be to make, but I feel like such a tool would be of incredible importance for the community. Because otherwise, without such thing, there are usually two ways a language can evolve: 1. Caring for backwards compatibility, and accumulating mistakes like that over time, and becoming more and more like crap. 2. Making fixes that break everyones code, and because of that being ignored by the industry.
I like Haskell because it usually takes the second route, but as community grows it will be less and less the case. With such a tool you could have best of both worlds.
Though I assume that somebody already thought of that and come to the conclusion that in general case you cannot make such tool because Gödel is a bastard that breaks everyones toys, or something along this lines.
On Thu, Jun 13, 2013 at 12:54 PM, Niklas Hambüchen
wrote: On 13/06/13 18:36, Vo Minh Thu wrote:
"For example, here is a run with GHC, no special options and using 4 threads (note that this generally takes a long time, i.e. a few days):"
My builds finished in < 10 hours on an i7.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (8)
-
AlanKim Zimmerman
-
Conrad Parker
-
Joachim Breitner
-
Maksymilian Owsianny
-
Mateusz Kowalczyk
-
Niklas Hambüchen
-
Roman Cheplyaka
-
Vo Minh Thu