From 0b7ea58cd6e5c5366db9b2f06e94bee51c16c830 Mon Sep 17 00:00:00 2001 From: arch1t3cht Date: Tue, 1 Aug 2023 14:07:56 +0200 Subject: [PATCH 1/4] meson: Add libresrc headers as dependencies These are included in the Aegisub source files, so they need to be generated before compiling. --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 842b33d287..a2c5c0378b 100644 --- a/meson.build +++ b/meson.build @@ -345,7 +345,7 @@ subdir('tests') aegisub_cpp_pch = ['src/include/agi_pre.h'] aegisub_c_pch = ['src/include/agi_pre_c.h'] -aegisub = executable('aegisub', aegisub_src, version_h, acconf, +aegisub = executable('aegisub', aegisub_src, version_h, acconf, resrc, link_with: [libresrc, libluabins, libaegisub], include_directories: [libaegisub_inc, libresrc_inc, version_inc, deps_inc, include_directories('src')], cpp_pch: aegisub_cpp_pch, From 0f897ba0eb96b037ea97179e36cb3b76f361944f Mon Sep 17 00:00:00 2001 From: sepro <4618135+seproDev@users.noreply.github.com> Date: Tue, 25 Jul 2023 01:40:31 +0200 Subject: [PATCH 2/4] Add nasm fallback url --- subprojects/nasm.wrap | 1 + 1 file changed, 1 insertion(+) diff --git a/subprojects/nasm.wrap b/subprojects/nasm.wrap index 6f1ad8dab3..dfb3c66e00 100644 --- a/subprojects/nasm.wrap +++ b/subprojects/nasm.wrap @@ -1,6 +1,7 @@ [wrap-file] directory = nasm-2.15.05 source_url = https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/nasm-2.15.05-win64.zip +source_fallback_url = https://web.archive.org/web/20210420023625if_/https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/win64/nasm-2.15.05-win64.zip source_filename = nasm-2.15.05-win64.zip source_hash = f5c93c146f52b4f1664fa3ce6579f961a910e869ab0dae431bd871bdd2584ef2 patch_directory = nasm From 4b6845af79444597957aff42d234e03c1163a910 Mon Sep 17 00:00:00 2001 From: arch1t3cht Date: Mon, 4 Sep 2023 23:40:17 +0200 Subject: [PATCH 3/4] meson: Update luajit wrap for luajit's rolling releases With LuaJIT/LuaJIT:1067 , pathing genversion.lua would no longer be necessary. --- .../luajit/src/host/genversion.lua | 45 +++++++++++++++++++ .../packagefiles/luajit/src/host/meson.build | 6 +-- .../luajit/src/luajit_relver.txt.in | 1 + .../packagefiles/luajit/src/meson.build | 20 ++++++++- 4 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 subprojects/packagefiles/luajit/src/host/genversion.lua create mode 100644 subprojects/packagefiles/luajit/src/luajit_relver.txt.in diff --git a/subprojects/packagefiles/luajit/src/host/genversion.lua b/subprojects/packagefiles/luajit/src/host/genversion.lua new file mode 100644 index 0000000000..042121f08a --- /dev/null +++ b/subprojects/packagefiles/luajit/src/host/genversion.lua @@ -0,0 +1,45 @@ +---------------------------------------------------------------------------- +-- Lua script to embed the rolling release version in luajit.h. +---------------------------------------------------------------------------- +-- Copyright (C) 2005-2023 Mike Pall. All rights reserved. +-- Released under the MIT license. See Copyright Notice in luajit.h +---------------------------------------------------------------------------- + +local args = {...} +local FILE_ROLLING_H = args[1] or "luajit_rolling.h" +local FILE_RELVER_TXT = args[2] or "luajit_relver.txt" +local FILE_LUAJIT_H = args[3] or "luajit.h" + +local function file_read(file) + local fp = assert(io.open(file, "rb"), "run from the wrong directory") + local data = assert(fp:read("*a")) + fp:close() + return data +end + +local function file_write_mod(file, data) + local fp = io.open(file, "rb") + if fp then + local odata = assert(fp:read("*a")) + fp:close() + if odata == data then return end + end + fp = assert(io.open(file, "wb")) + assert(fp:write(data)) + assert(fp:close()) +end + +local text = file_read(FILE_ROLLING_H) +local relver = file_read(FILE_RELVER_TXT):match("(%d+)") + +if relver then + text = text:gsub("ROLLING", relver) +else + io.stderr:write([[ +**** WARNING Cannot determine rolling release version from git log. +**** WARNING The 'git' command must be available during the build. +]]) + file_write_mod(FILE_RELVER_TXT, "ROLLING\n") -- Fallback for install target. +end + +file_write_mod(FILE_LUAJIT_H, text) diff --git a/subprojects/packagefiles/luajit/src/host/meson.build b/subprojects/packagefiles/luajit/src/host/meson.build index c7b825bb89..b3e963ef43 100644 --- a/subprojects/packagefiles/luajit/src/host/meson.build +++ b/subprojects/packagefiles/luajit/src/host/meson.build @@ -1,7 +1,3 @@ -minilua = executable('minilua', 'minilua.c', - dependencies: system_deps, - native: true) - cpu_family = host_machine.cpu_family() if cpu_family == 'x86_64' dynasm_arch = 'x64' @@ -54,7 +50,7 @@ buildvm_arch = custom_target('buildvm_arch.h', input: dynasm_dasc, output: 'buildvm_arch.h') -buildvm = executable('buildvm', buildvm_src, buildvm_arch, +buildvm = executable('buildvm', buildvm_src, buildvm_arch, luajit_h, dependencies: system_deps, include_directories: src_inc, native: true) diff --git a/subprojects/packagefiles/luajit/src/luajit_relver.txt.in b/subprojects/packagefiles/luajit/src/luajit_relver.txt.in new file mode 100644 index 0000000000..a380c6df95 --- /dev/null +++ b/subprojects/packagefiles/luajit/src/luajit_relver.txt.in @@ -0,0 +1 @@ +@VCS_CT@ diff --git a/subprojects/packagefiles/luajit/src/meson.build b/subprojects/packagefiles/luajit/src/meson.build index b1aeb0ca12..f4deb0079e 100644 --- a/subprojects/packagefiles/luajit/src/meson.build +++ b/subprojects/packagefiles/luajit/src/meson.build @@ -75,6 +75,23 @@ ljcore_src = files( src_inc = include_directories('.') +minilua = executable('minilua', 'host/minilua.c', + dependencies: system_deps, + native: true) + +relver = vcs_tag(command: ['git', 'show', '-s', '--format=%ct'], + fallback: 'ROLLING', + input: 'luajit_relver.txt.in', + output: 'luajit_relver.txt', + replace_string: '@VCS_CT@') + +luajit_rolling_h = files('luajit_rolling.h') + +luajit_h = custom_target('luajit_h', + command: [minilua, '@INPUT@', '@OUTPUT@'], + input: ['host/genversion.lua', 'luajit_rolling.h', relver], + output: 'luajit.h') + subdir('host') hdrgen = [ @@ -84,7 +101,8 @@ hdrgen = [ 'recdef', ] -genheaders = [] +genheaders = [luajit_h] + foreach h: hdrgen genheaders += custom_target(h, command: [buildvm, '-m', h, '-o', '@OUTPUT@', ljlib_src], From 4f67db8dd732efbace81aa57260b6575fe86dd55 Mon Sep 17 00:00:00 2001 From: Alex James Date: Mon, 14 Aug 2023 19:49:10 -0500 Subject: [PATCH 4/4] libaegisub: Avoid calling iconv_close(iconv_invalid) IsConversionSupported unconditionally calls iconv_close on the descriptor returned by iconv_open. This may result in crashes if iconv_open returns iconv_invalid. --- libaegisub/common/charset_conv.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libaegisub/common/charset_conv.cpp b/libaegisub/common/charset_conv.cpp index 47644eb1c9..f19090c154 100644 --- a/libaegisub/common/charset_conv.cpp +++ b/libaegisub/common/charset_conv.cpp @@ -420,7 +420,7 @@ size_t IconvWrapper::DstStrLen(const char* str) { bool IsConversionSupported(const char *src, const char *dst) { iconv_t cd = iconv_open(dst, src); bool supported = cd != iconv_invalid; - iconv_close(cd); + if (supported) iconv_close(cd); return supported; }