Commit graph

705 commits

Author SHA1 Message Date
Joey Hess
663b0353c9
remove cygwin stuff from this script
cygwin in not needed to build git-annex on windows AFAIK
2019-07-22 09:28:00 -04:00
Joey Hess
9709beba77
try to build deps before buildversion 2019-07-21 17:12:39 -04:00
Joey Hess
a33324256d
no need to upgrade stack as windows autobuild host is updated to newest 2019-07-21 17:09:37 -04:00
Joey Hess
605b98bc3a
upgrade stack by downloading binary, not build from source
stack upgrade --git is failing on windows, the ghc version it downloaded to
upgrade itself does not work:

11:06:25      Configuring base-compat-0.9.3...
11:06:25      Cabal-simple_Z6RU0evB_2.0.1.0_ghc-8.2.2.exe: The program 'ghc-pkg' is required
11:06:25      but the version of
11:06:25      C:\Users\jenkins\AppData\Local\Programs\stack\i386-windows\ghc-8.2.2\bin\ghc-pkg.EXE
11:06:25      could not be determined.
2019-07-09 11:14:30 -04:00
Joey Hess
0a8be11c9e
upgrade stack on windows 2019-07-09 11:01:27 -04:00
Joey Hess
4b7aea8714
update stack.yaml to latest lts and remove stack-windows.yaml
The latter should not be needed as this lts version includes Win32.
2019-07-09 10:33:21 -04:00
Joey Hess
9273f80301
OSX dmg: Put git-annex's version in the Info.plist file. 2019-06-26 12:10:35 -04:00
Joey Hess
f2a54e3401
Android: Improve installation process when the user's login shell is not bash.
~/.profile works for bash, but not all other login shells.

This setting PATH is a minor convenience for users, particuarly since
typing on android is so much harder. The usual linux standalone bundle
just expects the user to know how to add it to PATH. I don't want this
code to grow special cases for every possible login shell. So displaying a
message to the presumably minority who don't use bash seems like the best
choice.

Longer term, I'd hope termux gets some way to set an environment variable
for all login shells. Systems using PAM can, via ~/.pam_environment. Or
alternatively, add a git-annex package to termux, even if just an installer
package. I'd rather spend time on either of those than on making this minor
thing support more login shells.

This commit was sponsored by mo on Patreon.
2019-05-23 13:06:31 -04:00
Joey Hess
6e86373d13
remove android stuff 2018-11-04 20:06:49 -04:00
Joey Hess
42842ea0ea
runshell: Use system locales when built with GIT_ANNEX_PACKAGE_INSTALL set
This is to work around https://github.com/datalad/datalad/issues/2769
which I don't know how to reproduce outside that environment, nor do I
understand the root cause of. For some time, Neurodebian has been working
around it by building its standalone debs with a patch that disables use
of the locales bundled with the standalone build, letting the system
locales be used.

Using the system locales is asking for trouble if there's
significant version skew between the system and bundled glibc, and
possibly also if the architeciture is different, or whatever. That's why
git-annex bundles and uses its own locales, because numerous users
reported real problems with using the system locales.

... However, in the specific case of the Neurodebian standalone debs,
the deb is built on a system very like the one it's targeted to be
installed on. Or well, so they assure me, although doc/install/Ubuntu.mdwn
also promotes those for use across all versions of Ubuntu, and the deb
is built avoiding xz so it will work with old versions of dpkg, so I wonder
how true it is. It does seem that, at least currently, there is no bad
version skew in the locales of the systems the deb is used on, since
it's already been using the system locales for some time.

Anyway, since the Neurodebian build already is setting
GIT_ANNEX_PACKAGE_INSTALL=1 in runshell, I made runshell use system
locales when that's set. This is a small scope creep for
GIT_ANNEX_PACKAGE_INSTALL, but it's not documented and AFAIK only used
for the Neurodebian build, so that seems ok. This will let them stop
carrying their patch for this forward.

This work is supported by the NIH-funded NICEMAN (ReproNim TR&D3) project.
2018-10-13 15:04:10 -04:00
Joey Hess
d14983ee68
webapp: fix termux detection
The bundled uname -o says Linux in termux; have runshell on Android
delete it so the termux one is used instead.

This fixes the webapp so it will enter Android mode.

This commit was sponsored by mo on Patreon.
2018-10-13 12:08:27 -04:00
Joey Hess
38d691a10f
removed the old Android app
Running git-annex linux builds in termux seems to work well enough that the
only reason to keep the Android app would be to support Android 4-5, which
the old Android app supported, and which I don't know if the termux method
works on (although I see no reason why it would not).
According to [1], Android 4-5 remains on around 29% of devices, down from
51% one year ago.

