summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-02-11 11:47:53 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-02-11 11:47:53 -0400
commit69cb6af4b7f6b16a69734d75ef5583bd2797c173 (patch)
tree2342a1c3b8ced54e0cde32afce963d643294a718
parent3ce402a4c63e4ac04ab788cfd3ad8ea964b402ef (diff)
Now uses the Haskell Glob library, rather than pcre-light, avoiding the need to install libpcre. Currently done only for Cabal or when the Makefile is made to use -DWITH_GLOB
-rw-r--r--Limit.hs12
-rw-r--r--Makefile4
-rw-r--r--debian/changelog3
-rw-r--r--doc/install/Fedora.mdwn2
-rw-r--r--doc/install/OSX.mdwn7
-rw-r--r--doc/install/ScientificLinux5.mdwn12
-rw-r--r--doc/install/fromscratch.mdwn2
-rw-r--r--git-annex.cabal12
8 files changed, 23 insertions, 31 deletions
diff --git a/Limit.hs b/Limit.hs
index 85cce4f44..16e555bed 100644
--- a/Limit.hs
+++ b/Limit.hs
@@ -12,7 +12,9 @@ module Limit where
import Data.Time.Clock.POSIX
import qualified Data.Set as S
import qualified Data.Map as M
-#ifndef WITH_ANDROID
+#ifdef WITH_GLOB
+import System.FilePath.Glob (simplify, compile, match)
+#else
import Text.Regex.PCRE.Light.Char8
import System.Path.WildMatch
#endif
@@ -85,10 +87,12 @@ limitExclude :: MkLimit
limitExclude glob = Right $ const $ return . not . matchglob glob
matchglob :: String -> Annex.FileInfo -> Bool
-#ifdef WITH_ANDROID
-matchglob _ _ = error "glob matching not supported"
-#else
matchglob glob (Annex.FileInfo { Annex.matchFile = f }) =
+#ifdef WITH_GLOB
+ match pattern f
+ where
+ pattern = simplify $ compile glob
+#else
isJust $ match cregex f []
where
cregex = compile regex []
diff --git a/Makefile b/Makefile
index e61653a3c..04eea2e28 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@ BASEFLAGS=-Wall -outputdir $(GIT_ANNEX_TMP_BUILD_DIR) -IUtility
# you can turn off some of these features.
#
# If you're using an old version of yesod, enable -DWITH_OLD_YESOD
-FEATURES?=$(GIT_ANNEX_LOCAL_FEATURES) -DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_WEBAPP -DWITH_PAIRING -DWITH_XMPP -DWITH_DNS
+FEATURES?=$(GIT_ANNEX_LOCAL_FEATURES) -DWITH_ASSISTANT -DWITH_S3 -DWITH_WEBDAV -DWITH_WEBAPP -DWITH_PAIRING -DWITH_XMPP -DWITH_DNS -DWITH_GLOB
bins=git-annex
mans=git-annex.1 git-annex-shell.1
@@ -234,7 +234,7 @@ android:
$(MAKE) Build/SysConfig.hs
GHC=$$HOME/.ghc/android-14/arm-linux-androideabi-4.7/bin/arm-unknown-linux-androideabi-ghc \
CC=$$HOME/.ghc/android-14/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gcc \
- FEATURES="-DWITH_ANDROID -DWITH_ASSISTANT -DWITH_DNS" \
+ FEATURES="-DWITH_ANDROID -DWITH_ASSISTANT -DWITH_GLOB -DWITH_DNS" \
ANDROID=1 $(MAKE) fast
# used by ./ghci
diff --git a/debian/changelog b/debian/changelog
index 03236a69a..e2c0dcb4a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,9 @@
git-annex (3.20130208) UNRELEASED; urgency=low
* Now uses the Haskell uuid library, rather than needing a uuid program.
+ * Now uses the Haskell Glob library, rather than pcre-light, avoiding
+ the need to install libpcre. Currently done only for Cabal or when
+ the Makefile is made to use -DWITH_GLOB
-- Joey Hess <joeyh@debian.org> Sun, 10 Feb 2013 14:52:01 -0400
diff --git a/doc/install/Fedora.mdwn b/doc/install/Fedora.mdwn
index a150dbc38..d7d07715c 100644
--- a/doc/install/Fedora.mdwn
+++ b/doc/install/Fedora.mdwn
@@ -9,7 +9,7 @@ Should be as simple as: `yum install git-annex`
Older version? Here's an installation recipe for Fedora 14 through 15.
<pre>
-sudo yum install ghc cabal-install pcre-devel
+sudo yum install ghc cabal-install
git clone git://git-annex.branchable.com/ git-annex
cd git-annex
git checkout ghc7.0
diff --git a/doc/install/OSX.mdwn b/doc/install/OSX.mdwn
index e9e2a044b..10735a7d0 100644
--- a/doc/install/OSX.mdwn
+++ b/doc/install/OSX.mdwn
@@ -24,7 +24,7 @@ the app for OSX Lion.
<pre>
brew update
-brew install haskell-platform git ossp-uuid md5sha1sum coreutils pcre libgsasl gnutls libidn libgsasl pkg-config libxml2
+brew install haskell-platform git ossp-uuid md5sha1sum coreutils libgsasl gnutls libidn libgsasl pkg-config libxml2
brew link libxml2
cabal update
PATH=$HOME/bin:$PATH
@@ -38,10 +38,7 @@ The version provided by Macports is too old to work with current versions of git
Then execute
<pre>
-sudo port install git-core ossp-uuid md5sha1sum coreutils pcre gnutls libxml2 libgsasl pkgconfig
-
-sudo ln -s /opt/local/include/pcre.h /usr/include/pcre.h # This is hack that allows pcre-light to find pcre
-
+sudo port install git-core ossp-uuid md5sha1sum coreutils gnutls libxml2 libgsasl pkgconfig
sudo cabal update
PATH=$HOME/bin:$PATH
cabal install c2hs git-annex --bindir=$HOME/bin
diff --git a/doc/install/ScientificLinux5.mdwn b/doc/install/ScientificLinux5.mdwn
index 15ffb928b..23dca311c 100644
--- a/doc/install/ScientificLinux5.mdwn
+++ b/doc/install/ScientificLinux5.mdwn
@@ -29,23 +29,11 @@ don't want things to be system wide)
$ export PATH=/usr/hs/bin:$PATH
-On SL5 pcre is at version 6.6 which is far too old for one of the
-dependancies that git-annex requires. Therefore the user must install
-an updated version of _pcre_ either from source or another method, I
-chose to install it from source and by hand into /usr/local
-
- $ wget http://sourceforge.net/projects/pcre/files/pcre/8.30/pcre-8.30.tar.gz/download
- $ tar zxvf pcre-8.30.tar.gz
- $ cd pcre-8.30
- $ ./configure
- $ make && make install
-
Once the packages are installed and are in your execution path, using
cabal to configure and build git-annex just makes life easier, it
should install all the needed dependancies.
$ cabal update
- $ cabal install pcre-light --extra-include-dirs=/usr/local/include
$ git clone git://git.kitenet.net/git-annex
$ cd git-annex
$ make git-annex.1
diff --git a/doc/install/fromscratch.mdwn b/doc/install/fromscratch.mdwn
index bde5b9a89..386776f6b 100644
--- a/doc/install/fromscratch.mdwn
+++ b/doc/install/fromscratch.mdwn
@@ -5,7 +5,6 @@ quite a lot.
* [The Haskell Platform](http://haskell.org/platform/) (GHC 7.4 or newer)
* [mtl](http://hackage.haskell.org.package/mtl) (2.1.1 or newer)
* [MissingH](http://github.com/jgoerzen/missingh/wiki)
- * [pcre-light](http://hackage.haskell.org/package/pcre-light)
* [utf8-string](http://hackage.haskell.org/package/utf8-string)
* [SHA](http://hackage.haskell.org/package/SHA)
* [dataenc](http://hackage.haskell.org/package/dataenc)
@@ -21,6 +20,7 @@ quite a lot.
* [DAV](http://hackage.haskell.org/package/DAV) (optional)
* [SafeSemaphore](http://hackage.haskell.org/package/SafeSemaphore)
* [UUID](http://hackage.haskell.org/package/uuid)
+ * [Glob](http://hackage.haskell.org/package/Glob)
* Optional haskell stuff, used by the [[assistant]] and its webapp (edit Makefile to disable)
* [stm](http://hackage.haskell.org/package/stm)
(version 2.3 or newer)
diff --git a/git-annex.cabal b/git-annex.cabal
index f9c0065c6..735a89239 100644
--- a/git-annex.cabal
+++ b/git-annex.cabal
@@ -57,16 +57,16 @@ Executable git-annex
Build-Depends: MissingH, hslogger, directory, filepath,
unix, containers, utf8-string, network (>= 2.0), mtl (>= 2.1.1),
bytestring, old-locale, time,
- pcre-light, extensible-exceptions, dataenc, SHA, process, json,
+ extensible-exceptions, dataenc, SHA, process, json,
base (>= 4.5 && < 4.8), monad-control, transformers-base, lifted-base,
IfElse, text, QuickCheck >= 2.1, bloomfilter, edit-distance, process,
- SafeSemaphore, UUID
+ SafeSemaphore, UUID, Glob
-- Need to list these because they're generated from .hsc files.
Other-Modules: Utility.Touch Utility.Mounts
Include-Dirs: Utility
C-Sources: Utility/libdiskfree.c Utility/libmounts.c
Extensions: CPP
- GHC-Options: -threaded
+ GHC-Options: -threaded -DWITH_GLOB
if flag(S3)
Build-Depends: hS3
@@ -123,15 +123,15 @@ Test-Suite test
Main-Is: test.hs
Build-Depends: testpack, HUnit, MissingH, hslogger, directory, filepath,
unix, containers, utf8-string, network, mtl (>= 2.1.1), bytestring,
- old-locale, time, pcre-light, extensible-exceptions, dataenc, SHA,
+ old-locale, time, extensible-exceptions, dataenc, SHA,
process, json, HTTP, base (>= 4.5 && < 4.7), monad-control,
transformers-base, lifted-base, IfElse, text, QuickCheck >= 2.1,
- bloomfilter, edit-distance, process, SafeSemaphore
+ bloomfilter, edit-distance, process, SafeSemaphore, Glob
Other-Modules: Utility.Touch
Include-Dirs: Utility
C-Sources: Utility/libdiskfree.c
Extensions: CPP
- GHC-Options: -threaded
+ GHC-Options: -threaded -DWITH_GLOB
source-repository head
type: git