![Joey Hess](/assets/img/avatar_default.png)
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.
52 lines
1.1 KiB
Haskell
52 lines
1.1 KiB
Haskell
{- More control over touching a file.
|
|
-
|
|
- Copyright 2011 Joey Hess <id@joeyh.name>
|
|
-
|
|
- License: BSD-2-clause
|
|
-}
|
|
|
|
{-# LANGUAGE CPP #-}
|
|
|
|
module Utility.Touch (
|
|
TimeSpec(..),
|
|
touchBoth,
|
|
touch
|
|
) where
|
|
|
|
#if ! defined(mingw32_HOST_OS)
|
|
|
|
#if MIN_VERSION_unix(2,7,0)
|
|
|
|
import System.Posix.Files
|
|
import System.Posix.Types
|
|
|
|
newtype TimeSpec = TimeSpec EpochTime
|
|
|
|
{- Changes the access and modification times of an existing file.
|
|
Can follow symlinks, or not. Throws IO error on failure. -}
|
|
touchBoth :: FilePath -> TimeSpec -> TimeSpec -> Bool -> IO ()
|
|
touchBoth file (TimeSpec atime) (TimeSpec mtime) follow
|
|
| follow = setFileTimes file atime mtime
|
|
| otherwise = setSymbolicLinkTimesHiRes file (realToFrac atime) (realToFrac mtime)
|
|
|
|
touch :: FilePath -> TimeSpec -> Bool -> IO ()
|
|
touch file mtime = touchBoth file mtime mtime
|
|
|
|
#else
|
|
import Utility.Touch.Old
|
|
#endif
|
|
|
|
#else
|
|
|
|
import System.PosixCompat
|
|
|
|
newtype TimeSpec = TimeSpec EpochTime
|
|
|
|
{- Noop for Windows -}
|
|
touchBoth :: FilePath -> TimeSpec -> TimeSpec -> Bool -> IO ()
|
|
touchBoth _ _ _ _ = return ()
|
|
|
|
touch :: FilePath -> TimeSpec -> Bool -> IO ()
|
|
touch _ _ _ = return ()
|
|
|
|
#endif
|