[1] https://www.statista.com/statistics/271774/share-of-android-platforms-on-mobile-devices-with-android-os/

This is a rather large commit, but mostly very straightfoward removal of
android ifdefs and patches and associated cruft.

Also, removed support for building with very old ghc < 8.0.1, and with
yesod < 1.4.3, and without concurrent-output, which were only being used
by the cross build.

Some documentation specific to the Android app (screenshots etc) needs
to be updated still.

This commit was sponsored by Brett Eisenberg on Patreon.
2018-10-13 01:41:11 -04:00
Joey Hess
0240775f32
adding arm64 build, and improved termux installation process
* Added arm64 Linux standalone build. (No autobuilder yet.)
* Improved termux installation process.

Added git-annex-install.sh script to avoid user needing to type as much in
termux. The scope of this script is limited; runshell handles the rest.

Runshell runs termux-fix-shebang on the shell scripts. The problem is
the bundled bin/sh script, deleting that script also works, but then the
others probably use the system Android /bin/sh, which could be old or
broken or not posix or whatever. Using termux sh to run the scripts is
better.

This commit was sponsored by Eric Drechsel on Patreon.
2018-10-11 13:32:00 -04:00
Joey Hess
a97ef366fa
Linux standalone: Avoid using bundled cp before envionment is fully set up.
On android arm64, I saw the cp fail with "Bad system call", because proot
has not run yet. runshell only recently started using cp, and it's bundled
with git-annex, so this fixes a reversion.

This commit was sponsored by Nick Piper on Patreon.
2018-10-10 16:02:25 -04:00
Joey Hess
142795993a
hide stderr if cmp is used on file that does not exist
seen on android in termux
2018-10-10 15:28:27 -04:00
Joey Hess
fa44bca8b3
linux standalone: When LOCPATH is already set, use it instead of the bundled locales.
It can be set to an empty string to use the system locales too. Of course
whether that will work depends on the amount of divergence.

This commit was supported by the NSF-funded DataLad project.
2018-08-20 12:20:54 -04:00
Joey Hess
a8a0f7fc58
refuse to run if we can't write to HOME 2018-07-10 14:20:23 -04:00
Joey Hess
eb08deefa5
Revert "fall back to /tmp for LOCPATH if HOME does not exist or not writable"
This reverts commit f991c8c526.

On second thought, this makes it unbearably slow and leaves far too much
cruft behind.
2018-07-10 14:15:47 -04:00
Joey Hess
f991c8c526
fall back to /tmp for LOCPATH if HOME does not exist or not writable
In this case, we can't clean up old locale caches, but presumably the
system has something to clean up /tmp eventually.
2018-07-10 13:26:35 -04:00
Joey Hess
e802323071
deal with the persistent locpath issue
linux standalone: Generate locale files in ~/.cache/git-annex/locales/ so
they're available even when the standalone tarball is installed in a
directory owned by root.

This avoids a full-on reference counting cleanup hell, by letting old
locale caches linger as long as the standalone bundle directory associated
with them is still around. Old ones get cleaned up.

In the case where the directory has a new bundle unpacked over top of it,
the old locale cache is invalidated and rebuilt. Of course, running
programs using that may get confused, but this was already the case, and
unpacking over top of a bundle is probably not a good idea anyhow.

To support that, added a buildid file, which only needs to be unique across
builds of git-annex with different libc versions. sha1sum of git-annex
seems good enough for that.

Removed debian/patches/standalone-no-LOCPATH as it's no longer
necessary.

This commit was supported by the NSF-funded DataLad project.
2018-07-10 12:13:19 -04:00
Joey Hess
a1b55056fc
Make Build/BuildVersion update embedded version number
This way, autobuilders can run it before building, in a tree where
git-annex was already built, and get the current git rev embedded in the
build.

Before, the version number only updated when the setup program was run,
which was up to cabal and not on every build.
2018-06-26 10:36:54 -04:00
Joey Hess
22f49f216e
get android building the security fix
Had to update http-client and network, with follow-on dep changes.

This commit was sponsored by Brock Spratlen on Patreon.
2018-06-21 10:23:04 -04:00
Joey Hess
991265e724
version deps
need at least http-client-0.4.31 to build now, and connection-0.2.6
2018-06-19 19:55:22 -04:00
Joey Hess
71f450f677
use proot to support Android 8
runshell: Use proot when running on Android, to work around Android 8's
ill-advised seccomp filtering of system calls, including ones crucial for
reliable thread locking. (This will only work with termux's version of
proot.)

See https://github.com/termux/termux-packages/issues/420#issuecomment-386636938

