Skip to content

Commit

Permalink
Merge pull request #34 from thisiswhereitype/master
Browse files Browse the repository at this point in the history
1* Merge new travis script based on cabal
2* Examples consolidated into one file.
  • Loading branch information
thisiswhereitype authored Sep 21, 2018
2 parents 22315a7 + 94f5c40 commit 029bb0c
Show file tree
Hide file tree
Showing 13 changed files with 175 additions and 96 deletions.
10 changes: 9 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@

# Created by https://www.gitignore.io/api/haskell

### Haskell ###
dist
dist-*
cabal-dev
Expand All @@ -17,5 +21,9 @@ cabal.sandbox.config
*.eventlog
.stack-work/
cabal.project.local
cabal.project.local~
.HTF/
*.swp
.ghc.environment.*


# End of https://www.gitignore.io/api/haskell
132 changes: 108 additions & 24 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,115 @@
# This Travis job script has been generated by a script via
#
# runghc make_travis_yml_2.hs '--osx=8.4.3' 'pangraph.cabal' '-o' '.travis.yml'
#
# For more information, see https://github.com/haskell-CI/haskell-ci
#
language: c
sudo: false

git:
submodules: false # whether to recursively clone submodules

cache:
directories:
- $HOME/.ghc
- $HOME/.cabal
- $HOME/.stack
- $HOME/.cabal/packages
- $HOME/.cabal/store
- $HOME/.ghc-install

before_cache:
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
# remove files that are regenerated by 'cabal update'
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.*
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx

- rm -rfv $HOME/.cabal/packages/head.hackage

matrix:
include:
# - os: osx
# before_install:
# - brew update
# - brew install haskell-stack

- os: linux
addons:
apt:
packages:
- libgmp-dev
before_install:
- mkdir -p ~/.local/bin
- export PATH=$HOME/.local/bin:$PATH
- travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'

before_script:
- stack setup
- stack exec -- ghc --version
- stack build
include:
- compiler: "ghc-8.4.3"
# env: TEST=--disable-tests BENCH=--disable-benchmarks
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.4.3], sources: [hvr-ghc]}}
- compiler: "ghc-8.2.2"
# env: TEST=--disable-tests BENCH=--disable-benchmarks
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.2.2], sources: [hvr-ghc]}}
- compiler: "ghc-8.0.2"
# env: TEST=--disable-tests BENCH=--disable-benchmarks
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.0.2], sources: [hvr-ghc]}}
- compiler: "ghc-8.4.3"
# env: TEST=--disable-tests BENCH=--disable-benchmarks
addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.2,ghc-8.4.3], sources: [hvr-ghc]}}
os: osx

before_install:
- HC=${CC}
- HCPKG=${HC/ghc/ghc-pkg}
- unset CC
- ROOTDIR=$(pwd)
- mkdir -p $HOME/.local/bin
- "if [ \"$(uname)\" = \"Darwin\" ]; then brew update; brew upgrade python@3; curl https://haskell.futurice.com/haskell-on-macos.py | python3 - --make-dirs --install-dir=$HOME/.ghc-install --cabal-alias=head install cabal-install-head ${HC}; fi"
- "if [ \"$(uname)\" = \"Darwin\" ]; then PATH=$HOME/.ghc-install/ghc/bin:$HOME/local/bin:$PATH; else PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH; fi"
- HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') ))
- echo $HCNUMVER

install:
- cabal --version
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
- BENCH=${BENCH---enable-benchmarks}
- TEST=${TEST---enable-tests}
- HADDOCK=${HADDOCK-true}
- UNCONSTRAINED=${UNCONSTRAINED-true}
- NOINSTALLEDCONSTRAINTS=${NOINSTALLEDCONSTRAINTS-false}
- GHCHEAD=${GHCHEAD-false}
- travis_retry cabal update -v
- "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
- rm -fv cabal.project cabal.project.local
- grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
- "printf 'packages: \".\"\\n' > cabal.project"
- touch cabal.project.local
- "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | grep -vw -- pangraph | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
- cat cabal.project || true
- cat cabal.project.local || true
- if [ -f "./configure.ac" ]; then
(cd "." && autoreconf -i);
fi
- rm -f cabal.project.freeze
- cabal new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all
- cabal new-build -w ${HC} --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j2 all
- rm -rf .ghc.environment.* "."/dist
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)

