Commit graph

578 commits

Author SHA1 Message Date
Joey Hess
a5bc46f81a
pass -m when signing tag 2025-10-02 16:06:34 -04:00
Joey Hess
3cae169021
sign tags 2025-10-02 15:58:31 -04:00
Joey Hess
c7742404c8
push tags earlier 2025-10-02 14:43:58 -04:00
Joey Hess
54a33b4934
make git-annex_$version tags in the downloads repo
Note the use of git tag -f, this way if it takes several tries to get a
release published, it will use the final one for the tag.

Tags have been retrospectively added for past releases, using this:

for v in $(git log --oneline --grep="publishing git-annex "| sed 's/ publishing git-annex / /'); do foo=$(echo "$v" | sed 's/ .*//'); bar=$(echo "$v" | sed 's/.* //');  git tag git-annex_"$bar" "$foo" ; done
2025-10-02 13:29:55 -04:00
Joey Hess
69bc7a0966
remove unnecessary import 2025-09-25 13:27:43 -04:00
Joey Hess
6fcccbba19
clean up imports needed by old versions of ghc
Now that ghc 9.0.2 is the oldest supported version.

Eg cruft from
https://web.archive.org/web/20190424185034/https://prime.haskell.org/wiki/Libraries/Proposals/SemigroupMonoid

Sponsored-by: Jack Hill
2025-09-23 13:55:13 -04:00
Joey Hess
f2abeaae12
fix windows build 2025-09-23 13:02:24 -04:00
Joey Hess
b397e71341
Add git-remote-p2p-annex and git-remote-tor-annex to standalone builds 2025-09-22 10:20:36 -04:00
Joey Hess
40d0b5f2ef
fix bug in recent commit 2025-09-16 14:32:04 -04:00
Joey Hess
adf1dbb5ca
always import Utility.Process rather than System.Process
This is groundwork for Utility.Process doing some extra locking, for
which it's important that it's always used for process creation.
2025-09-10 13:53:50 -04:00
Joey Hess
6f9a9c81f6
convert all readFile, writeFile, and appendFile to close-on-exec safe versions
Even in the Build system. This allows grepping to make sure that there
are none left un-converted:

git grep "writeFile" |grep -v F\\.| grep -v doc/|grep -v writeFileString | grep -v writeFileProtected |grep -v Utility/FileIO
git grep "readFile" |grep -v F\\.| grep -v doc/|grep -v readFileString |grep -v Utility/FileIO
git grep "appendFile" |grep -v F\\.| grep -v doc/|grep -v appendFileString |grep -v Utility/FileIO

Might be nice to automate that to prevent future mistakes...

Sponsored-by: the NIH-funded NICEMAN (ReproNim TR&D3) project
2025-09-05 15:44:32 -04:00
Joey Hess
6662b49d35
convert all bytestring readFile/writeFile to use Utility.FileIO
This is groundwork for setting the close-on-exec flag when opening
files, which will be done in Utility.FileIO or a similar module using the same
function names. The bytestring library does not set that flag, even though it
could, and IMHO should.

Note that there are many calls to the Prelude's readFile/writeFile/appendFile
still in git-annex, and this does not address those.

Sponsored-by: the NIH-funded NICEMAN (ReproNim TR&D3) project
2025-09-05 12:13:28 -04:00
Joey Hess
117b520825
Removed support for git versions older than 2.22.
Which fixed an OOM with unlocked files.

Debian oldoldstable is the oldest version of git that git-annex needs to
support, since it's used in the amd64ancient build. That has 2.30.

At this point, the only complication git-annex for an bug in old
versions of git is that git bundle was broken before git 2.31.
That prevents git-remote-annex from working with git 2.30.

Sponsored-by: Luke T. Shumaker
2025-08-21 11:22:59 -04:00
Joey Hess
2686d2d7ea
Removed support for git versions older than 2.5.
This entirely removes Git.BuildVersion, which avoids the possibility that
git-annex will behave differently based on the version of git it was built
with, rather than the version it's used with.

