`git merge -s recursive -X ours` turned out to fail on binary
files. (I can't reproduce this behaviour in test repo, maybe
it is Git's bug.) So I switched to `checkout --ours`, which
worked in that case.
Result of build by previous commit:
https://gist.github.com/32309209c467853deedc
If a conflict happens, build-pkg should "resolve" it by selecting
one of versions. Git has a merge strategy "recursive" with an
option "ours" which does exactly what is needed but works only
for two heads. That is why multi-merge was replaced by multiple
merges of two heads.
check-requirements creates directories usr/<target> for all
targets. By default, MXE_TARGETS=i686-w64-mingw32.static, so
it creates a directory for i686-w64-mingw32.static only.
(Currently this doesn't affect history in usr/.git as git ignores
empty directories.)
The installation failed with the following note:
> Noting disappearance of mxe-requirements,
> which has been completely replaced.
Add an empty file mxe-requirements.dummy.$release
to prevent this.
Debian packages with "Depends: " do not work:
> Reading package lists... Error!
> E: Problem parsing dependency Depends
> E: Error occurred while processing mxe-source (NewVersion2)
> E: Problem with MergeList /var/lib/apt/lists/pkg.mxe.cc_repos_apt_debian_dists_wheezy_main_binary-amd64_Packages
> E: The package lists or status file could not be parsed or opened.
There are 20 huge packages like gcc that are compiled for a half
of the build time. The time left expected by the progess printer
changes dramatically after building a huge package. Information
about huge packages smoothes the changes.
Example: "4_1_3" -> "4.1.3-20151028".
Adding build-unique (making two builds in one day is unlikely)
Debian patch version tells APT that the package was updated.
Underscores in versions were previously replaced with dashes.
Example: 4_1_3 -> 4-1-3 (package winpcap).
"-3" is interpreted as Debian patch version, which is wrong.
Move common code (making a directory, control file, running tar,
dpkg-deb, etc) to function makePackage(). This function is used
by functions makeDeb() and makeMxeRequirementsDeb().