Skip to content

Commit

Permalink
Merge commit 'origin/rc/v1.2.0^'
Browse files Browse the repository at this point in the history
  • Loading branch information
borsboom committed Sep 10, 2016
2 parents ffaf1b4 + a2c4141 commit 9b1eea6
Show file tree
Hide file tree
Showing 23 changed files with 298 additions and 84 deletions.
105 changes: 98 additions & 7 deletions ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,48 @@ Bug fixes:

Release notes:

* The fix for
[#2175](https://github.com/commercialhaskell/stack/issues/2175)
entails that stack must perform a full clone of a large Git repo of
Hackage meta-information. The total download size is about 200 MB.
Please be aware of this when upgrading your stack installation.
* On many Un*x systems, stack can now be installed with a simple
one-liner: `wget -qO- https://get.haskellstack.org/ | sh`
* 64-bit GHC bindists have been built for Linux systems with
libtinfo6/libncurses6 (such as Fedora 24 and Arch Linux), and `stack setup`
will detect when to use them.

Major changes:

* Add `stack hoogle` command.
[#55](https://github.com/commercialhaskell/stack/issues/55)
* Support for absolute file path in `url` field of `setup-info` or `--ghc-bindist`
* Add support for rendering GHCi scripts targeting different GHCi like
applications
[#2457](https://github.com/commercialhaskell/stack/pull/2457)

Behavior changes:

* Remove `stack ide start` and `stack ide load-targets` commands.
[#2178](https://github.com/commercialhaskell/stack/issues/2178)
* Support .buildinfo files in `stack ghci`.
[#2242](https://github.com/commercialhaskell/stack/pull/2242)
* Support -ferror-spans syntax in GHC error messages.
* Avoid unpacking ghc to `/tmp`
[#996](https://github.com/commercialhaskell/stack/issues/996)
* The Linux `gmp4` GHC bindist is no longer considered a full-fledged GHC
variant and can no longer be specified using the `ghc-variant` option,
and instead is treated more like a slightly different platform.

Other enhancements:

* Nix & docker can be activated at the same time, in order to run stack in a nix-shell
in a container, preferably from an image already containing the nix dependencies
in its /nix/store
* Use the `store` package for binary serialization of most caches.
* Only require minor version match for Docker stack exe.
This way, we can make patch releases for version bounds and similar
build issues without needing to upload new binaries for Docker.
* Stack/Nix: Passes the right ghc derivation as an argument to the `shell.nix` when a
custom `shell.nix` is used
See [#2243](https://github.com/commercialhaskell/stack/issues/2243)
Expand All @@ -47,13 +80,36 @@ Other enhancements:
See [#2259](https://github.com/commercialhaskell/stack/issues/2259)
* Perform some subprocesses during setup concurrently, slightly speeding up most
commands. [#2346](https://github.com/commercialhaskell/stack/pull/2346)
* Support for absolute file path in `url` field of `setup-info` or `--ghc-bindist`
* `stack setup` no longer unpacks to the system temp dir on posix systems.
[#996](https://github.com/commercialhaskell/stack/issues/996)
* `stack setup` detects libtinfo6 and can downloads alternate GHC bindists
* `stack setup` detects libtinfo6 and ncurses6 and can download alternate GHC
bindists [#257](https://github.com/commercialhaskell/stack/issues/257)
[#2302](https://github.com/commercialhaskell/stack/issues/2302).
* `stack setup` detects Linux ARMv7 downloads appropriate GHC bindist
[#2103](https://github.com/commercialhaskell/stack/issues/2103)
* Custom `stack` binaries list dependency versions in output for `--version`.
See [#2222](https://github.com/commercialhaskell/stack/issues/2222)
and [#2450](https://github.com/commercialhaskell/stack/issues/2450).
* Use a pretty printer to output dependency resolution errors.
[#1912](https://github.com/commercialhaskell/stack/issues/1912)
* Remove the `--os` flag
[#2227](https://github.com/commercialhaskell/stack/issues/2227)
* Add 'netbase' and 'ca-certificates' as dependency for .deb packages.
[#2293](https://github.com/commercialhaskell/stack/issues/2293).
* Add `stack ide targets` command.
* Enhance debug logging with subprocess timings.
* Pretty-print YAML parse errors
[#2374](https://github.com/commercialhaskell/stack/issues/2374)
* Clarify confusing `stack setup` output
[#2314](https://github.com/commercialhaskell/stack/issues/2314)
* Delete `Stack.Types` multimodule to improve build times
[#2405](https://github.com/commercialhaskell/stack/issues/2405)
* Remove spurious newlines in build logs
[#2418](https://github.com/commercialhaskell/stack/issues/2418)
* Interpreter: Provide a way to hide implicit packages
[#1208](https://github.com/commercialhaskell/stack/issues/1208)
* Check executability in exec lookup
[#2489](https://github.com/commercialhaskell/stack/issues/2489)

Bug fixes:

Expand All @@ -63,12 +119,50 @@ Bug fixes:
[#2225](https://github.com/commercialhaskell/stack/issues/2225)
* Detect resolver change in `stack solver`
[#2252](https://github.com/commercialhaskell/stack/issues/2252)
* Fix a bug in docker image creation where the wrong base image was
selected
[#2376](https://github.com/commercialhaskell/stack/issues/2376)
* Ignore special entries when unpacking tarballs
[#2361](https://github.com/commercialhaskell/stack/issues/2361)
* Fixes src directory pollution of `style.css` and `highlight.js` with GHC 8's
haddock [#2429](https://github.com/commercialhaskell/stack/issues/2429)
* Remove the `--os` flag
[#2227](https://github.com/commercialhaskell/stack/issues/2227)
* Handle filepaths with spaces in `stack ghci`
[#2266](https://github.com/commercialhaskell/stack/issues/2266)
* Apply ghc-options to snapshot packages
[#2289](https://github.com/commercialhaskell/stack/issues/2289)
* stack sdist: Fix timestamp in tarball
[#2394](https://github.com/commercialhaskell/stack/pull/2394)
* Allow global Stack arguments with a script
[#2316](https://github.com/commercialhaskell/stack/issues/2316)
* Inconsistency between ToJSON and FromJSON instances of PackageLocation
[#2412](https://github.com/commercialhaskell/stack/pull/2412)
* Perform Unicode normalization on filepaths
[#1810](https://github.com/commercialhaskell/stack/issues/1810)
* Solver: always keep ghc wired-in as hard constraints
[#2453](https://github.com/commercialhaskell/stack/issues/2453)
* Support OpenBSD's tar where possible, require GNU tar for xz support
[#2283](https://github.com/commercialhaskell/stack/issues/2283)
* Fix using --coverage with Cabal-1.24
[#2424](https://github.com/commercialhaskell/stack/issues/2424)
* When marking exe installed, remove old version
[#2373](https://github.com/commercialhaskell/stack/issues/2373)
* Stop truncating all-cabal-hashes git repo
[#2175](https://github.com/commercialhaskell/stack/issues/2175)
* Handle non-ASCII filenames on Windows
[#2491](https://github.com/commercialhaskell/stack/issues/2491)
* Avoid using multiple versions of a package in script interpreter
by passing package-id to ghc/runghc
[#1957](https://github.com/commercialhaskell/stack/issues/1957)
* Only pre-load compiler version when using nix integration
[#2459](https://github.com/commercialhaskell/stack/issues/2459)
* Solver: parse cabal errors also on Windows
[#2502](https://github.com/commercialhaskell/stack/issues/2502)
* Allow exec and ghci commands in interpreter mode.
Scripts can now automatically open in the repl by using `exec ghci`
instead of `runghc` in the shebang command.
[#2510](https://github.com/commercialhaskell/stack/issues/2510)
* Now consider a package to be dirty when an extra-source-file is changed.
See [#2040](https://github.com/commercialhaskell/stack/issues/2040)

## 1.1.2

Expand Down Expand Up @@ -139,9 +233,6 @@ Bug fixes:
checked for dirtiness. See
[#1982](https://github.com/commercialhaskell/stack/issues/1982)
* Signing: always use `--with-fingerprints`
[#2110](https://github.com/commercialhaskell/stack/issues/2110).
* Now consider a package to be dirty when an extra-source-file is changed.
See [#2040](https://github.com/commercialhaskell/stack/issues/2040).

## 1.1.0

Expand Down
2 changes: 1 addition & 1 deletion ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ This way your question will be more easily discoverable by other people with the

If you're reporting a bug please follow the steps below:

Make sure that you are using the latest release (currently stack-1.1.2).
Make sure that you are using the latest release (currently stack-1.2.0).
See the [upgrade instructions](http://docs.haskellstack.org/en/stable/install_and_upgrade/#upgrade) to upgrade.

Please use the following schema for your bug report:
Expand Down
48 changes: 44 additions & 4 deletions doc/MAINTAINER_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,48 @@ set up.
* [Publish a new Github release](https://github.com/commercialhaskell/ghc/releases/new)
with tag `ghc-X.Y.Z-release` and same name.

* Down all the relevant GHC bindists from https://www.haskell.org/ghc/download_ghc_X_Y_Z and upload them to the just-created Github release (see
[stack-setup-2.yaml](https://github.com/fpco/stackage-content/blob/master/stack/stack-setup-2.yaml)
for the ones we used in the last GHC release).

In the case of OS X, repackage the `.xz` bindist as a `.bz2`, since OS X does
not include `xz` by default or provide an easy way to install it.

* Build any additional required bindists (see below for instructions)

* libtinfo6 (etc/vagrant/fedora24-x86_64)

* [Edit stack-setup-2.yaml](https://github.com/fpco/stackage-content/edit/master/stack/stack-setup-2.yaml)
and add the new bindists. For each one, download the bindist from
https://www.haskell.org/ghc/download_ghc_X_Y_Z and upload it to the
just-created Github release, and refer to the Github version in the YAML. Be
sure to update the `content-length` and `sha1` values.
and add the new bindists, pointing to the Github release version. Be sure to
update the `content-length` and `sha1` values.

### Building GHC

Set the `GHC_VERSION` environment variable to the version to build.

For GHC >= 7.10.2, run (from [here](https://ghc.haskell.org/trac/ghc/wiki/Newcomers)):

git config --global url."git://github.com/ghc/packages-".insteadOf git://github.com/ghc/packages/ && \
git clone -b ghc-${GHC_VERSION}-release --recursive git://github.com/ghc/ghc ghc-${GHC_VERSION} && \
cd ghc-${GHC_VERSION}/ && \
cp mk/build.mk.sample mk/build.mk && \
sed -i 's/^#BuildFlavour *= *perf$/BuildFlavour = perf/' mk/build.mk && \
./boot && \
./configure --enable-tarballs-autodownload && \
sed -i 's/^TAR_COMP *= *bzip2$/TAR_COMP = xz/' mk/config.mk && \
make -j$(cat /proc/cpuinfo|grep processor|wc -l) && \
make binary-dist

GHC 7.8.4 is slightly different:

git config --global url."git://github.com/ghc/packages-".insteadOf git://github.com/ghc/packages/ && \
git clone -b ghc-${GHC_VERSION}-release --recursive git://github.com/ghc/ghc ghc-${GHC_VERSION} && \
cd ghc-${GHC_VERSION}/ && \
./sync-all --extra --nofib -r git://git.haskell.org get -b ghc-7.8 && \
cp mk/build.mk.sample mk/build.mk && \
sed -i 's/^#BuildFlavour *= *perf$/BuildFlavour = perf/' mk/build.mk && \
perl boot && \
./configure && \
sed -i 's/^TAR_COMP *= *bzip2$/TAR_COMP = xz/' mk/config.mk && \
make -j$(cat /proc/cpuinfo|grep processor|wc -l) && \
make binary-dist
21 changes: 18 additions & 3 deletions doc/install_and_upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,9 +230,15 @@ new releases by some days.
- [stack](https://www.archlinux.org/packages/community/x86_64/stack/) _latest stable version_
- [haskell-stack-git](https://aur.archlinux.org/packages/haskell-stack-git/) _git version_

In order to use `stack setup`, you will need the [ncurses5-compat-libs](https://aur.archlinux.org/packages/ncurses5-compat-libs/) AUR package installed. If this package is not installed, Stack will not be able to install GHC.
In order to use `stack setup` with older versions of GHC or on a 32-bit system,
you may need the
[ncurses5-compat-libs](https://aur.archlinux.org/packages/ncurses5-compat-libs/)
AUR package installed. If this package is not installed, Stack may not be able
to install older (< 7.10.3) or 32-bit GHC versions.

If you use the [ArchHaskell repository](https://wiki.archlinux.org/index.php/ArchHaskell), you can also get the `haskell-stack-tool` package from there.
If you use the
[ArchHaskell repository](https://wiki.archlinux.org/index.php/ArchHaskell), you
can also get the `haskell-stack-tool` package from there.

## NixOS

Expand Down Expand Up @@ -279,8 +285,17 @@ Stack](http://nixos.org/nixpkgs/manual/#how-to-build-a-haskell-project-using-sta
* Ensure you have required system dependencies installed. These include GCC, GNU make, xz, perl, libgmp, libffi, and zlib. We also recommend Git and GPG. To install these using your package manager:
* Debian / Ubuntu: `sudo apt-get install g++ gcc libc6-dev libffi-dev libgmp-dev make xz-utils zlib1g-dev git gnupg`
* Fedora / CentOS: `sudo dnf install perl make automake gcc gmp-devel libffi zlib xz tar git gnupg` (use `yum` instead of `dnf` on CentOS and Fedora <= 21)
* Fedora 24: In order to use `stack setup` on a 32-bit system, you may
need to run `sudo dnf install ncurses-compat-libs`. If this package is
not installed, Stack may not be able to install 32-bit GHC versions.
Also `sudo dnf install ncurses-compat-libs` if you nee
* Arch Linux: `sudo pacman -S make gcc ncurses git gnupg xz zlib gmp libffi zlib`
* In order to use `stack setup`, you will need the [ncurses5-compat-libs](https://aur.archlinux.org/packages/ncurses5-compat-libs/) AUR package installed. If this package is not installed, Stack will not be able to install GHC.

* In order to use `stack setup` with older versions of GHC or on a
32-bit system, you may need the
[ncurses5-compat-libs](https://aur.archlinux.org/packages/ncurses5-compat-libs/)
AUR package installed. If this package is not installed, Stack may not
be able to install older (< 7.10.3) or 32-bit GHC versions.
* Gentoo users, make sure to have the `ncurses` package with `USE=tinfo` (without it, stack will not be able to install GHC).

* Now you can run `stack` from the terminal.
Expand Down
2 changes: 0 additions & 2 deletions doc/yaml_configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -429,8 +429,6 @@ rebuild-ghc-options: true
Specify a variant binary distribution of GHC to use. Known values:

* `standard`: This is the default, uses the standard GHC binary distribution
* `gmp4`: Use the "centos6" GHC bindist, for Linux systems with libgmp4 (aka
`libgmp.so.3`), such as CentOS 6. This variant will be used automatically on such systems; you should not need to specify it in the configuration
* `integersimple`: Use a GHC bindist that uses
[integer-simple instead of GMP](https://ghc.haskell.org/trac/ghc/wiki/ReplacingGMPNotes)
* any other value: Use a custom GHC bindist. You should specify
Expand Down
2 changes: 1 addition & 1 deletion etc/scripts/get-stack.sh
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ do_sloppy_install() {
info "Since this installer doesn't support your Linux distribution,"
info "there is no guarantee that 'stack' will work at all! You may"
info "need to manually install some system info dependencies for GHC:"
info " gcc, make, libffi, zlib, libgmp5, and libtinfo5"
info " gcc, make, libffi, zlib, libgmp and libtinfo"
info "Please see http://docs.haskellstack.org/en/stable/install_and_upgrade/"
info "Pull requests to add support for this distro would be welcome!"
info ""
Expand Down
2 changes: 1 addition & 1 deletion etc/scripts/linux-armv7-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
#TODO: move this logic into release.hs.
set -xe
(cd etc/scripts && stack --install-ghc build)
$(cd etc/scripts && stack exec which stack-release-script) --no-test-haddocks --upload-label="Linux ARMv7" release
$(cd etc/scripts && stack exec which stack-release-script) --no-test-haddocks release
2 changes: 1 addition & 1 deletion etc/scripts/osx-release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ set -xe
RELEASE_SCRIPT=.local/bin/stack-release-script
rm -f "$RELEASE_SCRIPT"
(cd etc/scripts && stack --install-ghc build)
$(cd etc/scripts && stack exec which stack-release-script) --no-test-haddocks --arch=x86_64 --upload-label="Mac OS X 64-bit" release
$(cd etc/scripts && stack exec which stack-release-script) --no-test-haddocks --arch=x86_64 release
29 changes: 19 additions & 10 deletions etc/scripts/release.hs
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,11 @@ options =
"Label to give the uploaded release asset"
, Option "" [noTestHaddocksOptName] (NoArg $ Right $ \g -> g{gTestHaddocks = False})
"Disable testing building haddocks."
, Option "" [staticOptName] (NoArg $ Right $ \g -> g{gBuildArgs = gBuildArgs g ++ ["--split-objs", "--ghc-options=-optc-Os -optl-static -fPIC"]})
"Build a static binary."
, Option "" [buildArgsOptName]
(ReqArg
(\v -> Right $ \g -> g{gBuildArgs = words v})
(\v -> Right $ \g -> g{gBuildArgs = gBuildArgs g ++ words v})
"\"ARG1 ARG2 ...\"")
"Additional arguments to pass to 'stack build'."
]
Expand Down Expand Up @@ -153,15 +155,16 @@ rules global@Global{..} args = do
when (not gAllowDirty && not (null (trim dirty))) $
error ("Working tree is dirty. Use --" ++ allowDirtyOptName ++ " option to continue anyway.")
withTempDir $ \tmpDir -> do
let cmd0 = cmd (releaseBinDir </> binaryName </> stackExeFileName)
let cmd0 c = cmd (releaseBinDir </> binaryName </> stackExeFileName)
(stackArgs global)
gBuildArgs
["--local-bin-path=" ++ tmpDir]
() <- cmd0 $ concat $ concat
[["install --pedantic --no-haddock-deps"], [" --haddock" | gTestHaddocks]]
() <- cmd0 "install --resolver=lts-6.0 cabal-install"
let cmd' = cmd (AddPath [tmpDir] []) stackProgName (stackArgs global) gBuildArgs
() <- cmd' "test --pedantic --flag stack:integration-tests"
c
gBuildArgs
() <- cmd0 "install" $ concat $ concat
[["--pedantic --no-haddock-deps"], [" --haddock" | gTestHaddocks]]
() <- cmd0 "install" "--resolver=lts-6.0 cabal-install"
let cmd' c = cmd (AddPath [tmpDir] []) stackProgName (stackArgs global) c gBuildArgs
() <- cmd' "test" "--pedantic --flag stack:integration-tests"
return ()
copyFileChanged (releaseBinDir </> binaryName </> stackExeFileName) out

Expand Down Expand Up @@ -230,9 +233,10 @@ rules global@Global{..} args = do
actionOnException
(cmd stackProgName
(stackArgs global)
gBuildArgs
["--local-bin-path=" ++ takeDirectory out]
"install --pedantic")
"install"
gBuildArgs
"--pedantic")
(removeFile out)

debDistroRules ubuntuDistro ubuntuVersions
Expand Down Expand Up @@ -593,9 +597,14 @@ uploadLabelOptName = "upload-label"
noTestHaddocksOptName :: String
noTestHaddocksOptName = "no-test-haddocks"

-- | @--build-args@ command-line option name.
buildArgsOptName :: String
buildArgsOptName = "build-args"

-- | @--static@ command-line option name.
staticOptName :: String
staticOptName = "static"

-- | Arguments to pass to all 'stack' invocations.
stackArgs :: Global -> [String]
stackArgs Global{..} = ["--install-ghc", "--arch=" ++ display gArch]
Expand Down
11 changes: 6 additions & 5 deletions etc/scripts/vagrant-releases.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#!/usr/bin/env bash
set -xe
"$(dirname "$0")/with-vagrant.sh" debian-7-amd64 "--upload-label='Linux 64-bit, standard' $* release"
"$(dirname "$0")/with-vagrant.sh" debian-7-i386 "--upload-label='Linux 32-bit, standard' $* release"
"$(dirname "$0")/with-vagrant.sh" centos-6-x86_64 "--binary-variant=gmp4 --upload-label='Linux 64-bit, libgmp4 for CentOS 6.x' $* release"
"$(dirname "$0")/with-vagrant.sh" centos-6-i386 "--binary-variant=gmp4 --upload-label='Linux 32-bit, libgmp4 for CentOS 6.x' $* release"
"$(dirname "$0")/with-vagrant.sh" freebsd-10.3-amd64 "--upload-label='FreeBSD 64-bit' $* release" "export LANG=en_US.UTF-8;"
"$(dirname "$0")/with-vagrant.sh" alpine-3.4-x86_64 "--binary-variant=static --static $* release"
"$(dirname "$0")/with-vagrant.sh" debian-7-amd64 "$* release"
"$(dirname "$0")/with-vagrant.sh" debian-7-i386 "$* release"
"$(dirname "$0")/with-vagrant.sh" centos-6-x86_64 "--binary-variant=gmp4 $* release"
"$(dirname "$0")/with-vagrant.sh" centos-6-i386 "--binary-variant=gmp4 $* release"
"$(dirname "$0")/with-vagrant.sh" freebsd-10.3-amd64 "$* release" "export LANG=en_US.UTF-8;"
Loading

0 comments on commit 9b1eea6

Please sign in to comment.