Debian oldoldstable is the oldest version of git that git-annex needs to
support, since it's used in the amd64ancient build.

cabal configure will fail if the git version is too old.

Sponsored-by: Nicholas Golder-Manning
2025-08-21 11:04:26 -04:00
Joey Hess
86e9e88530
add git-remote-p2p-annex
Added git-remote-p2p-annex, which allows git pull and push to P2P networks
provided by external commands.

This is a refactor of git-remote-tor-annex, and should just work. Except
possibly for quirks with the address parsing. I've checked that the address
parsing basically works.

One thing I don't understand is why git-remote-tor-annex removes "/*" from
the end of the address. The git history does not provide any hints. So I
didn't make git-remote-p2p-annex do the same. Maybe that is needed in some
situation? But, a P2P address could contain "/", so removing it would be a
problem. I can't see anything in gitremote-helpers(7) about why the url
might get such a thing added to the end of it. My guess is that is not
needed for tor either (but does no harm there since onion addresses never
contain "/").

At this point, the implementation of generic P2P transports needs only
remotedaemon support.
2025-07-30 15:25:56 -04:00
Joey Hess
70a2661334
OsPath conversion for OSXMkLibs 2025-02-14 16:53:00 -04:00
Joey Hess
e8b00faea8
Merge branch 'master' into ospath 2025-02-14 16:28:43 -04:00
Joey Hess
6d5c352485
further fix OSX packaging program builds
Broken by commit e5be81f8d4
2025-02-14 15:40:48 -04:00
Joey Hess
406527570e
OsPath conversion of DistributionUpdate 2025-02-12 13:27:34 -04:00
Joey Hess
2567bc0e2c
avoid head warnings with recent ghc versions 2025-02-12 12:43:03 -04:00
Joey Hess
bab26da74b
Merge branch 'master' into ospath 2025-02-11 16:56:17 -04:00
Joey Hess
2057bc1c2b
fix windows and OSX packaging program builds
Broken by commit e5be81f8d4
2025-02-11 16:53:01 -04:00
Joey Hess
a149336a59
OsPath transition Windows build fixes
This gets it building on Windows again, with 1 test suite failure
(addurl).

Sponsored-by: Kevin Mueller
2025-02-11 15:40:53 -04:00
Joey Hess
f8bb9a8734
replace removeLink with removeFile
same reasoning as in commit 5cc8d9d03b
2025-02-11 13:41:26 -04:00
Joey Hess
c85d5a0dc8
OsPath conversion of linuxstandalone builder
Sponsored-by: Joshua Antonishen
2025-02-11 12:12:27 -04:00
Joey Hess
84291b6014
bring back OsPath changes
I hope that the windows test suite failure on appveyor was fixed by
updating to a newer windows there. I have not been able to reproduce
that failure in a windows 11 VM run locally.
2025-01-30 14:34:21 -04:00
Joey Hess
97c83152d6
Merge branch 'master' into ospath 2025-01-29 18:48:02 -04:00
Joey Hess
aaf4dd3b9c
fix liuxstandalone build 2025-01-29 18:12:00 -04:00
Joey Hess
98a0a9ddff
optimise literalOsPath
Taking a ShortByteString and using OverloadedStrings should avoid it
being converted from a String.

The reason there is no IsString instance for OsPath is presumably the
bad behavior of IsString for ByteString on unicode btw. But
literalOsPath won't be used with unicode in git-annex.

Sponsored-by: unqueued
2025-01-27 16:36:29 -04:00
Joey Hess
ea775baccd
more OsPath conversion
Git.Types now uses it, as does TopFilePath, making for plenty of new
compile errors needing fixing.

Sponsored-by: Brock Spratlen
2025-01-23 16:15:00 -04:00
Joey Hess
c3c8870752
add System.FilePath to this conversion
It seems to make sense to convert both System.Directory and
System.FilePath uses to OsPath in one go. This will generally look like
replacing RawFilePath with OsPath in type signatures, and will be driven
by the now absolutely massive pile of compile errors.

