Opened 4 years ago

Last modified 14 months ago

#1814 new task

[Git] [Step 2] Create update.bat to sync windows binaries

Reported by: k776 Owned by:
Priority: Must Have Milestone: Backlog
Component: Build & Packages Keywords:
Cc:

Description (last modified by k776)

With our move to git, we will be removing pyrogenesis.exe, pyrogenesis.pdb, and AtlasUI.dll (these three get generated by the autobuilder). As a result, we need an update.bat, or update.exe (whichever is easier) for windows users which can pull the latest binaries.

(quick background, the autobuilder will generate binaries for different code branches, and when its done, it will commit an updated manifest.txt file into the branch the binaries relate to, which points to the latest files)

  • Use the manifest.txt file in the 0 A.D. code repo (probably stored at binaries/system), which contains a list of files, an md5 checksum for each file, and a url to download them from. Here is an example manifest:
AtlasUI.dll 52fe3f8c2725445b488f646dca28021f http://.../AtlasUI.dll
pyrogenesis.exe 89158e5ea74d5987ed8be026e7f090ce http://.../pyrogenesis.exe
pyrogenesis.pdb 44889d0fbf2f48972992c2a4d9e629c2 http://.../pyrogenesis.pdb
  • Compare the manifest with the md5 of the current files. If no current file, download it. If existing file exists, find out if checksum has changed, and download the file if different.
  • Once a file is downloaded, check file downloaded properly by comparing the files checksum with the checksum of the manifest.

This will allow us to easily add files in the future if need be (i.e. additional windows binary/dlls) and allows artists quick access to pull the latest binaries.

Change History (18)

comment:1 Changed 4 years ago by k776

  • Description modified (diff)

comment:2 Changed 4 years ago by zoot

I wonder if it would be useful to make some kind of launcher (perhaps separately from the updater), which would automatically update the binaries and then, once the update is finished, launch the game.

Then the artists would just have to get into the habit of starting the launcher instead of pyrogenesis.exe when they want to open the game - the rest of the process would be as seamless as it is now.

comment:3 Changed 4 years ago by k776

  • Summary changed from Create update.bat to sync windows binaries to [Git] [Step 2] Create update.bat to sync windows binaries

comment:4 Changed 4 years ago by k776

  • Milestone changed from Alpha 13 to Alpha 14

comment:5 Changed 4 years ago by historic_bruno

  • Owner set to Philip

comment:6 Changed 4 years ago by beau

  • Owner changed from Philip to beau

comment:7 Changed 4 years ago by beau

  • Owner changed from beau to Philip

comment:8 Changed 4 years ago by historic_bruno

Latest plan is to have autobuilt binaries stored in SVN (see #1819), which is easy on Linux and OS X; we specify that as part of the build process and make an e.g. Python script to automate grabbing dependencies, if applicable.

It's a bit more complicated on Windows, as the required command line tools aren't included by default or "easy" for people to acquire and install. Instead, we'll have a dev package that people download, that contains win32 binaries for svn, git, python, and their dependencies. They extract the package where we tell them, then run the update script to retrieve autobuilt and library win32 binaries from the SVN repo (this part will work the same as on Linux/OS X).

comment:9 Changed 4 years ago by k776

  • Milestone changed from Alpha 14 to Alpha 15

comment:10 Changed 3 years ago by leper

  • Milestone changed from Alpha 15 to Alpha 16

comment:11 Changed 3 years ago by leper

  • Milestone changed from Alpha 16 to Alpha 17

comment:12 Changed 3 years ago by historic_bruno

  • Owner Philip deleted

comment:13 Changed 3 years ago by historic_bruno

NSClient++ (an open source server monitoring client) has an interesting build process on Windows, and may contain some bits we find useful. I recently built it to debug an issue I encountered. The process is more painful than ours, because no prebuilt win32 binaries are provided by the project, instead the dependency source code is pulled in via Python scripts (very similar to our build-osx-libs.sh on OS X) and everything is then built with msbuild (MSVC command line tool). But things break, and it requires some fiddling to adjust the script and the options aren't well documented.

However, we might be able to use their build scripts to automate rebuilding of our Windows dependencies, it has some nice features like conversion of old VC projects to the newer format when a newer compiler is used, supports 32- and 64-bit builds, and creates debug and release builds.

There may be other things we can learn from the project, for instance they switched from SVN to git a few years ago. They use Travis as continuous integration platform.

Last edited 3 years ago by historic_bruno (previous) (diff)

comment:14 Changed 3 years ago by leper

  • Milestone changed from Alpha 17 to Alpha 18

comment:15 Changed 2 years ago by Itms

  • Milestone changed from Alpha 18 to Alpha 19

comment:16 Changed 21 months ago by mimo

  • Milestone changed from Alpha 19 to Alpha 20
  • Priority changed from Release Blocker to Must Have

comment:17 Changed 14 months ago by mimo

moved to backlog as no progress since ages

comment:18 Changed 14 months ago by mimo

  • Milestone changed from Alpha 20 to Backlog
Note: See TracTickets for help on using tickets.