My build script does the following:
- Compiles my game
- Packs everything required into a Zip archive
- Publishes this archive to itch via the butler command
Because I prefer to save time and bandwidth, if possible, my script uses the --if-changed switch. This worked well under Windows 7, last year when I was last actively working on this project. This year, I'm running from Linux Mint and butler chokes and fails with the following output:
• Comparing against previous build... checking for differences: lstat /windows/Users/simulatoralive/Documents/Projects/Programming/simulatoralive/BlockGameEngine/bigblockengine-0.21.7-Alpha-bin.zip/bigblockengine/mods: not a directory
I can assure you that the directory in question is definitely a directory. It doesn't fail when I remove the --if-changed switch, which is what I'll be doing for the time being. I even tried switching to an older version of butler matching the version I used under Windows and this did not work either.
I've had an irritating time testing and investigating this bug, because the --dry-run switch does not perform the file comparisons like one might expect it to when combined with --if-changed. What I ended up doing was making a pair of hidden test channels to test publishing to, to investigate further.
This bug isn't too big of a deal, but it is a bit frustrating. The main reason I was using the --if-changed switch is that most of the files in my game's archive are support libraries and their required libraries. These don't normally change from one upload to the next and my changes are often quite small by comparison. I would prefer not to have to wait for an upload of close to ten megs for a tiny, one-line code change for a bug fix.
This time and bandwidth savings is actually the reason I switched to using butler over manual uploads.
Thank you.
Edit: Here's a link to the game in question: https://simulatoralive.itch.io/bigblockengine
The file "bigblockengine-win-linux-osx-alpha.zip" is the one you'd want to look at if you want to analyze in detail what went wrong.