Got a few modules building in this new regime.

Sponsored-by: Jack Hill
2025-01-23 11:07:29 -04:00
Joey Hess
05bdce328d
start converting from System.Directory to System.OsPath
This is the start of a long road, got the first few files to compile
after this large change.

Sponsored-by: mycroft
2025-01-23 10:25:20 -04:00
Joey Hess
60d0dc9c76
convert from readFileStrict
More of these still to convert, but need to be careful of newline
translation.
2025-01-22 14:49:31 -04:00
Joey Hess
1ceece3108
RawFilePath conversion of System.Directory
By using System.Directory.OsPath, which takes and returns OsString,
which is a ShortByteString. So, things like dirContents currently have the
overhead of copying that to a ByteString, but that should be less than
the overhead of using Strings which often in turn were converted to
RawFilePaths.

Added Utility.OsString and the OsString build flag. That flag is turned
on in the stack.yaml, and will be turned on automatically by cabal when
built with new enough libraries. The stack.yaml change is a bit ugly,
and that could be reverted for now if it causes any problems.

Note that Utility.OsString.toOsString on windows is avoiding only a
check of encoding that is documented as being unlikely to fail. I don't
think it can fail in git-annex; if it could, git-annex didn't contain
such an encoding check before, so at worst that should be a wash.
2025-01-20 19:17:33 -04:00
Joey Hess
da5e195597
remove i386ancient and need at least debian stable to build
* Removed the i386ancient standalone tarball build for linux, which
  was increasingly unable to support new git-annex features.
* Removed support for building with ghc older than 9.0.2,
  and with older versions of haskell libraries than are in current Debian
  stable.
* stack.yaml: Update to lts-23.2.

Note that i386ancient was targeting linux 2.6.32, which has been EOL for
over 9 years now. Any old system still using such a kernel is certainly highly
insecure. And I suspect i386ancient had its own insecurities due to haskell
libraries and C libraries not having been updated.
2025-01-01 14:15:55 -04:00
Joey Hess
ff5193c6ad
Merge branch 'master' into git-remote-annex 2024-05-10 14:20:36 -04:00
Joey Hess
a01d64a4ad
add git-remote-annex stub and build machinery
Renamed git-remote-annex.sh, keeping it around for now for reference.

Sponsored-by: Graham Spencer on Patreon
2024-05-06 13:05:58 -04:00
Yaroslav Halchenko
87e2ae2014
run codespell throughout fixing typos automagically
=== Do not change lines below ===
{
 "chain": [],
 "cmd": "codespell -w",
 "exit": 0,
 "extra_inputs": [],
 "inputs": [],
 "outputs": [],
 "pwd": "."
}
^^^ Do not change lines above ^^^
2024-05-01 15:46:21 -04:00
Joey Hess
784be819b3
use unshorted hash in version
short hashes can be lengthened by unrelated pulls into a repo, breaking
reproducible builds
https://lists.reproducible-builds.org/pipermail/rb-general/2023-September/003072.html
2023-09-20 09:31:59 -04:00
Joey Hess
32cb2bd3fa
Fix linker optimisation in linux standalone tarballs
Was only symlinking when there is a usr/ directory, but with usr/ merge,
there are none.

Sponsored-by: Dartmouth College's Datalad project
2023-09-07 12:59:27 -04:00
Joey Hess
8e6eaad590
remove dead code 2023-08-28 12:34:24 -04:00
Joey Hess
571a516ed2
Stop bundling curl in the OSX dmg
New curl binary links to libldap with a @loader_path that prevents using
the binary when the dmg is used elsewhere.
See https://github.com/datalad/git-annex/issues/170

git-annex doesn't use curl by default anyway, so it doesn't really need to
be included in the dmg.
2023-08-15 14:21:53 -04:00
Joey Hess
10b5f79e2d
fix empty tree import when directory does not exist
Fix behavior when importing a tree from a directory remote when the
directory does not exist. An empty tree was imported, rather than the
import failing. Merging that tree would delete every file in the
branch, if those files had been exported to the directory before.