This commit was sponsored by andrea rota.
2018-05-08 13:55:10 -04:00
Joey Hess
b2accf9da1
Assistant: Fix installation of menus, icons, etc when run from within runshell.
runshell followed by git annex webapp didn't install that stuff, because
GIT_ANNEX_APP_BASE is not set. Running git-annex.linux/git-annex-webapp did
install that stuff, since that script set the env var. I noticed this with
the termux port whose instructions currently go that way.

Seems the right thing to do is to move the env var setting to runshell.
2018-04-25 17:58:00 -04:00
Joey Hess
118ed8f92b
runshell: hacks for termux; add tip
Added some tweaks to make git-annex work in termux on Android. The regular
arm standalone tarball now works in termux.

I guess the test for "$base/bin/git" is not really necessary, since it
tests for git-annex. Since that gets deleted on android, removed that test.

These are pretty hackish hacks, especially adding it to PATH. The goal is
to make it work well enough out of the box on Android.

This commit was sponsored by Eric Drechsel on Patreon.
2018-04-25 13:48:37 -04:00
Joey Hess
dd7ab91f97
runshell: Unset LD_PRELOAD
Preloaded libraries from the host system may not get along with the bundled
linker.

This was observed by users in termux:

ERROR: ld.so: object '/data/data/com.termux/files/usr/lib/libtermux-exec.so' from LD_PRELOAD cannot be preloaded (wrong ELF class:
ELFCLASS64): ignored.
Bad system call

But it could also affect more usual systems; the preloaded library might rely
on symbols from the host libc that are not available or have the wrong versions
in the bundled libc. Unsetting LD_PRELOAD entirely seems safest.
2018-04-25 13:40:48 -04:00
Joey Hess
4d75c3d48e
avoid wrapping symlinks 2018-04-16 18:31:10 -04:00
Joey Hess
0a74404c97
move orig/ to .orig
gcc looks for programs in a path relative to its executable's location..
2018-04-16 17:47:35 -04:00
Joey Hess
f821b0e046
fix path 2018-04-16 17:34:27 -04:00
Joey Hess
1bed62bda9
android: try harder to force PIE for android 5+
This may work around ghc's -no-pie flag. Untested.
2018-04-16 17:30:21 -04:00
Joey Hess
db9524bfcc
update for wget removal 2018-04-06 21:15:31 -04:00
Joey Hess
786c7cc06a
updated licenses.gz
Removed a few things that are not in the bundle anymore.

Checked all the bundled C libraries and executables and added some
missing license information for new dependencies.

Did not check for new haskell libraries.
2018-04-03 13:36:04 -04:00
Joey Hess
10390a6378
Linux standalone arm build no longer supports Linux kernels older than 2.6.28
As it was getting too expensive to patch out use of the "new" syscalls

We could revisit this if someone has hardware with an older kernel
that's still being maintained, but I've verified that the Synology
NAS that had used a too old kernel version has been updated to 2.6.32.
2017-11-21 13:29:14 -04:00
Joey Hess
abb14f529e
fix build of patched network 2017-11-21 13:20:56 -04:00
Joey Hess
b411d6c412
freshen patch 2017-11-21 13:11:16 -04:00
Joey Hess
cd97752626
update to lts-9,9
with aws updated to 0.17.1

The old version of this file no longer builds on the arm autobuilder,
running Debian unstable.
2017-11-21 13:03:20 -04:00
Joey Hess
25854c73db
still need stack-windows.yaml to specify newer versions of Win32 and unix-compat 2017-11-09 13:54:05 -04:00
Joey Hess
a0c38d7c96
use win32 2.6.1.0
That has my patches merged into it, so stack-windows.yaml is not needed
any longer.

This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
2017-11-09 13:39:07 -04:00
Joey Hess
3d42168364
fix path 2017-10-26 13:42:54 -04:00
Joey Hess
d451d333d8
use upgraded stack 2017-10-26 12:15:00 -04:00
Joey Hess
932d4211a4
upgrade stack to avoid https://github.com/commercialhaskell/stack/issues/2960 2017-10-26 11:40:28 -04:00
Joey Hess
099ff702ea
improve cleanup 2017-10-26 11:34:14 -04:00
Joey Hess
6e202b8dc9
Revert "debugging strange old version of git-annex in windows installer bundle"
This reverts commit 1a338ed920.
2017-10-26 11:32:04 -04:00
Joey Hess
1a338ed920
debugging strange old version of git-annex in windows installer bundle 2017-10-26 11:21:27 -04:00
Joey Hess
50c0fb7336
unify stack build and stack install
For some reason, when stack install is run separately, it seems to be
installing a previous build from a different temp dir. WTF?
2017-10-26 10:10:02 -04:00
Joey Hess
d428f66cdd
simplify build 2017-10-25 17:54:33 -04:00
Joey Hess
9be00f2537
try to put git for windows first
I think there'a a cygwin git in path confusing things
2017-10-25 14:52:08 -04:00
Joey Hess
357a6e6709
work around stack-work directory path bug
fatal: Invalid path '/cygdrive/c/jenkins/workspace/git-annex-master/git-annex/.stack-work/downloaded/C:\jenkins\workspace\git-annex-master\git-annex\.stack-work\downloaded\56E6vnUQljVi': No such file or directory
2017-10-25 14:49:35 -04:00
Joey Hess
833b3f06cd
build for windows with forked win32 package that has terminateProcessId
Get ugly reversion out of CHANGELOG.

