Skip to content

Commit eb70bab

Browse files
committed
Merge branch 'release/0.6.2.3' of github.com:reflex-frp/reflex
* 'release/0.6.2.3' of github.com:reflex-frp/reflex: (34 commits) v0.6.2.3 - Add an upper-bound to witherable Use align (a merge) instead of coincidence for <.> (#346) Allow witherable ==0.3.* Use haskell-ci regenerate Update .travis.yml Add freeze file to avoid text 1.2.4.0 duplicate instances (#347) default.nix: Add missing profunctors dep Use xenial and manually install node 8 for ghcjs Fix merges (#340) contributing: add note on dependency ver bounds travis-ci: Add ghcjs to allowed failures list bc of travis time limit Less unsafeCoerce (#322) travis: disable benchmarks changelog: document v0.6.2.2 ci: Fix travis config cabal: Avoid hlint 2.1.* cabal: Limit witherable version ci: Remove cabal.project.local before building hlint: More linting cabal: remove some version bounds ...
2 parents f54933a + 9b684de commit eb70bab

File tree

40 files changed

+513
-160
lines changed

40 files changed

+513
-160
lines changed

.travis.yml

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
# This Travis job script has been generated by a script via
2+
#
3+
# haskell-ci '--config=cabal.haskell-ci' 'cabal.project'
4+
#
5+
# For more information, see https://github.com/haskell-CI/haskell-ci
6+
#
7+
# version: 0.3.20190814
8+
#
9+
language: c
10+
dist: xenial
11+
sudo: required
12+
git:
13+
# whether to recursively clone submodules
14+
submodules: false
15+
cache:
16+
directories:
17+
- $HOME/.cabal/packages
18+
- $HOME/.cabal/store
19+
before_cache:
20+
- rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log
21+
# remove files that are regenerated by 'cabal update'
22+
- rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.*
23+
- rm -fv $CABALHOME/packages/hackage.haskell.org/*.json
24+
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache
25+
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar
26+
- rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx
27+
- rm -rfv $CABALHOME/packages/head.hackage
28+
matrix:
29+
include:
30+
- compiler: ghcjs-8.4
31+
addons: {"apt":{"sources":["hvr-ghc"],"packages":["cabal-install-3.0"]}}
32+
- compiler: ghc-8.6.5
33+
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.6.5","cabal-install-2.4"]}}
34+
- compiler: ghc-8.4.4
35+
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.4.4","cabal-install-2.4"]}}
36+
- compiler: ghc-8.2.2
37+
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.2.2","cabal-install-2.4"]}}
38+
- compiler: ghc-8.0.2
39+
addons: {"apt":{"sources":["hvr-ghc"],"packages":["ghc-8.0.2","cabal-install-2.4"]}}
40+
before_install:
41+
- |
42+
if [ "$TRAVIS_OS_NAME" = "linux" ]; then
43+
sudo add-apt-repository -y ppa:hvr/ghcjs;
44+
curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
45+
sudo apt-add-repository 'https://deb.nodesource.com/node_8.x xenial main'
46+
sudo apt-get update;
47+
sudo apt-get install $CC cabal-install-3.0 nodejs;
48+
fi
49+
- HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
50+
- WITHCOMPILER="-w $HC"
51+
- |
52+
if echo $CC | grep -q ghcjs; then
53+
GHCJS=true
54+
HC=${HC}js
55+
WITHCOMPILER="--ghcjs ${WITHCOMPILER}js"
56+
else
57+
GHCJS=false;
58+
fi
59+
- if $GHCJS ; then sudo apt-get install -y ghc-8.4.4 ; fi
60+
- if $GHCJS ; then PATH="/opt/ghc/8.4.4/bin:$PATH" ; fi
61+
- HCPKG="$HC-pkg"
62+
- unset CC
63+
- CABAL=/opt/ghc/bin/cabal
64+
- CABALHOME=$HOME/.cabal
65+
- export PATH="$CABALHOME/bin:$PATH"
66+
- TOP=$(pwd)
67+
- "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')"
68+
- echo $HCNUMVER
69+
- CABAL="$CABAL -vnormal+nowrap+markoutput"
70+
- set -o pipefail
71+
- |
72+
echo 'function blue(s) { printf "\033[0;34m" s "\033[0m " }' >> .colorful.awk
73+
echo 'BEGIN { state = "output"; }' >> .colorful.awk
74+
echo '/^-----BEGIN CABAL OUTPUT-----$/ { state = "cabal" }' >> .colorful.awk
75+
echo '/^-----END CABAL OUTPUT-----$/ { state = "output" }' >> .colorful.awk
76+
echo '!/^(-----BEGIN CABAL OUTPUT-----|-----END CABAL OUTPUT-----)/ {' >> .colorful.awk
77+
echo ' if (state == "cabal") {' >> .colorful.awk
78+
echo ' print blue($0)' >> .colorful.awk
79+
echo ' } else {' >> .colorful.awk
80+
echo ' print $0' >> .colorful.awk
81+
echo ' }' >> .colorful.awk
82+
echo '}' >> .colorful.awk
83+
- cat .colorful.awk
84+
- |
85+
color_cabal_output () {
86+
awk -f $TOP/.colorful.awk
87+
}
88+
- echo text | color_cabal_output
89+
install:
90+
- ${CABAL} --version
91+
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
92+
- node --version
93+
- echo $GHCJS
94+
- TEST=--enable-tests
95+
- BENCH=--enable-benchmarks
96+
- BENCH=--disable-benchmarks
97+
- HEADHACKAGE=false
98+
- rm -f $CABALHOME/config
99+
- |
100+
echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config
101+
echo "remote-build-reporting: anonymous" >> $CABALHOME/config
102+
echo "write-ghc-environment-files: always" >> $CABALHOME/config
103+
echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config
104+
echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config
105+
echo "world-file: $CABALHOME/world" >> $CABALHOME/config
106+
echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config
107+
echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config
108+
echo "installdir: $CABALHOME/bin" >> $CABALHOME/config
109+
echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config
110+
echo "store-dir: $CABALHOME/store" >> $CABALHOME/config
111+
echo "install-dirs user" >> $CABALHOME/config
112+
echo " prefix: $CABALHOME" >> $CABALHOME/config
113+
echo "repository hackage.haskell.org" >> $CABALHOME/config
114+
echo " url: http://hackage.haskell.org/" >> $CABALHOME/config
115+
- cat $CABALHOME/config
116+
- rm -fv cabal.project cabal.project.local cabal.project.freeze
117+
- travis_retry ${CABAL} v2-update -v
118+
- if $GHCJS ; then (cd /tmp && ${CABAL} v2-install -w ghc-8.4.4 happy) ; fi
119+
# Generate cabal.project
120+
- rm -rf cabal.project cabal.project.local cabal.project.freeze
121+
- touch cabal.project
122+
- |
123+
echo "packages: ." >> cabal.project
124+
- |
125+
- cat cabal.project || true
126+
- cat cabal.project.local || true
127+
- if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi
128+
- ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output
129+
- "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'"
130+
- rm cabal.project.freeze
131+
script:
132+
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
133+
# Packaging...
134+
- ${CABAL} v2-sdist all | color_cabal_output
135+
# Unpacking...
136+
- mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
137+
- cd ${DISTDIR} || false
138+
- find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \;
139+
- find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm '{}' \;
140+
- PKGDIR_reflex="$(find . -maxdepth 1 -type d -regex '.*/reflex-[0-9.]*')"
141+
# Generate cabal.project
142+
- rm -rf cabal.project cabal.project.local cabal.project.freeze
143+
- touch cabal.project
144+
- |
145+
echo "packages: ${PKGDIR_reflex}" >> cabal.project
146+
- |
147+
- cat cabal.project || true
148+
- cat cabal.project.local || true
149+
# Building...
150+
# this builds all libraries and executables (without tests/benchmarks)
151+
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
152+
# Building with tests and benchmarks...
153+
# build & run tests, build benchmarks
154+
- ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
155+
# Testing...
156+
- if ! $GHCJS ; then ${CABAL} v2-test $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output ; fi
157+
# cabal check...
158+
- (cd ${PKGDIR_reflex} && ${CABAL} -vnormal check)
159+
# haddock...
160+
- if ! $GHCJS ; then ${CABAL} v2-haddock $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output ; fi
161+
# Constraint sets
162+
- rm -rf cabal.project.local
163+
# Constraint set no-th
164+
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='reflex -use-template-haskell' all | color_cabal_output
165+
# Constraint set old-these
166+
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='these <1' all | color_cabal_output
167+
# Constraint set old-witherable
168+
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --constraint='witherable <0.3.2' all | color_cabal_output
169+
170+
# REGENDATA ["--config=cabal.haskell-ci","cabal.project"]
171+
# EOF

CONTRIBUTING.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ Your pull request should add no new warnings to the project. It should also gene
4545

4646
Make sure the project builds and that the tests pass! This will generally also be checked by CI before merge, but trying it yourself first means you'll catch problems earlier and your contribution can be merged that much sooner!
4747

48+
#### Dependencies
49+
50+
Include version bounds whenever adding a dependency to the library stanza of the cabal file. Note that libraries added to reflex.cabal also need to be added to default.nix.
51+
4852
### Documentation
4953

5054
#### In the code

ChangeLog.md

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,33 @@
11
# Revision history for reflex
22

3+
## 0.6.2.3
4+
5+
* Add an upper-bound to witherable
6+
7+
## 0.6.2.2
8+
9+
* Support these >= 1. Add `split-these` flag to control whether to use new these/semialign combination or not.
10+
* Update version bounds to fix some CI failures
11+
* Add travis CI configuration
12+
313
## 0.6.2.1
414

515
* Generalize `fan` to `fanG` to take a `DMap` with non-`Identity`
6-
values.
16+
functor:
17+
* `fan` to `fanG`
18+
* `EventSelectorG` for `fanG` result selector.
19+
20+
* Reduce the amount of unsafeCoerce in coercing newtypes under Event/Dynamic/Behavior.
21+
* Add fused ReaderIO for the purpose of coercion (ReaderT's third argument has nominal role preventing automated coerce)
22+
* Add incrementalCoercion/coerceIncremental to go with dynamicCoercion/coerceDynamic
723

824
* Generalize merging functions:
925
`merge` to `mergeG`,
1026
`mergeIncremental` to `mergeIncrementalG`,
11-
`distributeDMapOverDynPure` to `distributeDMapOverDynPureG`,
1227
`mergeIncrementalWithMove` to `mergeIncrementalWithMoveG`.
1328

29+
* Generalize distribute function:
30+
`distributeDMapOverDynPure` to `distributeDMapOverDynPureG`,
1431

1532
## 0.6.2.0
1633

cabal.haskell-ci

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
distribution: xenial
2+
benchmarks: False
3+
unconstrained: False
4+
installed: -all
5+
6+
-- https://github.com/haskell/cabal/issues/6106
7+
install-dependencies: False
8+
9+
constraint-set no-th
10+
constraints: reflex -use-template-haskell
11+
12+
constraint-set old-these
13+
constraints: these <1
14+
15+
constraint-set old-witherable
16+
constraints: witherable <0.3.2

cabal.project

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
packages: .

cabal.project.freeze

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
constraints: any.text < 1.2.4.0

default.nix

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
, template-haskell , these, time, transformers
77
, transformers-compat, unbounded-delays, prim-uniq
88
, data-default, filepath, directory, filemanip, ghcjs-base
9-
, monoidal-containers, witherable
9+
, monoidal-containers, witherable, profunctors
10+
, semialign ? null, splitThese ? (semialign != null)
1011
, useTemplateHaskell ? true
1112
}:
1213
mkDerivation {
1314
pname = "reflex";
14-
version = "0.6.2.1";
15+
version = "0.6.2.3";
1516
src = builtins.filterSource (path: type: !(builtins.elem (baseNameOf path) [ ".git" "dist" ])) ./.;
1617
libraryHaskellDepends = [
1718
base bifunctors containers dependent-map dependent-sum
@@ -22,17 +23,20 @@ mkDerivation {
2223
base bifunctors containers deepseq dependent-map dependent-sum
2324
mtl ref-tf split transformers data-default
2425
random time unbounded-delays monoidal-containers witherable
26+
profunctors
2527
] ++ (if ghc.isGhcjs or false then [
2628
ghcjs-base
2729
] else []) ++ (if !useTemplateHaskell then [] else [
2830
haskell-src-exts haskell-src-meta
29-
]);
31+
]) ++ (if splitThese then [
32+
semialign
33+
] else []);
3034
testHaskellDepends = if ghc.isGhcjs or false then [] else [
3135
hlint filepath directory filemanip
3236
];
33-
configureFlags = if useTemplateHaskell then [] else [
34-
"-f-use-template-haskell"
35-
];
37+
configureFlags =
38+
stdenv.lib.optional (!useTemplateHaskell) [ "-f-use-template-haskell" ] ++
39+
stdenv.lib.optional (!splitThese) [ "-f-split-these" ];
3640
homepage = "https://github.com/reflex-frp/reflex";
3741
description = "Higher-order Functional Reactive Programming";
3842
license = stdenv.lib.licenses.bsd3;

0 commit comments

Comments
 (0)