Merge branch 'master' into validity-in-stackage

This commit is contained in:
Jens Petersen 2017-02-16 11:37:09 +09:00 committed by GitHub
commit 89319fa04a
9 changed files with 567 additions and 233 deletions

View File

@ -11,7 +11,7 @@ addons:
- libgmp-dev - libgmp-dev
env: env:
- GHCVER=8.0.1 - GHCVER=8.0.2
install: install:
# Download and unpack the stack executable # Download and unpack the stack executable

View File

@ -23,8 +23,10 @@ process works:
The typical story on pull requests is: If Travis accepts it and the The typical story on pull requests is: If Travis accepts it and the
author only added packages under his/her own name, merge it. If the author only added packages under his/her own name, merge it. If the
build later fails (see "Adding Debian packages for required system tools or libraries"), build later fails (see [Adding Debian packages]), then block the
then block the package until it's fixed. package until it's fixed.
[Adding Debian packages]: https://github.com/fpco/stackage/blob/master/CURATORS.md#adding-debian-packages-for-required-system-tools-or-libraries
If benchmarks, haddocks, or test suites fails at this point we If benchmarks, haddocks, or test suites fails at this point we
typically also block the package until these issues are fixed. This in typically also block the package until these issues are fixed. This in
@ -177,8 +179,14 @@ the maintainers of those packages.
### Adding Debian packages for required system tools or libraries ### Adding Debian packages for required system tools or libraries
Additional (non-Haskell) system libraries or tools should be added to `stackage/debian-bootstrap.sh`. Additional (non-Haskell) system libraries or tools should be added to `stackage/debian-bootstrap.sh`.
Committing the changes to a branch should trigger a DockerHub. Normally only the `nightly` branch needs to be updated After you've committed those changes, merging them into the `nightly` branch should
since new packages are not added to the current lts release. trigger a DockerHub build. Simply run:
```bash
$ git checkout nightly
$ git merge master
$ git push
```
Use [Ubuntu Package content search](http://packages.ubuntu.com/) to determine which package provides particular dev files (it defaults to xenial which is the version used to build Nightly). Use [Ubuntu Package content search](http://packages.ubuntu.com/) to determine which package provides particular dev files (it defaults to xenial which is the version used to build Nightly).
@ -337,3 +345,24 @@ errors for builds, tests and benchmarks.
1. Add public ssh key to `~/.ssh/authorized_keys` on build server 1. Add public ssh key to `~/.ssh/authorized_keys` on build server
2. Add to fpco/stackage project. 2. Add to fpco/stackage project.
## Dealing with a new GHC release
As mentioned in the [GHC upgrade note], the major impact of a new GHC release
is on the packages that are causing upper bounds to be put in place. In order
to minimise out-of-date breakage and allow maintainers to have a solid chance
of getting their packages into the newest LTS, we try to do the following:
Make an early announcement (in the form of a blog post, typically) of the new
GHC release on the nightly build and the planned deadline for the new LTS release.
Make it clear, that in the time coming up to this, we hope package maintainers
will upgrade their packages to allow for the new GHC release.
We prefer to prune packages causing upper bounds constraints **after** the LTS
release to allow the maximum amount of packages to get into the newest LTS.
After the first LTS release, the package pruning process may begin in the
nightly build in order to move forward with getting the latest versions of
packages compatible with the new GHC release.
[GHC upgrade note]: https://github.com/fpco/stackage/blob/master/MAINTAINERS.md#upgrading-to-a-new-ghc-version

View File

@ -2,7 +2,7 @@ FROM fpco/pid1:16.04
ENV HOME /home/stackage ENV HOME /home/stackage
ENV LANG en_US.UTF-8 ENV LANG en_US.UTF-8
ENV PATH /opt/ghc/8.0.1/bin:/usr/sbin:/usr/bin:/sbin:/bin ENV PATH /opt/ghc/8.0.2/bin:/usr/sbin:/usr/bin:/sbin:/bin
ADD debian-bootstrap.sh /tmp/debian-bootstrap.sh ADD debian-bootstrap.sh /tmp/debian-bootstrap.sh
RUN /tmp/debian-bootstrap.sh && rm /tmp/debian-bootstrap.sh RUN /tmp/debian-bootstrap.sh && rm /tmp/debian-bootstrap.sh

View File

@ -24,7 +24,7 @@ After doing that, send a pull request (with a commit message like "add foo-bar")
If you want to make sure that the package builds against the newest versions of all dependecies you can do this: If you want to make sure that the package builds against the newest versions of all dependecies you can do this:
``` ```
$ cabal update $ cabal update
$ ghc --version # Should give v8.0.1 $ ghc --version # Should give v8.0.2
$ cabal get PACKAGE-VERSION # e.g. aeson-0.11.2.1 $ cabal get PACKAGE-VERSION # e.g. aeson-0.11.2.1
$ cd PACKAGE-VERSION $ cd PACKAGE-VERSION
$ cabal sandbox init # Should give "Creating a new sandbox" and not "Using an existing sandbox". $ cabal sandbox init # Should give "Creating a new sandbox" and not "Using an existing sandbox".

View File

@ -84,3 +84,42 @@ The following describes at a high level the series of steps for processing
1. Load up most recent build plan 1. Load up most recent build plan
2. Convert build plan into constraints for next build 2. Convert build plan into constraints for next build
3. Continue from step (3) above 3. Continue from step (3) above
Frequently Asked Questions
--------------------------
__Why does Stackage have an older version of a package than Hackage?__
There are a number of answers to this question:
* Simplest reason: how old of a Stackage snapshot are you using? Once a
snapshot is created, it's frozen for all time. So if you use
nightly-2016-01-01, by the time you get to 2018, it will be pretty dated.
* If you're using an LTS snapshot: we lock down major versions when
first creating an LTS run, so subsequent minor versions will not get
new versions necessary. For example, if LTS 6.0 has `foo` version
1.2.3, and the author immediately thereafter releases a version
1.3.0 and never releases another 1.2.\* version, you'll never get
another update in the LTS 6 line
* Sometimes we have upper bounds in place because other packages have
problems with newer versions of dependencies. Open up the
[build-constraints file](https://github.com/fpco/stackage/blob/master/build-constraints.yaml)
and search for "Stackage upper bounds"
* Wired-in packages - those that ship with GHC and cannot be upgraded,
and packages depending on them - are fixed to GHC versions. Common
examples of this are containers and transformers. There's a lot more
information on this in
[an FP Complete blog post](https://www.fpcomplete.com/blog/2014/05/lenient-lower-bounds)
__How long do you maintain an LTS build?__
We only guarantee that we will maintain a single LTS major version at
a time, and that it will be maintained for at least three months. This
is the
[originally proposed support window](https://www.fpcomplete.com/blog/2014/12/backporting-bug-fixes),
and hasn't changed since then.
That said, we do maintain the capability to keep multiple LTS runs
operational in parallel, and with LTS 6 and 7 in fact did so. We
aren't changing our guarantees yet on longevity of a release, but are
trying to push out the bounds a bit farther.

View File

@ -121,7 +121,7 @@ docker run $ARGS_PREBUILD $IMAGE /bin/bash -c "stackage-curator check --plan-fil
# Now do the actual build. We need to first set the owner of the home directory # Now do the actual build. We need to first set the owner of the home directory
# correctly, so we run the command as root, change owner, and then use sudo to # correctly, so we run the command as root, change owner, and then use sudo to
# switch back to the current user # switch back to the current user
docker run $ARGS_BUILD $IMAGE /bin/bash -c "chown $USER $HOME && exec sudo -E -u $USER env \"HOME=$HOME\" \"PATH=\$PATH\" stackage-curator make-bundle --plan-file $PLAN_FILE --docmap-file $DOCMAP_FILE --bundle-file $BUNDLE_FILE --target $TARGET" docker run $ARGS_BUILD $IMAGE nice -n 15 /bin/bash -c "chown $USER $HOME && exec sudo -E -u $USER env \"HOME=$HOME\" \"PATH=\$PATH\" stackage-curator make-bundle --jobs 4 --plan-file $PLAN_FILE --docmap-file $DOCMAP_FILE --bundle-file $BUNDLE_FILE --target $TARGET"
# Make sure we actually need this snapshot. We used to perform this check # Make sure we actually need this snapshot. We used to perform this check
# exclusively before building. Now we perform it after as well for the case of # exclusively before building. Now we perform it after as well for the case of

File diff suppressed because it is too large Load Diff

2
check
View File

@ -3,4 +3,4 @@
# Convenience script for checking constraints locally # Convenience script for checking constraints locally
cd `dirname $0` cd `dirname $0`
exec stack exec --resolver ghc-8.0.1 stackage-curator check exec stack exec --resolver ghc-8.0.2 stackage-curator check

View File

@ -25,7 +25,7 @@ add-apt-repository -y ppa:marutter/rrutter
#add-apt-repository -y ppa:openstack-ubuntu-testing/icehouse #add-apt-repository -y ppa:openstack-ubuntu-testing/icehouse
# Set the GHC version # Set the GHC version
GHCVER=8.0.1 GHCVER=8.0.2
# Get Stack # Get Stack
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 575159689BEFB442 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 575159689BEFB442
@ -43,6 +43,7 @@ apt-get install -y \
curl \ curl \
freeglut3-dev \ freeglut3-dev \
git \ git \
gradle \
libadns1-dev \ libadns1-dev \
libaio1 \ libaio1 \
libalut-dev \ libalut-dev \
@ -92,6 +93,10 @@ apt-get install -y \
libpcap0.8-dev \ libpcap0.8-dev \
libpq-dev \ libpq-dev \
libsdl2-dev \ libsdl2-dev \
libsdl2-mixer-dev \
libsdl2-image-dev \
libsdl2-gfx-dev \
libsdl2-ttf-dev \
libsnappy-dev \ libsnappy-dev \
libsndfile1-dev \ libsndfile1-dev \
libsqlite3-dev \ libsqlite3-dev \