Zrythm installer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

441 lines
12 KiB

# Copyright (C) 2020-2021 Alexandros Theodotou <alex at zrythm dot org>
#
# This file is part of Zrythm
#
# Zrythm is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Zrythm is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Zrythm. If not, see <https://www.gnu.org/licenses/>.
windows_msys_conf = configuration_data ()
windows_msys_conf.set (
'BASH', bash.full_path ())
windows_msys_conf.set (
'DASH_TRIAL', dash_trial)
windows_msys_conf.set (
'ZPLUGINS_VER', zplugins_ver)
windows_msys_conf.set (
'ZRYTHM_PKG_VERSION', zrythm_pkg_ver)
windows_msys_conf.set (
'ZRYTHM_PKG_SEMVER_VERSION', zrythm_pkg_semver)
windows_msys_conf.set (
'TRIAL_TRUE_FALSE', trial_true_false)
windows_msys_conf.set (
'CARLA_GIT_VER', carla_git_ver)
windows_msys_conf.set (
'ZRYTHM_INNER_DIR_NAME', zrythm_inner_dir_name)
windows_msys_conf.set (
'ZRYTHM_SOURCE_TARBALL_FILENAME',
zrythm_src_tarball_filename)
windows_msys_conf.set (
'SUPPORTING_TEXT',
build_trial ? 'trying out' : 'supporting')
windows_msys_conf.set (
'MINGW_PKG_PREFIX', mingw_pkg_prefix)
windows_msys_conf.set (
'MINGW_PREFIX', mingw_prefix)
windows_msys_conf.set (
'MINGW_ARCH', mingw_arch)
windows_msys_conf.set (
'MESON_SOURCE_ROOT', meson_src_root)
windows_msys_conf.set (
'LSP_DSP_LIB_VER', lsp_dsp_lib_ver)
windows_msys_conf.set ('IS_TAG', is_tag ? 'true' : 'false')
mingw_zrythm_pkgbuild = configure_file (
output: 'PKGBUILD',
input: 'PKGBUILD.in',
configuration: windows_msys_conf,
)
mingw_carla_pkgbuild = configure_file (
output: 'PKGBUILD-carla-mingw',
input: 'PKGBUILD-carla-mingw.in',
configuration: windows_msys_conf,
)
mingw_cairo_pkgbuild = configure_file (
output: 'PKGBUILD-cairo-mingw',
input: 'PKGBUILD-cairo-mingw.in',
configuration: windows_msys_conf,
)
mingw_gtk4_pkgbuild = configure_file (
output: 'PKGBUILD-gtk4-mingw',
input: 'PKGBUILD-gtk4-mingw.in',
configuration: windows_msys_conf,
)
mingw_libadwaita_pkgbuild = configure_file (
output: 'PKGBUILD-libadwaita-mingw',
input: 'PKGBUILD-libadwaita-mingw.in',
configuration: windows_msys_conf,
)
mingw_lsp_dsp_lib_pkgbuild = configure_file (
output: 'PKGBUILD-lsp-dsp-lib-mingw',
input: 'PKGBUILD-lsp-dsp-lib-mingw.in',
configuration: windows_msys_conf,
)
# configure scripts
make_windows_chroot = configure_file (
output: 'make_windows_chroot.sh',
input: 'make_windows_chroot.sh.in',
configuration: windows_msys_conf,
)
collect_dlls = configure_file (
output: 'collect_dlls.sh',
input: 'collect_dlls.sh.in',
configuration: windows_msys_conf,
)
make_dist_dir = configure_file (
output: 'make_dist_dir.sh',
input: 'make_dist_dir.sh.in',
configuration: windows_msys_conf,
)
make_windows_installer = configure_file (
output: 'make_windows_installer.sh',
input: 'make_windows_installer.sh.in',
configuration: windows_msys_conf,
)
make_mingw_pkg = configure_file (
output: 'make_mingw_pkg.sh',
input: 'make_mingw_pkg.sh.in',
configuration: windows_msys_conf,
)
make_zrythm_mingw_pkg = configure_file (
output: 'make_zrythm_mingw_pkg.sh',
input: 'make_zrythm_mingw_pkg.sh.in',
configuration: windows_msys_conf,
)
filename = 'Carla-' + carla_git_ver + '.tar.gz'
url = 'https://github.com/falkTX/Carla/archive/' + carla_git_ver + '.zip'
carla_zip_orig_src = custom_target (
'carla-zip-orig_src',
output: 'carla-zip-orig-src-' + carla_git_ver + '.zip',
command: [
bash, '-c', 'wget "$1" -O "$2"',
'_ignored',
url, '@OUTPUT@',
],
install: false,
)
carla_zip_windows = custom_target (
'carla-zip-windows',
output: filename,
input: carla_zip_orig_src,
command: [
bash, '-c',
'rm -rf "$3" && mkdir -p "$3" && cp "$1" "$3"/"$2" && ' +
'cd "$3" && rm -rf "$4" && unzip "$2" && ' +
'cd "$4" && pwd && make msys2fix && cd .. && ' +
'tar cvf "$2" "$4" && cd ../.. && mv "$3"/"$2" "$5" && ' +
'echo "done"',
'_ignored',
'@INPUT@', filename, '@PRIVATE_DIR@',
'Carla-' + carla_git_ver, '@OUTPUT@',
],
install: false,
)
make_mingw_pkg_cmd = [
bash, '-c', '@INPUT0@ "$1" "$2" "$3" "$4" ' +
'"$5" "$6"',
'_ignored',
'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@',
mingw_arch, '', '',
]
make_mingw_pkg_cmd_full = [
bash, '-c', '@INPUT0@ "$1" "$2" "$3" "$4" ' +
'"$5" "$6"',
'_ignored',
'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@',
mingw_arch, '', '@INPUT2@',
]
# sources
inno_extract_ver = '1.9'
filename = 'innoextract-' + inno_extract_ver + '-windows.zip'
url = 'https://github.com/dscharrer/innoextract/releases/download/' + inno_extract_ver + '/' + filename
inno_extract_zip = custom_target (
'inno-extract-zip',
output: filename,
command: [
'wget', url, '-O', '@OUTPUT@',
],
install: false,
)
#inno_extract = custom_target (
#'inno-extract-exe',
#output: 'innoextract.exe',
#input: inno_extract_ver,
#command: [
#bash, '-c', '@INPUT0@ "$1" "$2" "$3"', '_ignored',
#'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@'
filename = 'rcedit-x64.exe'
url = 'https://github.com/electron/rcedit/releases/download/v1.1.1/' + filename
rcedit_x64_exe = custom_target (
'rcedit-x64-exe',
output: filename,
command: [
bash, '-c',
'wget ' + url + ' -O \'@OUTPUT@\' && ' +
'chmod +x \'@OUTPUT@\''
],
install: false,
)
# install dependencies
carla_packages = []
foreach arch : [ 'ucrt64', 'mingw32' ]
#foreach arch : [ '32' ]
carla_pkg_target = custom_target (
'mingw-carla-' + arch,
output: 'carla-' + arch + '.pkg.tar.zst',
input: [
make_mingw_pkg, mingw_carla_pkgbuild,
carla_zip_windows,
],
command: [
bash, '-c',
'@INPUT0@ "$1" "$2" "$3" "$4" "$5" "$6"',
'_ignored',
'@OUTPUT@', '@INPUT1@', '@PRIVATE_DIR@',
arch,
'@INPUT2@',
],
console: true,
install: false,
)
carla_packages += carla_pkg_target
run_target (
'mingw-carla-' + arch + '-build',
command: [ 'echo', 'done', ],
depends: carla_pkg_target)
endforeach
independent_dep_names = [
'jack2-bin',
]
independent_deps = []
foreach dep_name : independent_dep_names
independent_deps += custom_target (
'mingw-' + dep_name,
output: dep_name + '.pkg.tar.zst',
input: [
make_mingw_pkg,
'PKGBUILD-' + dep_name + '-mingw',
],
command: make_mingw_pkg_cmd,
depends: carla_packages,
console: true,
install: false,
)
endforeach
serd_pkg = custom_target (
'mingw-serd',
output: 'serd.pkg.tar.zst',
input: [ make_mingw_pkg, 'PKGBUILD-serd-mingw', ],
command: make_mingw_pkg_cmd,
console: true,
install: false,
)
sord_pkg = custom_target (
'mingw-sord',
output: 'sord.pkg.tar.zst',
input: [ make_mingw_pkg, 'PKGBUILD-sord-mingw', ],
command: make_mingw_pkg_cmd,
depends: serd_pkg,
console: true,
install: false,
)
sratom_pkg = custom_target (
'mingw-sratom',
output: 'sratom.pkg.tar.zst',
input: [ make_mingw_pkg, 'PKGBUILD-sratom-mingw', ],
command: make_mingw_pkg_cmd,
depends: sord_pkg,
console: true,
install: false,
)
lilv_pkg = custom_target (
'mingw-lilv',
output: 'lilv.pkg.tar.zst',
input: [ make_mingw_pkg, 'PKGBUILD-lilv-mingw', ],
command: make_mingw_pkg_cmd,
depends: sratom_pkg,
console: true,
install: false,
)
run_target (
'run-mingw-lilv',
command: [ 'echo', 'done' ],
depends: lilv_pkg)
lsp_dsp_lib_pkg = custom_target (
'mingw-lsp-dsp-lib',
output: 'lsp-dsp-lib.pkg.tar.zst',
input: [ make_mingw_pkg, mingw_lsp_dsp_lib_pkgbuild, ],
command: make_mingw_pkg_cmd,
console: true,
install: false,
)
cairo_pkg = custom_target (
'mingw-cairo',
output: 'cairo.pkg.tar.zst',
input: [ make_mingw_pkg, mingw_cairo_pkgbuild, ],
command: make_mingw_pkg_cmd,
console: true,
install: false,
)
run_target (
'run-mingw-cairo',
command: [ 'echo', 'done' ],
depends: cairo_pkg)
gtk4_pkg = custom_target (
'mingw-gtk4',
output: 'gtk4.pkg.tar.zst',
input: [ make_mingw_pkg, mingw_gtk4_pkgbuild, ],
depends: cairo_pkg,
command: make_mingw_pkg_cmd,
console: true,
install: false,
)
run_target (
'run-mingw-gtk4',
command: [ 'echo', 'done' ],
depends: gtk4_pkg)
libadwaita_pkg = custom_target (
'mingw-libadwaita',
output: 'libadwaita.pkg.tar.zst',
input: [ make_mingw_pkg, mingw_libadwaita_pkgbuild, ],
command: make_mingw_pkg_cmd,
depends: gtk4_pkg,
console: true,
install: false,
)
run_target (
'run-mingw-libadwaita',
command: [ 'echo', 'done' ],
depends: libadwaita_pkg)
mingw_zrythm_pkg = custom_target (
'mingw-zrythm-pkg',
output: 'zrythm' + dash_trial + '.pkg.tar.zst',
input: [
make_zrythm_mingw_pkg, mingw_zrythm_pkgbuild,
zrythm_src_tarball, zplugins_src_tarball,
],
command: [
bash, '-c',
'@INPUT0@ "$1" "$2" "$3" "$4" "$5"', '_ignored',
'@OUTPUT@', '@INPUT1@', '@INPUT2@',
'@INPUT3@', '@PRIVATE_DIR@',
],
depends: [
lilv_pkg, lsp_dsp_lib_pkg, independent_deps,
],
console: true,
install: false,
)
run_target (
'install-zrythm-mingw-pkg',
command: [ 'echo', 'done' ],
depends: mingw_zrythm_pkg)
chroot_dir = meson.current_build_dir () / 'zrythm' + dash_trial + '-chroot'
windows_chroot_target = custom_target (
'windows-chroot',
output: 'zrythm-test',
input: [
make_windows_chroot, zrythm_src_tarball,
independent_deps[0],
carla_packages[0],
carla_packages[1],
serd_pkg, sord_pkg,
sratom_pkg, lilv_pkg,
lsp_dsp_lib_pkg, mingw_zrythm_pkg,
],
command: [
bash, '-c',
'@INPUT0@ "$1" "$2" "$3" "$4" "$5" "$6" ' +
'"$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" ' +
'"${14}" "${15}" "${16}"',
'_ignored',
'@OUTPUT@', chroot_dir, '@INPUT1@', '@INPUT2@',
'@INPUT3@', '@INPUT4@', '@INPUT5@', '@INPUT6@',
'@INPUT7@', '@INPUT8@', '@INPUT9@', '@INPUT10@',
],
console: true,
install: false,
)
dll_dir = custom_target (
'windows-msys-dll-dir',
output: 'dlls',
input: [
collect_dlls, 'copy-dll-deps.sh',
],
command: [
bash, '-c',
'@INPUT0@ "$1" "$2" "$3"',
'_ignored',
'@OUTPUT@', '@INPUT1@', chroot_dir,
],
depends: [
windows_chroot_target,
],
console: true,
install: false,
)
run_target (
'windows-msys-prepare',
command: [ 'echo', 'done' ],
depends: dll_dir)
installer_dist_dir = custom_target (
'windows-installer-dist-dir',
output: 'installer-dist',
input: [
make_dist_dir, zrythm_src_tarball,
'copy-dll-deps.sh',
rcedit_x64_exe, dll_dir,
breeze_icons,
],
command: [
bash, '-c',
'@INPUT0@ "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9"',
'_ignored',
'@OUTPUT@', '@INPUT1@', chroot_dir,
'@PRIVATE_DIR@', '@INPUT2@', '@INPUT3@',
'@INPUT4@', get_option ('manuals-zip-file'), '@INPUT5@',
],
console: true,
install: false,
)
windows_msys_installer_filename = run_command (
bash, '-c',
meson.build_root () / 'scripts/get_pkg_filename.sh' +
' WINDOWS_MSYS ' + dash_trial).stdout ().strip ()
windows_msys_installer = custom_target (
'windows-msys-installer',
output: windows_msys_installer_filename,
input: [
make_windows_installer, installer_dist_dir,
'installer.iss',
],
command: [
bash, '-c',
'@INPUT0@ "$1" "$2" "$3"', '_ignored',
'@OUTPUT@', '@INPUT1@', '@INPUT2@',
],
console: true,
install: true,
install_dir: get_option ('prefix'),
)