Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
H
head.hackage
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Glasgow Haskell Compiler
head.hackage
Commits
8bb2e421
Commit
8bb2e421
authored
5 years ago
by
Ryan Scott
Browse files
Options
Downloads
Patches
Plain Diff
Declare alex as build-tool-depends
parent
dde5ed16
No related branches found
No related tags found
1 merge request
!62
Adapt to 'Whitespace-sensitive bang patterns'
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
ci/TestPatches.hs
+25
-4
25 additions, 4 deletions
ci/TestPatches.hs
ci/config.sh
+11
-0
11 additions, 0 deletions
ci/config.sh
with
36 additions
and
4 deletions
ci/TestPatches.hs
+
25
−
4
View file @
8bb2e421
...
...
@@ -53,6 +53,15 @@ newtype BrokenPackages = BrokenPackages { getBrokenPackageNames :: S.Set PkgName
failureExpected
::
BrokenPackages
->
PkgName
->
Bool
failureExpected
(
BrokenPackages
pkgs
)
name
=
name
`
S
.
member
`
pkgs
-- Packages that should be built by declaring a @build-tool-depends@
-- dependency, not a @build-depends@ dependency. This is necessary for packages
-- that do not have a library component (e.g., @alex@).
newtype
BuildToolPackages
=
BuildToolPackages
{
getBuildToolPackageNames
::
S
.
Set
PkgName
}
deriving
(
Semigroup
,
Monoid
)
buildToolPackage
::
BuildToolPackages
->
PkgName
->
Bool
buildToolPackage
(
BuildToolPackages
pkgs
)
name
=
name
`
S
.
member
`
pkgs
data
Config
=
Config
{
configPatchDir
::
FilePath
,
configCompiler
::
FilePath
,
configGhcOptions
::
[
String
]
...
...
@@ -62,6 +71,7 @@ data Config = Config { configPatchDir :: FilePath
,
configExtraCabalFragments
::
[
FilePath
]
,
configExtraPackages
::
[(
Cabal
.
PackageName
,
Version
)]
,
configExpectedBrokenPkgs
::
BrokenPackages
,
configBuildToolPkgs
::
BuildToolPackages
}
cabalOptions
::
Config
->
[
String
]
...
...
@@ -82,6 +92,7 @@ config =
<*>
extraCabalFragments
<*>
extraPackages
<*>
expectedBrokenPkgs
<*>
buildToolPkgs
where
patchDir
=
option
str
(
short
'p'
<>
long
"patches"
<>
help
"patch directory"
<>
value
"./patches"
)
compiler
=
option
str
(
short
'w'
<>
long
"with-compiler"
<>
help
"path of compiler"
)
...
...
@@ -98,6 +109,11 @@ config =
$
option
(
fmap
toPkgName
pkgName
)
(
short
'b'
<>
long
"expect-broken"
<>
metavar
"PKGNAME"
<>
help
"expect the given package to fail to build"
)
buildToolPkgs
=
fmap
(
BuildToolPackages
.
S
.
fromList
)
$
many
$
option
(
fmap
toPkgName
pkgName
)
(
long
"build-tool-package"
<>
metavar
"PKGNAME"
<>
help
"declare the given package with build-tool-depends, not build-depends"
)
pkgVer
::
ReadM
(
Cabal
.
PackageName
,
Version
)
pkgVer
=
str
>>=
parse
.
T
.
pack
...
...
@@ -235,7 +251,7 @@ buildPackage cfg pname version = do
appendFile
(
dirName
</>
"cabal.project"
)
"packages: .
\n
"
TIO
.
writeFile
(
dirName
</>
concat
[
"test-"
,
display
pname
,
".cabal"
])
(
makeTestCabalFile
pname
version
)
(
makeTestCabalFile
cfg
pname
version
)
-- run the build
code
<-
runProcess
$
setWorkingDir
dirName
...
...
@@ -310,8 +326,8 @@ buildPackage cfg pname version = do
dirName
=
"test-"
++
display
pname
++
"-"
++
display
version
makeTestCabalFile
::
Cabal
.
PackageName
->
Version
->
T
.
Text
makeTestCabalFile
pname'
ver'
=
makeTestCabalFile
::
Config
->
Cabal
.
PackageName
->
Version
->
T
.
Text
makeTestCabalFile
cfg
pname'
ver'
=
[
text
|
cabal-version: 2.2
name: test-$pname
...
...
@@ -319,12 +335,17 @@ makeTestCabalFile pname' ver' =
library
exposed-modules:
build-
depends
: $pname == $ver
$
depends
default-language: Haskell2010
|]
where
pname
=
T
.
pack
$
display
pname'
ver
=
T
.
pack
$
display
ver'
depends
|
buildToolPackage
(
configBuildToolPkgs
cfg
)
(
toPkgName
pname'
)
=
"build-tool-depends: "
<>
pname
<>
":"
<>
pname
<>
" == "
<>
ver
|
otherwise
=
"build-depends: "
<>
pname
<>
" == "
<>
ver
setup
::
Config
->
IO
()
setup
cfg
=
do
...
...
This diff is collapsed.
Click to expand it.
ci/config.sh
+
11
−
0
View file @
8bb2e421
...
...
@@ -34,6 +34,14 @@ function extra_package() {
EXTRA_OPTS
=
"
$EXTRA_OPTS
--extra-package=
$pkg_name
==
$version
"
}
# Mark a package to be declared with build-tool-depends, not build-depends.
# This is necessary for packages that do not have a library component.
function
build_tool_package
()
{
pkg_name
=
"
$1
"
echo
"Adding
$pkg_name
as a build-tool package"
EXTRA_OPTS
=
"
$EXTRA_OPTS
--build-tool-package=
$pkg_name
"
}
if
[
-z
"
$GHC
"
]
;
then
GHC
=
ghc
;
fi
function
ghc_version
()
{
...
...
@@ -73,3 +81,6 @@ extra_package generic-lens
extra_package microstache
extra_package singletons
extra_package servant
# Build-tool packages
build_tool_package alex
This diff is collapsed.
Click to expand it.
Ryan Scott
@RyanGlScott
mentioned in issue
#72
·
2 years ago
mentioned in issue
#72
mentioned in issue #72
Toggle commit list
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment