2013-05-17 15:38:29 +00:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
|
|
|
# This script is run by the jenkins autobuilder, in a mingw environment,
|
|
|
|
# to build git-annex for Windows.
|
|
|
|
|
|
|
|
set -x
|
|
|
|
set -e
|
|
|
|
|
2013-12-05 23:15:23 +00:00
|
|
|
# Path to the Haskell Platform.
|
2014-08-13 17:02:35 +00:00
|
|
|
#HP="/c/haskell/2014.2.0.0" # now in the default PATH
|
2013-12-04 21:11:49 +00:00
|
|
|
|
2015-04-14 18:19:27 +00:00
|
|
|
PATH="/c/Program Files (x86)/NSIS:/c/msysgit/cmd:/c/msysgit/bin:$PATH"
|
|
|
|
|
2013-05-17 20:56:00 +00:00
|
|
|
# Run a command with the cygwin environment available.
|
|
|
|
# However, programs not from cygwin are preferred.
|
|
|
|
withcyg () {
|
2013-12-06 18:56:12 +00:00
|
|
|
PATH="$PATH:/c/cygwin/bin" "$@"
|
2013-05-17 15:38:29 +00:00
|
|
|
}
|
2013-12-11 15:13:04 +00:00
|
|
|
|
2013-12-06 18:41:33 +00:00
|
|
|
# This tells git-annex where to upgrade itself from.
|
|
|
|
UPGRADE_LOCATION=http://downloads.kitenet.net/git-annex/windows/current/git-annex-installer.exe
|
2015-04-14 19:07:12 +00:00
|
|
|
export UPGRADE_LOCATION
|
2013-12-06 18:41:33 +00:00
|
|
|
|
2015-04-14 18:44:19 +00:00
|
|
|
# This can be used to force git-annex to build supporting a particular
|
|
|
|
# version of git, instead of the version installed at build time.
|
2015-04-18 16:19:32 +00:00
|
|
|
#FORCE_GIT_VERSION=1.9.5
|
|
|
|
#export FORCE_GIT_VERSION
|
2015-04-14 19:03:08 +00:00
|
|
|
|
2013-12-05 22:07:44 +00:00
|
|
|
# Uncomment to get rid of cabal installed libraries.
|
2014-08-13 17:21:22 +00:00
|
|
|
#rm -rf /c/Users/jenkins/AppData/Roaming/cabal /c/Users/jenkins/AppData/Roaming/ghc
|
2013-12-05 22:07:44 +00:00
|
|
|
|
2013-06-22 17:47:19 +00:00
|
|
|
# Don't allow build artifact from a past successful build to be extracted
|
2013-05-17 20:35:35 +00:00
|
|
|
# if we fail.
|
2014-03-01 04:32:08 +00:00
|
|
|
rm -f git-annex-installer.exe
|
2013-05-17 20:35:35 +00:00
|
|
|
|
2013-05-17 16:31:19 +00:00
|
|
|
# Install haskell dependencies.
|
2013-05-17 15:38:29 +00:00
|
|
|
# cabal install is not run in cygwin, because we don't want configure scripts
|
|
|
|
# for haskell libraries to link them with the cygwin library.
|
2013-05-20 01:12:46 +00:00
|
|
|
cabal update || true
|
2013-05-17 17:10:41 +00:00
|
|
|
|
2013-12-06 17:57:33 +00:00
|
|
|
cabal install --only-dependencies || true
|
2013-05-17 16:31:19 +00:00
|
|
|
|
2013-05-20 01:02:50 +00:00
|
|
|
# Detect when the last build was an incremental build and failed,
|
|
|
|
# and try a full build. Done this way because this shell seems a bit
|
|
|
|
# broken.
|
|
|
|
if [ -e last-incremental-failed ]; then
|
|
|
|
cabal clean || true
|
|
|
|
# windows breakage..
|
2013-12-30 18:11:40 +00:00
|
|
|
rm -rf dist dist.old || mv -v dist dist.old
|
2013-05-20 00:45:54 +00:00
|
|
|
fi
|
|
|
|
touch last-incremental-failed
|
2013-05-20 00:41:44 +00:00
|
|
|
|
2013-05-20 00:45:54 +00:00
|
|
|
# Build git-annex
|
2013-12-09 19:04:57 +00:00
|
|
|
withcyg cabal configure
|
2013-12-09 19:38:57 +00:00
|
|
|
if ! withcyg cabal build; then
|
|
|
|
rm -f Build/EvilLinker.exe
|
|
|
|
ghc --make Build/EvilLinker
|
|
|
|
Build/EvilLinker
|
|
|
|
fi
|
2013-12-05 21:17:35 +00:00
|
|
|
|
2013-05-20 00:45:54 +00:00
|
|
|
# Build the installer
|
|
|
|
cabal install nsis
|
2014-12-03 18:00:22 +00:00
|
|
|
ghc -fforce-recomp --make Build/NullSoftInstaller.hs
|
2013-12-11 15:16:11 +00:00
|
|
|
# Want to include cygwin programs in bundle, not others, since
|
|
|
|
# it includes the cygwin libs that go with them.
|
2015-05-07 19:56:40 +00:00
|
|
|
# Currently need an older version of rsync than the one from cygwin.
|
|
|
|
if [ ! -e rsync.exe ]; then
|
2015-05-07 20:05:46 +00:00
|
|
|
withcyg wget https://downloads.kitenet.net/git-annex/windows/assets/rsync.exe
|
2015-05-07 20:12:05 +00:00
|
|
|
withcyg chmod +x rsync.exe
|
2015-05-07 19:56:40 +00:00
|
|
|
fi
|
2015-05-07 20:11:30 +00:00
|
|
|
PATH=".:/c/cygwin/bin:$PATH" Build/NullSoftInstaller.exe
|
2013-05-20 00:35:33 +00:00
|
|
|
|
2013-05-20 00:45:54 +00:00
|
|
|
rm -f last-incremental-failed
|
2013-05-17 20:34:19 +00:00
|
|
|
|
2014-08-13 17:02:35 +00:00
|
|
|
rm -f dist/build-version
|
|
|
|
ghc --make Build/BuildVersion.hs
|
|
|
|
Build/BuildVersion > dist/build-version
|
|
|
|
|
2013-05-17 20:34:19 +00:00
|
|
|
# Test git-annex
|
2015-01-06 18:52:43 +00:00
|
|
|
# The test is run in c:/WINDOWS/Temp, because running it in the autobuilder
|
|
|
|
# directory runs afoul of Windows's short PATH_MAX.
|
2014-08-13 17:29:27 +00:00
|
|
|
PATH="$(pwd)/dist/build/git-annex/:$PATH"
|
2014-08-13 17:21:22 +00:00
|
|
|
export PATH
|
2014-12-30 19:33:42 +00:00
|
|
|
mkdir -p c:/WINDOWS/Temp/git-annex-test/
|
try running test in a different directory
I have a theory that something is deleting the .t directory
or it doesn't get made in the location tried.
The last test showed:
add: ("recordedInodeCache",Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256E", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing},"start")
("recordedInodeCache",Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256E", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing},"end")
("writeInodeCache",Key {keyName = "e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77", keyBackendName = "SHA256E", keySize = Just 20, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing},"start")
git-annex: c:\jenkins\workspace\msysgit-git-annex-assistant-test\git-annex\.t\repo\.git\annex\objects\6cd\e82\SHA256E-s20--e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77\SHA256E-s20--e394a389d787383843decc5d3d99b6d184ffa5fddeec23b911f9ee7fc8b9ea77.cache: openFile: does not exist (No such file or directory)
FAIL
add failed
So writeInodeCache is what's failing, and it seems to fail to write the file
despite having made the parent directory.
2014-12-30 19:26:34 +00:00
|
|
|
cd c:/WINDOWS/Temp/git-annex-test/
|
2014-12-30 21:16:57 +00:00
|
|
|
if withcyg git-annex.exe test; then
|
|
|
|
rm -rf .t
|
|
|
|
else
|
|
|
|
rm -rf .t
|
|
|
|
echo "Test suite failure; failing build!"
|
|
|
|
false
|
|
|
|
fi
|