From de8587d80ea4dc77bad72c1b74dc6093bb8bce86 Mon Sep 17 00:00:00 2001 From: colinkiama Date: Thu, 2 Dec 2021 19:17:29 +0000 Subject: [PATCH 1/7] feat: Fallback to default module path --- src/meson.build | 19 +++++++++++++++---- src/vsgi-config.vala.in | 20 ++++++++++++++++++++ src/vsgi-server-module.vala | 8 +++++++- 3 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 src/vsgi-config.vala.in diff --git a/src/meson.build b/src/meson.build index 6bb34e39..288edfc3 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,3 +1,14 @@ +conf_data = configuration_data() +conf_data.set( + 'MODULE_DIR', + join_paths(get_option('prefix'), get_option('libdir'), 'vsgi-@0@/servers'.format(api_version))) + +vsgi_config = configure_file( + input: 'vsgi-config.vala.in', + output: 'vsgi-config.vala', + configuration: conf_data +) + vsgi_sources = files( 'vsgi.vala', 'vsgi-application.vala', @@ -17,15 +28,15 @@ vsgi_sources = files( 'vsgi-server.vala', 'vsgi-socket-server.vala', 'vsgi-tee-output-stream.vala') -vsgi_lib = library('vsgi-' + api_version, vsgi_sources, + + +vsgi_lib = library('vsgi-' + api_version, vsgi_config, vsgi_sources, dependencies: [glib, gobject, gio, gio_unix, gmodule, soup, libsystemd, openssl, posix], vala_header: 'vsgi.h', vala_gir: 'VSGI-@0@.gir'.format(api_version), build_rpath: join_paths(meson.current_build_dir(), 'servers'), - link_args: ['-Wl,--disable-new-dtags'], install: true, - install_dir: [true, 'include/vsgi-' + api_version, true, true], - install_rpath: join_paths(get_option('prefix'), get_option('libdir'), 'vsgi-@0@/servers'.format(api_version))) + install_dir: [true, 'include/vsgi-' + api_version, true, true]) install_data('vsgi-@0@.deps'.format(api_version), install_dir: 'share/vala/vapi') diff --git a/src/vsgi-config.vala.in b/src/vsgi-config.vala.in new file mode 100644 index 00000000..82f459d1 --- /dev/null +++ b/src/vsgi-config.vala.in @@ -0,0 +1,20 @@ +/* + * This file is part of Valum. + * + * Valum is free software: you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) any + * later version. + * + * Valum 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Valum. If not, see . + */ + +namespace VSGI.Config { + const string MODULE_PATH_FALLBACK = "@MODULE_DIR@"; +} \ No newline at end of file diff --git a/src/vsgi-server-module.vala b/src/vsgi-server-module.vala index ffd4c754..4610bcdd 100644 --- a/src/vsgi-server-module.vala +++ b/src/vsgi-server-module.vala @@ -57,14 +57,20 @@ public class VSGI.ServerModule : TypeModule { } construct { + string module_file_name = "vsgi-%s".printf (name); // trim the suffix from 'build_path' - path = Module.build_path (directory, "vsgi-%s".printf (name))[0:- Module.SUFFIX.length - 1]; + path = Module.build_path (directory, module_file_name)[0:- Module.SUFFIX.length - 1]; + File module_path = File.new_for_path (path); + if (!module_path.query_exists ()) { + path = Module.build_path (Config.MODULE_PATH_FALLBACK, module_file_name)[0:- Module.SUFFIX.length - 1]; + } } public override bool load () { module = Module.open (path, ModuleFlags.BIND_LAZY); if (module == null) { + module = Path.build_path (Config.MODULE_PATH_FALLBACK, path); critical (Module.error ()); return false; } From d5fac0c4cf4ad053f042f1cc5fcef4e2906fac79 Mon Sep 17 00:00:00 2001 From: colinkiama Date: Thu, 2 Dec 2021 19:51:37 +0000 Subject: [PATCH 2/7] build: MODULE_DIR value changes depending on build type --- src/meson.build | 14 +++++++++----- src/vsgi-server-module.vala | 1 - 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/meson.build b/src/meson.build index 288edfc3..ac979971 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,13 +1,17 @@ conf_data = configuration_data() -conf_data.set( - 'MODULE_DIR', - join_paths(get_option('prefix'), get_option('libdir'), 'vsgi-@0@/servers'.format(api_version))) +module_dir = '' +if get_option('buildtype') == 'debug' + module_dir = join_paths(meson.current_build_dir(), 'servers') +else + module_dir = join_paths(get_option('prefix'), get_option('libdir'), 'vsgi-@0@/servers'.format(api_version)) +endif + +conf_data.set('MODULE_DIR', module_dir) vsgi_config = configure_file( input: 'vsgi-config.vala.in', output: 'vsgi-config.vala', - configuration: conf_data -) + configuration: conf_data) vsgi_sources = files( 'vsgi.vala', diff --git a/src/vsgi-server-module.vala b/src/vsgi-server-module.vala index 4610bcdd..bd1d20f9 100644 --- a/src/vsgi-server-module.vala +++ b/src/vsgi-server-module.vala @@ -70,7 +70,6 @@ public class VSGI.ServerModule : TypeModule { module = Module.open (path, ModuleFlags.BIND_LAZY); if (module == null) { - module = Path.build_path (Config.MODULE_PATH_FALLBACK, path); critical (Module.error ()); return false; } From 0b0c24dd4927f4f55b2c06683b0b3664f05a6d6e Mon Sep 17 00:00:00 2001 From: colinkiama Date: Thu, 2 Dec 2021 20:22:45 +0000 Subject: [PATCH 3/7] build: Remove build_rpath field --- src/meson.build | 1 - 1 file changed, 1 deletion(-) diff --git a/src/meson.build b/src/meson.build index ac979971..80b42b18 100644 --- a/src/meson.build +++ b/src/meson.build @@ -38,7 +38,6 @@ vsgi_lib = library('vsgi-' + api_version, vsgi_config, vsgi_sources, dependencies: [glib, gobject, gio, gio_unix, gmodule, soup, libsystemd, openssl, posix], vala_header: 'vsgi.h', vala_gir: 'VSGI-@0@.gir'.format(api_version), - build_rpath: join_paths(meson.current_build_dir(), 'servers'), install: true, install_dir: [true, 'include/vsgi-' + api_version, true, true]) From 6425845a7b3696a5e4c091b43ab25f3cac0491b3 Mon Sep 17 00:00:00 2001 From: colinkiama Date: Thu, 2 Dec 2021 21:17:57 +0000 Subject: [PATCH 4/7] fix: Made config constant public --- src/vsgi-config.vala.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vsgi-config.vala.in b/src/vsgi-config.vala.in index 82f459d1..3d725965 100644 --- a/src/vsgi-config.vala.in +++ b/src/vsgi-config.vala.in @@ -16,5 +16,5 @@ */ namespace VSGI.Config { - const string MODULE_PATH_FALLBACK = "@MODULE_DIR@"; + public const string MODULE_PATH_FALLBACK = "@MODULE_DIR@"; } \ No newline at end of file From de840ab20b87e3de176473dd6f40793fae7ebb0c Mon Sep 17 00:00:00 2001 From: colinkiama Date: Thu, 2 Dec 2021 22:22:12 +0000 Subject: [PATCH 5/7] fix: VSGI Config file not included in vsgi sources --- src/meson.build | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/meson.build b/src/meson.build index 80b42b18..857f5173 100644 --- a/src/meson.build +++ b/src/meson.build @@ -31,10 +31,11 @@ vsgi_sources = files( 'vsgi-server-module.vala', 'vsgi-server.vala', 'vsgi-socket-server.vala', - 'vsgi-tee-output-stream.vala') + 'vsgi-tee-output-stream.vala', + join_paths(meson.current_build_dir(), 'vsgi-config.vala')) -vsgi_lib = library('vsgi-' + api_version, vsgi_config, vsgi_sources, +vsgi_lib = library('vsgi-' + api_version, vsgi_sources, dependencies: [glib, gobject, gio, gio_unix, gmodule, soup, libsystemd, openssl, posix], vala_header: 'vsgi.h', vala_gir: 'VSGI-@0@.gir'.format(api_version), From 5c2de15696bf8766bede9e446c6143964c056578 Mon Sep 17 00:00:00 2001 From: colinkiama Date: Fri, 3 Dec 2021 00:53:13 +0000 Subject: [PATCH 6/7] fix: Incorrect module file check --- src/vsgi-server-module.vala | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/vsgi-server-module.vala b/src/vsgi-server-module.vala index bd1d20f9..3571b863 100644 --- a/src/vsgi-server-module.vala +++ b/src/vsgi-server-module.vala @@ -58,10 +58,14 @@ public class VSGI.ServerModule : TypeModule { construct { string module_file_name = "vsgi-%s".printf (name); - // trim the suffix from 'build_path' - path = Module.build_path (directory, module_file_name)[0:- Module.SUFFIX.length - 1]; - File module_path = File.new_for_path (path); - if (!module_path.query_exists ()) { + string module_path = Module.build_path (directory, module_file_name); + File module_file = File.new_for_path (module_path); + + if (module_file.query_exists ()) { + // trim the suffix from 'build_path' + path = module_path[0:- Module.SUFFIX.length - 1]; + } else { + // trim the suffix from 'build_path' path = Module.build_path (Config.MODULE_PATH_FALLBACK, module_file_name)[0:- Module.SUFFIX.length - 1]; } } From 44d88c2694dd93c4ef9e412cdc1d4bffa4616b85 Mon Sep 17 00:00:00 2001 From: colinkiama Date: Fri, 3 Dec 2021 01:04:54 +0000 Subject: [PATCH 7/7] refactor: Reuse vsgi config file name in build configuration --- src/meson.build | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/meson.build b/src/meson.build index 857f5173..1e772eca 100644 --- a/src/meson.build +++ b/src/meson.build @@ -7,10 +7,10 @@ else endif conf_data.set('MODULE_DIR', module_dir) - +vsgi_config_name = 'vsgi-config.vala' vsgi_config = configure_file( - input: 'vsgi-config.vala.in', - output: 'vsgi-config.vala', + input: vsgi_config_name + '.in', + output: vsgi_config_name, configuration: conf_data) vsgi_sources = files( @@ -32,7 +32,7 @@ vsgi_sources = files( 'vsgi-server.vala', 'vsgi-socket-server.vala', 'vsgi-tee-output-stream.vala', - join_paths(meson.current_build_dir(), 'vsgi-config.vala')) + join_paths(meson.current_build_dir(), vsgi_config_name)) vsgi_lib = library('vsgi-' + api_version, vsgi_sources,