git-annex/doc/devblog/day_15-17__Android_rebuild.mdwn
Joey Hess e213ef310f git-annex (5.20140717) unstable; urgency=high
* Fix minor FD leak in journal code. Closes: #754608
  * direct: Fix handling of case where a work tree subdirectory cannot
    be written to due to permissions.
  * migrate: Avoid re-checksumming when migrating from hashE to hash backend.
  * uninit: Avoid failing final removal in some direct mode repositories
    due to file modes.
  * S3: Deal with AWS ACL configurations that do not allow creating or
    checking the location of a bucket, but only reading and writing content to
    it.
  * resolvemerge: New plumbing command that runs the automatic merge conflict
    resolver.
  * Deal with change in git 2.0 that made indirect mode merge conflict
    resolution leave behind old files.
  * sync: Fix git sync with local git remotes even when they don't have an
    annex.uuid set. (The assistant already did so.)
  * Set gcrypt-publish-participants when setting up a gcrypt repository,
    to avoid unncessary passphrase prompts.
    This is a security/usability tradeoff. To avoid exposing the gpg key
    ids who can decrypt the repository, users can unset
    gcrypt-publish-participants.
  * Install nautilus hooks even when ~/.local/share/nautilus/ does not yet
    exist, since it is not automatically created for Gnome 3 users.
  * Windows: Move .vbs files out of git\bin, to avoid that being in the
    PATH, which caused some weird breakage. (Thanks, divB)
  * Windows: Fix locking issue that prevented the webapp starting
    (since 5.20140707).

# imported from the archive
2014-07-17 11:27:25 -04:00

67 lines
3.1 KiB
Markdown

Made a release on Friday. But I had to rebuild the OSX and Linux standalone
builds today to fix a bug in them.
Spent the past **three days** redoing the whole Android build environment.
I've been progressively moving from my first hacked up Android build env to
something more reproducible and sane. Finally I am at the point where I can
run a shell script (well, actually, 3 shell scripts) and get an Android
build chroot. It's still not immune to breaking when new versions of
haskell libs are uploaded, but this is much better, and should be
maintainable going forward.
This is a good starting point for getting git-annex into the F-Droid app
store, or for trying to build with a newer version of the Android SDK and
NDK, to perhaps get it working on Android 4.3. (Eventually. I am so sick
of building Android stuff right now..)
Friday was all spent struggling to get ghc-android to build. I had not built
it successfully since February. I finally did,
on Saturday, and I have made my own fork of it which builds using a
known-good snapshot of the current development version of ghc. Building
this in a Debian stable chroot means that there should be no possibility
that upstream changes will break the build again.
With ghc built, I moved on to building all the haskell libs git-annex
needs. Unfortunately my build script for these also has stopped working
since I made it in April. I failed to pin every package at a defined
version, and things broke.
So, I redid the build script, and updated all the haskell libs to the
newest versions while I was at it. I have decided not to pin the library
versions (at least until I find a foolproof way to do it), so this new
script will break in the future, but it should break in a way I can fix up
easily by just refreshing a patch.
The new ghc-android build has a nice feature of at least being able to
compile Template Haskell code (though still not run it at compile time.
This made the patching needed in the Haskell libs quite a lot less. Offset
somewhat by me needing to make general fixes to lots of libs to build with
ghc head. Including some fun with `==#` changing its type from `Bool` to
`Int#`. In all, I think I removed around 2.5 thousand lines of patches!
(Only 6 thousand lines to go...)
Today I improved ghc-android some more so it cross builds several C libraries
that are needed to build several haskell libraries needed for XMPP.
I had only ever built those once, and done it by hand, and very hackishly.
Now they all build automatically too.
And, I put together a script that builds the debian stable chroot and
installs ghc-android.
And, I hacked on the EvilSplicer (which is sadly still needed) to
work with the new ghc/yesod/etc.
At this point, I have git-annex successfully building, including the APK!
----
In a bored hour waiting for a compile, I also sped up `git annex add`
on OSX by I think a factor of 10. Using cryptohash for hash calculation
now, when external hash programs are not available. It's still a few
percentage points slower than external hash programs, or I'd use it by
default.
----
This period of important drudgery was sponsored by an unknown bitcoin
user, and by Bradley Unterrheiner and Andreas Olsson.