[com.blizzard.BattleNet.BaseApp] Add json editor 'jq'
A json editor is needed to modified Battlenet configuration easily. This has been discussed as something that could be helpful in #73 and #88.
Right now it is difficult to edit battle net configuration, without destroying the existing file. Using the json editor would make it much easier to make small configuration edits.
While jq runs fine, I've noticed some strange behavior I mentioned in https://github.com/winepak/applications/pull/73#issuecomment-406848447 related to ld-linux.so. I'm not sure how it would affect things if in the baseapp.
I changed the module around a bit on my side
- name: jq
config-opts:
- --prefix=/app
- --disable-maintainer-mode
- --disable-docs
sources:
- type: archive
url: https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
sha256: c4d2bfec6436341113419debf479d833692cc5cdab7eb0326b5a4d4fbe9f493c
modules:
- name: oniguruma
config-opts:
- --prefix=/app
sources:
- type: archive
url: https://github.com/kkos/oniguruma/releases/download/v6.8.2/onig-6.8.2.tar.gz
sha256: adeada5f6b54c2a6f58ff021831a01b18a62b55ea9935e972e36ebb19e7c4903
cleanup:
- /lib/debug
- /lib/*.a
- /lib/pkgconfig
- /include
- /share
cleanup:
- /lib/debug
- /lib/*.a
- /include
- /share
So that the oniguruma dependency would be built. jq and/or oniguruma seems to delete ld-linux.so.2 and I'm not sure why/how.
If you run
flatpak-builder --stop-at=setup --arch=x86_64 --force-clean --repo=winepak-repo builds/application/com.blizzard.BattleNet.BaseApp applications/com.blizzard.BattleNet.BaseApp/com.blizzard.BattleNet.BaseApp.yml
and check builds/application/com.blizzard.BattleNet.BaseApp you'll see ld-linux.so.2 exists. But if you run
flatpak-builder --stop-at=oniguruma --arch=x86_64 --force-clean --repo=winepak-repo builds/application/com.blizzard.BattleNet.BaseApp applications/com.blizzard.BattleNet.BaseApp/com.blizzard.BattleNet.BaseApp.yml
or
flatpak-builder --stop-at=jq --arch=x86_64 --force-clean --repo=winepak-repo builds/application/com.blizzard.BattleNet.BaseApp applications/com.blizzard.BattleNet.BaseApp/com.blizzard.BattleNet.BaseApp.yml
Then it gets deleted...
It's this command in the build script
ldconfig -n /app/lib
The final libtool command:
/bin/sh ./libtool --mode=install /usr/bin/install -c libjq.la '/app/lib'
libtool: install: /usr/bin/install -c .libs/libjq.so.1.0.4 /app/lib/libjq.so.1.0.4
libtool: install: (cd /app/lib && { ln -s -f libjq.so.1.0.4 libjq.so.1 || { rm -f libjq.so.1 && ln -s libjq.so.1.0.4 libjq.so.1; }; })
libtool: install: (cd /app/lib && { ln -s -f libjq.so.1.0.4 libjq.so || { rm -f libjq.so && ln -s libjq.so.1.0.4 libjq.so; }; })
libtool: install: /usr/bin/install -c .libs/libjq.lai /app/lib/libjq.la
libtool: install: /usr/bin/install -c .libs/libjq.a /app/lib/libjq.a
libtool: install: chmod 644 /app/lib/libjq.a
libtool: install: ranlib /app/lib/libjq.a
libtool: finish: PATH="/app/bin:/usr/bin:/sbin" ldconfig -n /app/lib
----------------------------------------------------------------------
Libraries have been installed in:
/app/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
I guess ldconfig deletes symbolic links ...
Changes here: https://github.com/winepak/applications/blob/pr/101/com.blizzard.BattleNet.BaseApp/com.blizzard.BattleNet.BaseApp.yml
Do you want to amend your pr or should I merge the branch above? You'll be credited for both.
Entire file:
id: com.blizzard.BattleNet.BaseApp
branch: stable
runtime: org.winepak.Platform
runtime-version: 3.0
sdk: org.winepak.Sdk
add-extensions:
org.winepak.Platform.Compat32:
directory: lib/32bit
version: 3.0
add-ld-path: lib
no-autodownload: false
org.winepak.Platform.Extension.corefonts:
directory: lib/extension/corefonts
version: 3.0
no-autodownload: false
org.winepak.Platform.Extension.vcrun2015:
directory: lib/extension/vcrun2015
version: 3.0
no-autodownload: false
tags:
- proprietary
finish-args:
- --socket=x11
- --socket=pulseaudio
- --share=ipc
- --share=network
- --device=dri
- --allow=multiarch
modules:
- name: setup
buildsystem: simple
build-commands:
- mkdir -p /app/lib/extension/corefonts
- mkdir -p /app/lib/extension/vcrun2015
- name: jq
config-opts:
- --prefix=/app
- --with-oniguruma=/app
- --disable-maintainer-mode
- --disable-docs
sources:
- type: archive
url: https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
sha256: c4d2bfec6436341113419debf479d833692cc5cdab7eb0326b5a4d4fbe9f493c
modules:
- name: oniguruma
config-opts:
- --prefix=/app
sources:
- type: archive
url: https://github.com/kkos/oniguruma/releases/download/v6.8.2/onig-6.8.2.tar.gz
sha256: adeada5f6b54c2a6f58ff021831a01b18a62b55ea9935e972e36ebb19e7c4903
cleanup:
- /lib/debug
- /lib/*.a
- /lib/pkgconfig
- /include
- /share
cleanup:
- /lib/debug
- /lib/*.a
- /include
- /share
- name: battlenet
only-arches:
- x86_64
buildsystem: simple
build-commands:
- install -d /app/bin
- install battlenet-installer /app/bin
sources:
- type: script
dest-filename: battlenet-installer
commands:
- if [ -z "$WINEPREFIX" ] ; then
- ' echo "No wine prefix set or is empty, abort."'
- ' exit 1'
- fi
-
- if [ -e "${WINEPREFIX}/dosdevices/c:/Program Files (x86)/Battle.net" ] ; then
- ' echo "This prefix already has an exisiting ''Battle.Net'' install at ${WINEPREFIX}"'
- ' echo "In order to install ''Battle.Net'' you must move or delete the current prefix."'
- ' exit 1'
- fi
-
- echo "Downloading installer..."
- mkdir -p "${XDG_CACHE_HOME}/winepak"
- curl -L --progress-bar --output "${XDG_CACHE_HOME}/winepak/battlenet-installer.exe" "https://www.battle.net/download/getInstallerForGame?os=win&version=LIVE&gameProgram=BATTLENET_APP"
-
- echo "Setting-up wine prefix..."
- wineboot
-
- echo "Installing Extension(s)..."
- source /app/lib/extension/corefonts/bin/corefonts-install64
- source /app/lib/extension/vcrun2015/bin/vcrun2015-install64
- source /app/lib/extension/vcrun2015/bin/vcrun2015-install64-wow64
-
- echo "Performing tweak(s)..."
- echo "Disable winemenubuilder.exe..."
- wine64 reg add "HKEY_CURRENT_USER\Software\Wine\DllOverrides" /v "winemenubuilder.exe" /d "" /f
-
- echo "Set Windows Version for Steam and Steamwebhelper..."
- wine64 reg add "HKEY_CURRENT_USER\Software\Wine\AppDefaults\Steam.exe" /v "Version" /t "REG_SZ" /d "win10" /f
- wine64 reg add "HKEY_CURRENT_USER\Software\Wine\AppDefaults\steamwebhelper.exe" /v "Version" /t "REG_SZ" /d "win10" /f
-
- echo "Disable crash dialog..."
- wine64 reg add "HKEY_CURRENT_USER\Software\Wine\WineDbg" /v "ShowCrashDialog" /t "REG_DWORD" /d "00000000" /f
-
- echo "Create Battle.net config"
- battlenet_config="${WINEPREFIX}/dosdevices/c:/users/${USER}/Application Data/Battle.net/Battle.net.config"
- battlenet_config_temp=$(mktemp)
-
- mkdir -p "${WINEPREFIX}/dosdevices/c:/users/${USER}/Application Data/Battle.net"
- jq --null-input '.Client.HardwareAcceleration = "false" | .Client.Sound.Enabled = "false" | .Client.Version.FirstRun = "false" | .Client.Version.Release.FirstRun = "false" | .Client.GameSearch.PerformedSearch = "true"' "$battlenet_config" > "$battlenet_config_temp"
- mv -f "$battlenet_config_temp" "$battlenet_config"
-
- echo "Installing application..."
- wine64 "${XDG_CACHE_HOME}/winepak/battlenet-installer.exe" "$@"
-
- echo "Delete SystemSurvey.exe..."
- if [ -f "${WINEPREFIX}/dosdevices/c:/Program Files (x86)/Battle.net/Battle.net*/SystemSurvey.exe" ] ; then
- ' mv "${WINEPREFIX}/dosdevices/c:/Program Files (x86)/Battle.net/Battle.net*/SystemSurvey.exe" "${WINEPREFIX}/dosdevices/c:/Program Files (x86)/Battle.net/Battle.net*/SystemSurvey.exe.bak"'
- fi
-
- echo "Delete Battle.net Helper.exe..."
- if [ -f "${WINEPREFIX}/dosdevices/c:/Program Files (x86)/Battle.net/Battle.net*/Battle.net Helper.exe" ] ; then
- ' mv "${WINEPREFIX}/dosdevices/c:/Program Files (x86)/Battle.net/Battle.net*/Battle.net Helper.exe" "${WINEPREFIX}/dosdevices/c:/Program Files (x86)/Battle.net/Battle.net*/Battle.net Helper.exe.bak"'
- fi
-
- echo "Installer finished"
- name: setup-compat32
buildsystem: simple
build-commands:
- mkdir -p /app/lib/32bit
- ln -s /app/lib/32bit/lib/ld-linux.so.2 /app/lib/ld-linux.so.2
Also above & in the branch includes the jq code to modify the Battle.net.config. The changes include:
.Client.HardwareAcceleration = "false"
.Client.Sound.Enabled = "false"
.Client.Version.FirstRun = "false"
.Client.Version.Release.FirstRun = "false"
.Client.GameSearch.PerformedSearch = "true"'
Interesting enough the Battle.net client doesn't even respect it's own configs, .Client.Version.Release.FirstRun should stop the patches note window from poping-up yet it still does...
This might also be worth adding:
.Client.Install.CreateDesktopShortcut = "false"
@julianrichen I just pulled from your branch for history's sake. Interesting that ldconfig would be deleting symbolic links.
Added a -c option to battlenet-installer to allow passing in jq filters as discussed in #73
Example usage might be:
battlenet-installer -c \
'.Games.diablo3.Run64Bit = "false" | .Games.diablo3.Run64BitSet = "true"' \
"battlenet://D3"
Which would output:
{
"Client": {
"HardwareAcceleration": "false",
"Sound": {
"Enabled": "false"
},
"Version": {
"FirstRun": "false",
"Release": {
"FirstRun": "false"
}
},
"GameSearch": {
"PerformedSearch": "true"
}
},
"Games": {
"diablo3": {
"Run64Bit": "false",
"Run64BitSet": "true"
}
}
}