Commit graph

46718 commits

Author SHA1 Message Date
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
fb0ecb997f
Merge branch 'ospathwin2' into ospath 2025-02-11 16:46:01 -04:00
Joey Hess
6653e000f0 fix convertToWindowsNativeNameSpace bug
This fixes a test suite failure. The OsPath conversion made that be used
in more places, including addurl, which exposed an existing bug.
2025-02-11 20:37:40 -08:00
Joey Hess
769c7b3e65
avoid build warning on windows 2025-02-11 16:31:35 -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
9dc43396b3
fix comment 2025-02-11 14:07:01 -04:00
Joey Hess
27a0bacc49
improved OsPath conversion 2025-02-11 14:05:56 -04:00
Joey Hess
2fa1631041
more OsPath conversion
this avoids 1 copy
2025-02-11 14:03:20 -04:00
Joey Hess
19dea33f57
more OsPath conversion 2025-02-11 14:00:01 -04:00
Joey Hess
a5eaf3d4d2
use to/fromOsPath
Just to reduce the number of from/toRawFilePath calls, which I would
like to minimize.

In this build path, the two are the same though.
2025-02-11 13:54:51 -04:00
Joey Hess
780a379ab1
remove unused functions from Utility.RawFilePath 2025-02-11 13:49:17 -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
90eb1e2da6
update todo 2025-02-11 13:01:13 -04:00
Joey Hess
3bbabd6778
replace R.doesPathExist with doesPathExist
Equivilant, just avoids some ugliness.
2025-02-11 12:46:54 -04:00
Joey Hess
5dbaaae299
test suite now passes after OsPath conversion
The test suite was failing because of a bug in the Database/* modules.
I had replaced doesPathExist with doesDirectoryExist, but it was
checking the database file.

I have audited commit f1ba21d698 for
other changes to doesPathExist, and checked that doesDirectoryExist and
doesFileExist were used correctly.

The only change I found is in youtubeDl', where it used to return
directories that might have been created by youtube-dl. But it was
supposed to return media files, so changing it to use doesFileExist is
actually an improvement. Although only of theoretical benefit.

Note that it would actually be possible to keep using doesPathExist,
there is a version of that for OsPath as well. But the rest of these
changes seem safe.

Sponsored-by: Nicholas Golder-Manning
2025-02-11 12:44:09 -04:00
Joey Hess
c85d5a0dc8
OsPath conversion of linuxstandalone builder
Sponsored-by: Joshua Antonishen
2025-02-11 12:12:27 -04:00
Joey Hess
1d9251c143
Merge branch 'master' of ssh://git-annex.branchable.com 2025-02-10 17:23:31 -04:00
Joey Hess
2f9a384e48
stack.yaml: temporarily build with older ghc
And without ospath build flag as a consequence.

This is a temporary fix to build failures on the github CI for Windows
and OSX, which use too old a version of stack to support the nightly
ghc.

I have sent a patch to those workflows, and after it is applied, this
can be reverted.
2025-02-10 17:22:29 -04:00
Joey Hess
2ff716be30
OsPath build flag no longer depends on filepath-bytestring
However, filepath-bytestring is still in Setup-Depends.
That's because Utility.OsPath uses it when not built with OsPath.
It would be maybe possible to make Utility.OsPath fall back to using
filepath, and eliminate that dependency too, but it would mean either
wrapping all of System.FilePath's functions, or using `type OsPath = FilePath`

Annex.Import uses ifdefs to avoid converting back to FilePath when not
on windows. On windows it's a bit slower due to that conversion.
Utility.Path.Windows.convertToWindowsNativeNamespace got a bit
slower too, but not really worth optimising I think.

Note that importing Utility.FileSystemEncoding at the same time as
System.Posix.ByteString will result in conflicting definitions for
RawFilePath. filepath-bytestring avoids that by importing RawFilePath
from System.Posix.ByteString, but that's not possible in
Utility.FileSystemEncoding, since Setup-Depends does not include unix.
This turned out not to affect any code in git-annex though.

Sponsored-by: Leon Schuermann
2025-02-10 16:39:55 -04:00
Joey Hess
ce697aa8ae
merging the two lines of OsPath conversion commits 2025-02-10 15:41:34 -04:00
Joey Hess
f1ba21d698 OsPath conversion
While some RawFilePath and FilePath remain, this converts most of
git-annex to using OsPath.

(When built without the OsPath build flag, is falls back to using
type OsPath = RawFilePath.)

The goals are
1) improved performance by using OsPath end-to-end when possible
2) potentially avoiding memory use problems caused by pinned strict
   ByteString, since OsPath uses ShortByteString
3) eventually eliminating the filepath-bytestring dependency so I don't
   need to keep maintaining that library
   (this doesn't get all the way, but close)
4) generally improved type safety, since OsPath is a newtype, while
   FilePath and RawFilePath are just type aliaes.

This is the result of a type checker driven process. I started by
converting from System.Directory to System.Directory.OsPath, and from
System.FilePath to System.OsPath. Then I fixed all the compile errors,
which took 3 weeks of work.

Unfortunately, there are several test suite failures at this point.
Also, it only has been built on linux, on windows and OSX there are
probably ifdefs whose code still needs to be converted.

Note that there is a parallel line of commits, starting with
05bdce328d
which is the incremental progress as I worked on this. It will be merged
with this commit. In some cases, commits in that line explain in more
details the reasons for some specific changes.
2025-02-10 15:24:28 -04:00
Joey Hess
e2d74f72df
fix reversions
Oops, in 0b9e9cbf70 I lost takeDirectory
in several places.

With this fixed, the test suite no longer utterly blows up, but still
fails in 7 places due to other bugs introduced in the OsPath conversion.

Sponsored-by: Graham Spencer
2025-02-10 15:18:10 -04:00
Joey Hess
c730d00b6e
more OsPath conversion (749/749)
Builds with and without OsPath build flag.

Unfortunately, the test suite fails.

Sponsored-by: unqueued on Patreon
2025-02-10 14:59:20 -04:00
Joey Hess
20ed039d59
don't export pack and unpack
These are too widly used for other things to make sense to export OsPath
versions of them. And OsString also provides them and gets imported
qualified when needed.
2025-02-10 12:34:13 -04:00
Joey Hess
2d224e0d28
more OsPath conversion (658/749)
At this point the test suite builds, and mostly the assistant is left.

Sponsored-by: unqueued
2025-02-08 15:27:44 -04:00
thk
e333ef9337 2025-02-08 06:59:34 +00:00
thk
09d47726b7 Added a comment: iroh 2025-02-08 06:56:32 +00:00
Joey Hess
5eef09a3cc
more OsPath conversion (650/749)
Sponsored-by: Nicholas Golder-Manning
2025-02-07 17:03:31 -04:00
Joey Hess
c74c75b352
more OsPath conversion (639/749)
Sponsored-by: k0ld
2025-02-07 16:07:05 -04:00
Joey Hess
a5d48edd94
more OsPath conversion (602/749)
Sponsored-by: Brock Spratlen
2025-02-07 14:46:11 -04:00
Joey Hess
2d1db7986c
more OsPath conversion (572/749)
Sponsored-by: Jack Hill
2025-02-06 16:18:52 -04:00
Joey Hess
cb2c069ad1
Revert "update"
This reverts commit f5c6dc7cfb.
2025-02-06 11:42:49 -04:00
Joey Hess
874882efc4
Revert "update"
This reverts commit 3464612445.
2025-02-06 11:41:37 -04:00
Joey Hess
3464612445
update 2025-02-06 11:41:10 -04:00
Joey Hess
f5c6dc7cfb
update 2025-02-06 11:40:03 -04:00
Joey Hess
0811531b59
more OsPath conversion (542/749)
Sponsored-by: Luke T. Shumaker
2025-02-06 11:38:14 -04:00
Joey Hess
0d2b805806
more OsPath conversion (520/749)
Sponsored-by: mycroft
2025-02-05 15:07:59 -04:00
Joey Hess
9394197621
Merge branch 'master' into ospath 2025-02-05 13:31:07 -04:00
Joey Hess
0b9e9cbf70
more OsPath conversion (502/749)
Sponsored-by: Kevin Mueller on Patreon
2025-02-05 13:29:58 -04:00
Joey Hess
b28433072c
more OsPath conversion (475/749)
Sponsored-by: Nicholas Golder-Manning
2025-02-05 12:14:56 -04:00
Joey Hess
7805cd89ad
OsPath conversion of Annex.YouTubeDl
The change of R.doesPathExist to doesFileExist I think fixes a reversion
introduced in commit 1ceece3108. Before
that commit, it was doesFileExist, and I assume to point is that this is
only supposed to return files, not any subdirectories that yt-dlp might
create while running.
2025-02-05 11:56:26 -04:00
Joey Hess
85fa337f61
OsPath conversion of Remote.Adb
Note that the additional use of System.FilePath.Posix likely fixes a
problem if this were used on windows. The AndroidPath uses / directory
separators. Before this, on windows, \ would have been used.

The change to newtype AndroidPath is only documentation.
2025-02-05 11:16:20 -04:00
Joey Hess
4dc904bbad
more OsPath conversion
Sponsored-by: Leon Schuermann
2025-02-04 16:09:47 -04:00
Joey Hess
54f0710fd2
more OsPath conversion (464/749)
Sponsored-by: unqueued
2025-02-04 13:35:17 -04:00
lell
6ef9af5860 2025-02-04 09:35:42 +00:00
Joey Hess
cf986bc7e2
more OsPath conversion
Sponsored-by: Graham Spencer
2025-02-03 15:16:42 -04:00
Joey Hess
5cc8d9d03b
replace removeLink with removeFile
removeFile calls unlink so removes anything not a directory. So these
are replaceable in order to convert to OsPath.
2025-02-02 14:16:58 -04:00
Joey Hess
8af91a4c92
more OsPath conversion
Sponsored-by: Joshua Antonishen
2025-02-02 14:03:43 -04:00
Joey Hess
71195cce13
more OsPath conversion
Sponsored-by: k0ld
2025-02-01 14:06:38 -04:00