The problem was that dirContentsRecursive returned [] when the directory
did not exist. Better for it to throw an exception. But in commit
74f0d67aa3 back in 2012, I made it never
theow exceptions, because exceptions throw inside unsafeInterleaveIO become
untrappable when the list is being traversed.

So, changed it to list the contents of the directory before entering
unsafeInterleaveIO. So exceptions are thrown for the directory. But still
not if it's unable to list the contents of a subdirectory. That's less of a
problem, because the subdirectory does exist (or if not, it got removed
after being listed, and it's ok to not include it in the list). A
subdirectory that has permissions that don't allow listing it will have its
contents omitted from the list still.

(Might be better to have it return a type that includes indications of
errors listing contents of subdirectories?)

The rest of the changes are making callers of dirContentsRecursive
use emptyWhenDoesNotExist when they relied on the behavior of it not
throwing an exception when the directory does not exist. Note that
it's possible some callers of dirContentsRecursive that used to ignore
permissions problems listing a directory will now start throwing exceptions
on them.

The fix to the directory special remote consisted of not making its
call in listImportableContentsM use emptyWhenDoesNotExist. So it will
throw an exception as desired.

Sponsored-by: Joshua Antonishen on Patreon
2023-08-15 12:57:41 -04:00
Joey Hess
fb640bc2f4
support building with unix-compat 0.7
It removed System.PosixCompat.User.
2023-08-01 15:17:43 -04:00
Joey Hess
ff118cdfe8
fix formatting of \ continued shell examples in man pages
doc/git-annex-filter-branch.mdwn and one other file have these, and no
other files have \ at the end of line, so this should be safe
2023-07-13 19:55:38 -04:00
Joey Hess
96c372ac85
document how to include= a path with a space in it
POSIX character classes allowed in globs was a surprise, but just
happened to fall out of the implementation in a way that seems
to behave correctly.

mdwn2man has to be tweaked to render the example properly.
The line I modified is the one that strips ikiwiki wikilinks out of the
man page.

Sponsored-by: Graham Spencer on Patreon
2023-05-15 16:02:06 -04:00
Yaroslav Halchenko
84b0a3707a
Apply codespell -w throughout 2023-03-17 15:14:58 -04:00
Joey Hess
d8feda7a2f
added arm64-ancient build
Added arm64 build for ancient kernels, needed to support Android phones
whose kernels are too old to support kernels used by the current arm64
build.

Updated Android/git-annex-install to use it. (Also made it use i386-ancient
because that seems like a good idea.)

Sponsored-by: Noam Kremen on Patreon
2023-03-10 11:59:03 -04:00
Joey Hess
54ad1b4cfb
Windows: Support long filenames in more (possibly all) of the code
Works around this bug in unix-compat:
https://github.com/jacobstanley/unix-compat/issues/56
getFileStatus and other FilePath using functions in unix-compat do not do
UNC conversion on Windows.

Made Utility.RawFilePath use convertToWindowsNativeNamespace to do the
necessary conversion on windows to support long filenames.

Audited all imports of System.PosixCompat.Files to make sure that no
functions that operate on FilePath were imported from it. Instead, use
the equvilants from Utility.RawFilePath. In particular the
re-export of that module in Common had to be removed, which led to lots
of other changes throughout the code.

The changes to Build.Configure, Build.DesktopFile, and Build.TestConfig
make Utility.Directory not be needed to build setup. And so let it use
Utility.RawFilePath, which depends on unix, which cannot be in
setup-depends.

Sponsored-by: Dartmouth College's Datalad project
2023-03-01 15:55:58 -04:00
Joey Hess
d079fb0578
work around ldd crash on arm64 autobuilder
This does mean it has to run ldd once per executable, which is actually
quite a number of times, so will be a bit slower.

Sponsored-by: Luke Shumaker on Patreon
2023-01-28 14:26:01 -04:00