Also, relocated the windows stack.yaml to top, and updated windows build
instructions.

This commit was sponsored by Henrik Riomar on Patreon.
2017-10-25 14:45:23 -04:00
Joey Hess
0156ea7f53
expand comment 2017-10-25 14:02:49 -04:00
Joey Hess
54e596894f
Windows: Remove wget from bundle; it needs libraries that are not included, and git for windows includes curl which git-annex will use instead.
wget was broken even in the previous old release of the windows bundle,
this is not new breakage. msys-idn-11.dll and probably more would be needed
to use it. git for windows includes msys-idn2-0.dll instead.
2017-10-25 13:51:31 -04:00
Joey Hess
7dc477a4fc
fix build-version creation 2017-10-25 13:37:51 -04:00
Joey Hess
dd6d0cc9af
fix path
git-annex is installed into . by Build/NullSoftInstaller, so use that
for running git-annex test
2017-10-25 00:23:18 -04:00
Joey Hess
2a2e30f729
make dir 2017-10-25 00:19:10 -04:00
Joey Hess
3761f5a052
try different path 2017-10-25 00:09:58 -04:00
Joey Hess
cea1fed395
try different path 2017-10-25 00:07:39 -04:00
Joey Hess
7688d64564
add bin path 2017-10-25 00:02:25 -04:00
Joey Hess
c03c1d800e
avoid stack runghc
Seems to want to recompile git-annex before running unrelated program.

stack ghc does not have that problem
2017-10-24 13:46:53 -04:00
Joey Hess
0804599941
--no-haddock 2017-10-24 13:37:57 -04:00
Joey Hess
21d6df8f91
use windows stack.yaml for additional stack commands 2017-10-24 13:30:51 -04:00
Joey Hess
2c71f4a3a8
remove unncessary withcyg 2017-10-24 12:05:00 -04:00
Joey Hess
6f7db3df09
add to PATH 2017-10-24 12:02:14 -04:00
Joey Hess
a732dbee31
get rsync before build 2017-10-22 15:22:24 -04:00
Joey Hess
c745480882
typo 2017-10-22 15:20:26 -04:00
Joey Hess
008e991ff5
run only 1 job
Seeing interrmittent build failures that may be related to stack's
concurrency
2017-10-22 15:02:43 -04:00
Joey Hess
87c6f506e7
disable haddock 2017-10-22 14:50:09 -04:00
Joey Hess
0e766a41c6
try lts-9.10 with old win32
toolchain issue is preventing nightly from building anything on windows
2017-10-22 14:20:54 -04:00
Joey Hess
11928ae432
add IfElse version 2017-10-22 14:08:45 -04:00
Joey Hess
fda47b0a01
switch to nightly-2017-10-22 for newer win32 2017-10-22 14:03:10 -04:00
Joey Hess
79f56fd449
point packages dir at top 2017-10-22 13:59:42 -04:00
Joey Hess
84a517dbcb
windows-specific stack.yaml to enable Win32 2017-10-22 13:58:21 -04:00
Joey Hess
7391c49305
temporarily disable rm to get building 2017-10-22 13:42:46 -04:00
Joey Hess
bc08ef886d
better fix for rm path 2017-10-22 13:40:01 -04:00
Joey Hess
836e70424d
add cygwin bin to path 2017-10-22 13:39:26 -04:00
Joey Hess
35c807b5bc
remove msysgit cruft 2017-10-22 13:38:11 -04:00
Joey Hess
b744588459
remove ghc --version
using stack, version is pinned
2017-10-22 13:37:18 -04:00
Joey Hess
122205e99d
force update 2017-10-22 13:22:55 -04:00
Joey Hess
59a0308f5f
update windows build scripts to use stack
Not tested yet.