# Here starts the actual work to be performed for the package under test;
# any command which exits with a non-zero exit code causes the build to fail.
script:
- stack test
# test that source-distributions can be generated
- (cd "." && cabal sdist)
- mv "."/dist/pangraph-*.tar.gz ${DISTDIR}/
- cd ${DISTDIR} || false
- find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
- "printf 'packages: pangraph-*/*.cabal\\n' > cabal.project"
- touch cabal.project.local
- "if ! $NOINSTALLEDCONSTRAINTS; then for pkg in $($HCPKG list --simple-output); do echo $pkg | grep -vw -- pangraph | sed 's/^/constraints: /' | sed 's/-[^-]*$/ installed/' >> cabal.project.local; done; fi"
- cat cabal.project || true
- cat cabal.project.local || true
# this builds all libraries and executables (without tests/benchmarks)
- cabal new-build -w ${HC} --disable-tests --disable-benchmarks all

# build & run tests, build benchmarks
- cabal new-build -w ${HC} ${TEST} ${BENCH} all
- if [ "x$TEST" = "x--enable-tests" ]; then cabal new-test -w ${HC} ${TEST} ${BENCH} all; fi

# cabal check
- (cd pangraph-* && cabal check)

# haddock
- rm -rf ./dist-newstyle
- if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi

# Build without installed constraints for packages in global-db
- if $UNCONSTRAINED; then rm -f cabal.project.local; echo cabal new-build -w ${HC} --disable-tests --disable-benchmarks all; else echo "Not building without installed constraints"; fi

# REGENDATA ["--osx=8.4.3","pangraph.cabal","-o",".travis.yml"]
# EOF
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,16 @@ Usage of multiple file types in the same module will require
qualified imports. Please see `src/Pangraph/Examples` for further examples.

## Building
Using cabal, dependencies track stack lts where possible.
```haskell
stack build
cabal update
cabal new-build
cabal new-test
```

Or Stack
```haskell
stack init
stack test
```

Expand Down
9 changes: 6 additions & 3 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
# Changelog

pangraph-0.2.0
## pangraph-0.2.1
* Bump Algebraic Graphs from 0.1.* to 0.2.*

## pangraph-0.2.0
* Addition of conversion and revert for FGL.
* Addition of Parser, Serializer and AST for GML.
* Change `Edge` types to now only construct with a `VertexID` type.
* Change `edgeEndpoints` to return VertexID.

pangraph-0.1.2 141360fbc2b6ca232ce91a9b14aa9a626082ba92 08/06/2018
## pangraph-0.1.2 141360fbc2b6ca232ce91a9b14aa9a626082ba92 08/06/2018
Note: First Hackage release which follows correct cabal versioning increments.
* Addition of Containers (convert).
* Bump to Stack LTS.
* Update to Algebraic Graphs to build with more versions.

pangraph-0.1.1.5 49bc8a38842256b7fb7c285725dcfb6dfb03cfcb 03/02/2018
## pangraph-0.1.1.5 49bc8a38842256b7fb7c285725dcfb6dfb03cfcb 03/02/2018
Note: First hackage release, prior to this on the repo there are many issues with commits.
Note: Commit date earlier.
Note: This list is of all features up to this point.
Expand Down
30 changes: 16 additions & 14 deletions pangraph.cabal
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: pangraph
version: 0.2.0
version: 0.2.1
synopsis: A set of parsers for graph languages and conversions to
graph libaries.
description: A package allowing parsing of graph files into graph
Expand All @@ -17,6 +17,11 @@ copyright: 2016-2018 Joesph Scott
category: Data Structures, Graphs, Parser
build-type: Simple
cabal-version: >=1.10
stability: experimental
-- Last three major versions
tested-with: GHC==8.0.2,
GHC==8.2.2,
GHC==8.4.3