The EvilLinker workaround is removed. That got fixed in ghc 8.0.1,
(per https://ghc.haskell.org/trac/ghc/ticket/8596)
which will finally be used by the windows autobuilder now.

I have not deleted the EvilLinker yet (or closed its bugs).

This commit was sponsored by John Peloquin on Patreon.
2017-10-17 13:00:29 -04:00
Joey Hess
ddff4ebc84
log ghc version 2017-10-16 15:29:45 -04:00
Joey Hess
19f0f42cf3
avoid cloning xss-sanitize when clone already exists 2017-10-16 15:19:22 -04:00
Joey Hess
c8cc32335f
try working around strange cabal install bug for xss-sanitize 2017-10-16 15:11:50 -04:00
Joey Hess
1b6b951cc0
try explicitly installin xss-sanitize 2017-08-23 12:37:16 -04:00
Joey Hess
24a6634934
stop removing cabal 2017-08-23 11:31:14 -04:00
Joey Hess
79020a9c26
avoid broken version of xss-sanitize
https://github.com/yesodweb/haskell-xss-sanitize/issues/17
2017-08-17 17:12:48 -04:00
Joey Hess
677fa66249
temporarily --force-reinstalls 2017-08-17 13:57:47 -04:00
Joey Hess
cd4c97156e
force update of cabal libs 2017-08-17 11:00:37 -04:00
Edward Betts
0750913136
correct spelling mistakes 2017-02-12 17:30:23 -04:00
Joey Hess
ab66bbfeb6
Merge branch 'master' into no-xmpp 2016-12-24 15:01:55 -04:00
Joey Hess
95c8b37544
Linux standalone: Improve generation of locale definition files, supporting locales such as, en_GB.UTF-8. 2016-12-19 17:03:52 -04:00
Joey Hess
be5cd15311
urk
test failures were being ignored for complex reasons, new autobuilder broke that; bring it back
2016-12-01 12:18:00 -04:00
Joey Hess
d58148031b
remove xmpp support
I've long considered the XMPP support in git-annex a wart.
It's nice to remove it.

(This also removes the NetMessager, which was only used for XMPP, and the
daemonstatus's desynced list (likewise).)

Existing XMPP remotes should be ignored by git-annex.

This commit was sponsored by Brock Spratlen on Patreon.
2016-11-14 14:53:08 -04:00
Joey Hess
aacd9b190d
Linux standalone: Include locale files in the bundle, and generate locale definition files for the locales in use when starting runshell.
Currently only done for utf-8 locales because the charset can easily be
told for those. Other locales don't include the charset in their name.

The locale definition is generated under git-annex.linux/locales.
So, this only works if the user can write there.

If locale generation fails for any reason, it's silently skipped.

The git-annex-standalone.deb installs the bundle under /usr, so this locale
generation won't work for non-root users.
2016-10-04 16:37:43 -04:00
Joey Hess
a93e38e8fc
add LOCPATH to GIT_ANNEX_STANDLONE_ENV 2016-10-04 15:32:58 -04:00
Joey Hess
c079811226
Linux standalone: Add back the LOCPATH=/dev/null hack to avoid the system locale-archive being read.
Version mismatches between the system locale-archive and the glibc in the
bundle have been observed to cause git crashes.

Unfortunately, this causes locales to not be used in the linux standalone
bundle, as was the case until version 6.20160419.

glibc hardcodes the path to /usr/lib/locale/locale-archive and does not
let an environment variable cause a different locale-archive file to be used.

The only other option to include locales in the bundle would be to include
exploded locale definition directories in the bundle for a number of
locales, generated by localedef. But these take at least 300 kb per locale,
and there are a great many locales; it would be hundreds of megabytes to
include them all.

(Hmm, we could include localdef in the bundle, and check LANG in runshell
and compile the locale directories on the fly. This would need
/usr/share/i18n/ and /usr/lib/locale-archive to be included in the bundle.
It's.. doable.)

I know this is going to once again cause users of the bundle to complain
that eg, ls doesn't show their unicode filenames right. Better than strange
crashes though.
2016-10-04 12:53:09 -04:00
Joey Hess
dceb0cc627
typo 2016-09-06 14:51:15 -04:00
Joey Hess
b9e2061b2a
stop removing old builds again 2016-09-06 14:38:47 -04:00
Joey Hess
833a80ae89
pin mwc-random to last known working version on windows 2016-09-06 14:18:04 -04:00
Joey Hess
fd02af6136
constrain cryptonite version to avoid windows build fail
https://github.com/haskell-crypto/cryptonite/issues/99
2016-09-06 13:50:55 -04:00
Joey Hess
022382160a
try using cabal constraint 2016-09-06 13:25:02 -04:00