library
hs-source-dirs: src
Expand All @@ -27,24 +32,21 @@ library
, Pangraph.GraphML.Writer
, Pangraph.Internal.XMLTemplate
, Pangraph.Internal.HexmlExtra
, Pangraph.Examples.Reading
, Pangraph.Examples.Writing
, Pangraph.Examples.ToContainersGraph
, Pangraph.Example
, Pangraph.Examples.SampleGraph
, Pangraph.Internal.ProtoGraph
, Pangraph.Examples.Gml
, Pangraph.Gml.Ast
, Pangraph.Gml.Parser
, Pangraph.Gml.Writer
build-depends: base >= 4.8 && < 5
, bytestring
, hexml
, containers
, algebraic-graphs
, fgl
, attoparsec
, text
, html-entities
, algebraic-graphs == 0.2.*
, attoparsec == 0.13.*
, bytestring == 0.10.*
, containers == 0.5.*
, fgl == 5.6.*
, hexml == 0.3.*
, html-entities == 1.1.*
, text == 1.2.*
default-language: Haskell2010
GHC-options: -Wall -fwarn-tabs

Expand All @@ -62,7 +64,7 @@ test-suite pangraph-test
, containers
, bytestring
, HUnit
, pangraph
, pangraph
default-language: Haskell2010
GHC-options: -Wall -fwarn-tabs -fbreak-on-exception

3 changes: 2 additions & 1 deletion src/Pangraph.hs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ import Data.Maybe (mapMaybe)
import Data.Map.Strict (Map)
import qualified Data.Map.Strict as Map
import qualified Data.ByteString as BS
import qualified Algebra.Graph.Class as Alga
import qualified Algebra.Graph.ToGraph as Alga
import qualified Algebra.Graph as Alga

-- | The 'Pangraph' type is the core intermediate type between abstract representations of graphs.
data Pangraph = Pangraph
Expand Down
24 changes: 24 additions & 0 deletions src/Pangraph/Example.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
module Pangraph.Example where

import Pangraph.Examples.SampleGraph(smallGraph)

import qualified Pangraph.GraphML.Parser as GraphML
import qualified Pangraph.GraphML.Writer as GraphML

import qualified Pangraph.Gml.Parser as Gml
import qualified Pangraph.Gml.Writer as Gml

import qualified Pangraph.Containers as Containers

main :: IO ()
main = do
-- Serialise and re-parse the graph in to GraphML.
let Just gGraphML = (GraphML.parse . GraphML.write) smallGraph
-- Test equality
print $ "GraphML reflectivity: " ++ show (gGraphML == smallGraph)

-- Serialise and re-parse the graph into Gml
let Just gGml = (Gml.parse . Gml.write) smallGraph
print $ "Gml reflectivity: " ++ show (gGml == smallGraph)
-- Print the result of the Containers conversion
print $ ((\(a,_,_) -> a) . Containers.convert) smallGraph
13 changes: 0 additions & 13 deletions src/Pangraph/Examples/Gml.hs

This file was deleted.

13 changes: 0 additions & 13 deletions src/Pangraph/Examples/Reading.hs

This file was deleted.

9 changes: 0 additions & 9 deletions src/Pangraph/Examples/ToContainersGraph.hs

This file was deleted.

8 changes: 0 additions & 8 deletions src/Pangraph/Examples/Writing.hs

This file was deleted.

8 changes: 0 additions & 8 deletions stack.yaml

This file was deleted.

2 changes: 1 addition & 1 deletion test/Gml.hs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ testGmlParse :: Test
testGmlParse = let
file = "graph [node [id 1 label \"Hello\"] node [id 2] edge [source 1 target 2]]"
graph = Just (Object [("graph", Object [
("node", Object [("id", Integer 1), ("label", String "Hello")]),
("node", Object [("id", Integer 1), ("label", String "Hello")]),
("node", Object [("id", Integer 2)]),
("edge", Object [("source", Integer 1),
("target", Integer 2)])])])
Expand Down

0 comments on commit 029bb0c

Please sign in to comment.