Compare commits

...

13 Commits

Author SHA1 Message Date
Přemysl Eric Janouch 17d9b3cf4c
Win64Depends.sh: improve compatibility
Arch Linux AUR Success Details
Alpine 3.19 Success Details
2024-04-09 19:35:41 +02:00
Přemysl Eric Janouch 2aa0a6231c
Accept Lua 5.4 specifically
Arch Linux AUR Success Details
2024-04-09 18:54:14 +02:00
Přemysl Eric Janouch 56a2a58ed6
Enable cross-compiled tests
Arch Linux AUR Success Details
test-diagram still fails, however let's make our toolchain files
a good reference.
2024-04-09 13:02:03 +02:00
Přemysl Eric Janouch 99834e93c0
README.adoc: update package information
Arch Linux AUR Success Details
2023-07-01 21:59:05 +02:00
Přemysl Eric Janouch 266c4c7c9f
CMakeLists.txt: fix RPM license field 2023-06-28 01:57:50 +02:00
Přemysl Eric Janouch e5e42b63eb
Win64Depends.sh: only extract what we need
In case the packages directory has been preloaded or symlinked.
2023-06-26 20:54:38 +02:00
Přemysl Eric Janouch a4532ea322
Add some enlightening comments 2023-06-14 12:29:12 +02:00
Přemysl Eric Janouch 4aeaf61c99
Synchronize cross-compilation scripts 2022-08-12 12:39:21 +02:00
Přemysl Eric Janouch d5837555b8
Update README 2022-08-12 12:33:52 +02:00
Přemysl Eric Janouch 9003f36ba2
Tidy up GSettings 2022-07-25 13:31:32 +02:00
Přemysl Eric Janouch 6df51485d3
Update Windows XP vs. TLS notes 2021-12-28 04:03:54 +01:00
Přemysl Eric Janouch 2433b9046f
Eliminate a Wayland-specific warning
The handling seems to be a bit convoluted there.
2021-11-17 07:42:37 +01:00
Přemysl Eric Janouch 93cd4dc4f9
Remove an unused marshaller
It is no longer used, since the transition to GTK+ 3.
2021-11-14 05:51:07 +01:00
12 changed files with 46 additions and 35 deletions

View File

@ -9,6 +9,7 @@ option (OPTION_GTKDOC "For developers only--enable use of gtk-doc" OFF)
option (BUILD_TESTING "Build tests" OFF) option (BUILD_TESTING "Build tests" OFF)
# Project information # Project information
set (project_ID "name.janouch.${PROJECT_NAME}")
set (project_URL "https://git.janouch.name/p/logdiag") set (project_URL "https://git.janouch.name/p/logdiag")
# For custom modules # For custom modules
@ -40,6 +41,7 @@ if (CONVERT_EXECUTABLE AND NOT WIN32)
set (icon_svg ${icon_base}/scalable/apps/logdiag.svg) set (icon_svg ${icon_base}/scalable/apps/logdiag.svg)
set (icon_size_list 16x16 32x32 48x48) set (icon_size_list 16x16 32x32 48x48)
# ImageMagick very oddly outperforms rsvg-convert with our specific SVG
set (icon_png_list) set (icon_png_list)
set (icon_symbolic_list) set (icon_symbolic_list)
foreach (icon_size ${icon_size_list}) foreach (icon_size ${icon_size_list})
@ -58,6 +60,8 @@ if (CONVERT_EXECUTABLE AND NOT WIN32)
PROPERTIES SYMBOLIC TRUE) PROPERTIES SYMBOLIC TRUE)
endforeach () endforeach ()
# Symbolic targets prevent the icons from being either cleaned,
# or pointlessly regenerated slightly differently
set (icon_ico ${PROJECT_SOURCE_DIR}/share/logdiag.ico) set (icon_ico ${PROJECT_SOURCE_DIR}/share/logdiag.ico)
add_custom_target (${PROJECT_NAME}_icons add_custom_target (${PROJECT_NAME}_icons
DEPENDS ${icon_symbolic_list} DEPENDS ${icon_symbolic_list}
@ -71,7 +75,8 @@ pkg_check_modules (GTK3 REQUIRED gtk+-3.0 json-glib-1.0)
link_directories (${GTK3_LIBRARY_DIRS}) link_directories (${GTK3_LIBRARY_DIRS})
if (NOT WIN32) if (NOT WIN32)
pkg_search_module (Lua REQUIRED lua>=5.2 lua5.3 lua-5.3 lua5.2 lua-5.2) pkg_search_module (Lua REQUIRED lua>=5.2
lua5.4 lua-5.4 lua5.3 lua-5.3 lua5.2 lua-5.2)
link_directories (${Lua_LIBRARY_DIRS}) link_directories (${Lua_LIBRARY_DIRS})
else () else ()
# For whatever reason this now seems to be required # For whatever reason this now seems to be required
@ -245,7 +250,7 @@ if (NOT GLIB_COMPILE_SCHEMAS_EXECUTABLE)
endif () endif ()
set (GSETTINGS_DIR "${PROJECT_SOURCE_DIR}/share") set (GSETTINGS_DIR "${PROJECT_SOURCE_DIR}/share")
set (GSETTINGS_SCHEMAS "${GSETTINGS_DIR}/org.logdiag.gschema.xml") set (GSETTINGS_SCHEMAS "${GSETTINGS_DIR}/${PROJECT_NAME}.gschema.xml")
if (OPTION_NOINSTALL) if (OPTION_NOINSTALL)
set (GSETTINGS_COMPILED_SCHEMA "${PROJECT_BINARY_DIR}/gschemas.compiled") set (GSETTINGS_COMPILED_SCHEMA "${PROJECT_BINARY_DIR}/gschemas.compiled")
@ -391,7 +396,8 @@ endif ()
install (DIRECTORY docs/user-guide DESTINATION share/doc/${PROJECT_NAME}) install (DIRECTORY docs/user-guide DESTINATION share/doc/${PROJECT_NAME})
install (DIRECTORY share/library DESTINATION share/${PROJECT_NAME}) install (DIRECTORY share/library DESTINATION share/${PROJECT_NAME})
install (FILES ${GSETTINGS_SCHEMAS} DESTINATION share/glib-2.0/schemas) install (FILES ${GSETTINGS_SCHEMAS} DESTINATION share/glib-2.0/schemas
RENAME "${project_ID}.gschema.xml")
install (CODE " # DESTDIR is not in use on Windows (WIN32 is only native here!) install (CODE " # DESTDIR is not in use on Windows (WIN32 is only native here!)
if (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\") if (WIN32 OR \"\$ENV{DESTDIR}\" STREQUAL \"\")
execute_process (COMMAND \"${GLIB_COMPILE_SCHEMAS_EXECUTABLE}\" execute_process (COMMAND \"${GLIB_COMPILE_SCHEMAS_EXECUTABLE}\"
@ -446,7 +452,7 @@ set (CPACK_DEBIAN_PACKAGE_HOMEPAGE "${project_URL}")
set (CPACK_RPM_PACKAGE_REQUIRES "gtk3 >= 3.8, json-glib >= 0.10.4, lua = 5.2") set (CPACK_RPM_PACKAGE_REQUIRES "gtk3 >= 3.8, json-glib >= 0.10.4, lua = 5.2")
set (CPACK_RPM_PACKAGE_GROUP "Graphics") set (CPACK_RPM_PACKAGE_GROUP "Graphics")
set (CPACK_RPM_PACKAGE_LICENSE "ISC") set (CPACK_RPM_PACKAGE_LICENSE "0BSD")
set (CPACK_RPM_PACKAGE_URL "${project_URL}") set (CPACK_RPM_PACKAGE_URL "${project_URL}")
set (CPACK_SOURCE_GENERATOR "TGZ;ZIP") set (CPACK_SOURCE_GENERATOR "TGZ;ZIP")

View File

@ -10,8 +10,10 @@ image::docs/user-guide/logdiag-en.png[align="center"]
Packages Packages
-------- --------
Regular releases are sporadic. git master should be stable enough. You can get Regular releases are sporadic. git master should be stable enough.
a package with the latest development version from Archlinux's AUR. You can get a package with the latest development version using Arch Linux's
https://aur.archlinux.org/packages/logdiag-git[AUR],
or as a https://git.janouch.name/p/nixexprs[Nix derivation].
Windows installers can be downloaded from Windows installers can be downloaded from
https://git.janouch.name/p/logdiag/releases[the Releases page on Gitea]. https://git.janouch.name/p/logdiag/releases[the Releases page on Gitea].
@ -66,11 +68,14 @@ FindPkgConfig.cmake module to say:
separate_arguments(_pkgconfig_invoke_result UNIX_COMMAND "${_pkgconfig_invoke_result}") separate_arguments(_pkgconfig_invoke_result UNIX_COMMAND "${_pkgconfig_invoke_result}")
Run the following command in the directory with source files to automatically Run the following command in the directory with source files to automatically
fetch and set up all dependencies (note that Windows XP is no longer able to fetch and set up all dependencies:
download from HTTPS sources, you'll have to run this externally):
> cmake -P Win32Depends.cmake > cmake -P Win32Depends.cmake
Note that on Windows XP, CMake will fail to download those files, even with
https://emailarchitect.net/easendmail/sdk/html/object_tls12.htm[updates].
You will have to run the script externally.
Reserve a directory for an out-of-source build and let CMake prepare the build: Reserve a directory for an out-of-source build and let CMake prepare the build:
> mkdir build > mkdir build
@ -103,7 +108,7 @@ Just install MinGW-w64 and let automation take care of the rest.
Alternatively, for an unnecessarily bloated MSYS2-based 64-bit build: Alternatively, for an unnecessarily bloated MSYS2-based 64-bit build:
$ sh Win64Depends.sh $ sh -e Win64Depends.sh
$ cmake -DCMAKE_TOOLCHAIN_FILE=ToolchainCrossWin64.cmake \ $ cmake -DCMAKE_TOOLCHAIN_FILE=ToolchainCrossWin64.cmake \
-DCMAKE_BUILD_TYPE=Release -B build -DCMAKE_BUILD_TYPE=Release -B build
$ cmake --build build -- package $ cmake --build build -- package

View File

@ -5,12 +5,11 @@ set (CMAKE_C_COMPILER "i586-mingw32msvc-gcc")
set (CMAKE_CXX_COMPILER "i586-mingw32msvc-g++") set (CMAKE_CXX_COMPILER "i586-mingw32msvc-g++")
set (CMAKE_RC_COMPILER "i586-mingw32msvc-windres") set (CMAKE_RC_COMPILER "i586-mingw32msvc-windres")
# Not needed to crosscompile an installation package # Remember to set WINEPATH for library dependencies
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine") set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
set (CMAKE_FIND_ROOT_PATH "/usr/i586-mingw32msvc") set (CMAKE_FIND_ROOT_PATH "/usr/i586-mingw32msvc")
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

View File

@ -5,12 +5,11 @@ set (CMAKE_C_COMPILER "i686-w64-mingw32-gcc")
set (CMAKE_CXX_COMPILER "i686-w64-mingw32-g++") set (CMAKE_CXX_COMPILER "i686-w64-mingw32-g++")
set (CMAKE_RC_COMPILER "i686-w64-mingw32-windres") set (CMAKE_RC_COMPILER "i686-w64-mingw32-windres")
# Not needed to crosscompile an installation package # Remember to set WINEPATH for library dependencies
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine") set (CMAKE_CROSSCOMPILING_EMULATOR "wine")
set (CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32") set (CMAKE_FIND_ROOT_PATH "/usr/i686-w64-mingw32")
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

View File

@ -5,12 +5,11 @@ set (CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc")
set (CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++") set (CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++")
set (CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres") set (CMAKE_RC_COMPILER "x86_64-w64-mingw32-windres")
# Not needed to crosscompile an installation package # Remember to set WINEPATH for library dependencies
#set (CMAKE_CROSSCOMPILING_EMULATOR "wine64") set (CMAKE_CROSSCOMPILING_EMULATOR "wine64")
set (CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32") set (CMAKE_FIND_ROOT_PATH "/usr/x86_64-w64-mingw32")
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

View File

@ -1,5 +1,5 @@
#!/bin/sh -e #!/bin/sh -e
# Win64Depends.sh: download dependencies from MSYS2 for cross-compilation # Win64Depends.sh: download dependencies from MSYS2 for cross-compilation.
# Dependencies: AWK, sed, sha256sum, cURL, bsdtar, wine64 # Dependencies: AWK, sed, sha256sum, cURL, bsdtar, wine64
repository=https://repo.msys2.org/mingw/mingw64/ repository=https://repo.msys2.org/mingw/mingw64/
@ -27,7 +27,8 @@ fetch() {
} BEGIN { while ((getline < "db.tsv") > 0) { } BEGIN { while ((getline < "db.tsv") > 0) {
filenames[$1] = $2; deps[$1] = ""; for (i = 3; i <= NF; i++) { filenames[$1] = $2; deps[$1] = ""; for (i = 3; i <= NF; i++) {
gsub(/[<=>].*/, "", $i); deps[$1] = deps[$1] $i FS } gsub(/[<=>].*/, "", $i); deps[$1] = deps[$1] $i FS }
} for (i = 0; i < ARGC; i++) get(ARGV[i]) }' "$@" | while IFS= read -r name } for (i = 0; i < ARGC; i++) get(ARGV[i]) }' "$@" | tee db.want | \
while IFS= read -r name
do do
status Fetching "$name" status Fetching "$name"
[ -f "packages/$name" ] || curl -#o "packages/$name" "$repository/$name" [ -f "packages/$name" ] || curl -#o "packages/$name" "$repository/$name"
@ -44,9 +45,9 @@ extract() {
for subdir in * for subdir in *
do [ -d "$subdir" -a "$subdir" != packages ] && rm -rf -- "$subdir" do [ -d "$subdir" -a "$subdir" != packages ] && rm -rf -- "$subdir"
done done
for i in packages/* while IFS= read -r name
do bsdtar -xf "$i" --strip-components 1 mingw64 do bsdtar -xf "packages/$name" --strip-components 1
done done < db.want
} }
configure() { configure() {
@ -55,15 +56,16 @@ configure() {
wine64 bin/gdk-pixbuf-query-loaders.exe \ wine64 bin/gdk-pixbuf-query-loaders.exe \
> lib/gdk-pixbuf-2.0/2.10.0/loaders.cache > lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
# pkgconf has a command line option for this, but CMake can't pass it # pkgconf has a command line option for this, but CMake can't pass it.
sed -i "s|^prefix=/mingw64|prefix=$(pwd)|" {share,lib}/pkgconfig/*.pc sed -i "s|^prefix=/mingw64|prefix=$(pwd)|" \
share/pkgconfig/*.pc lib/pkgconfig/*.pc
} }
mkdir -p win32-depends mkdir -p win32-depends
cd win32-depends cd win32-depends
dbsync dbsync
fetch mingw-w64-x86_64-gtk3 mingw-w64-x86_64-lua \ fetch mingw-w64-x86_64-gtk3 mingw-w64-x86_64-lua \
mingw-w64-x86_64-libwinpthread-git # because we don't do "provides"? mingw-w64-x86_64-libwinpthread-git # Because we don't do "provides"?
verify verify
extract extract
configure configure

View File

@ -10,6 +10,7 @@
#define PROJECT_NAME "${PROJECT_NAME}" #define PROJECT_NAME "${PROJECT_NAME}"
#define PROJECT_VERSION "${PROJECT_VERSION}" #define PROJECT_VERSION "${PROJECT_VERSION}"
#define PROJECT_ID "${project_ID}"
#define PROJECT_URL "${project_URL}" #define PROJECT_URL "${project_URL}"
#cmakedefine OPTION_NOINSTALL #cmakedefine OPTION_NOINSTALL

View File

@ -2591,7 +2591,9 @@ on_drag_motion (GtkWidget *widget, GdkDragContext *drag_ctx,
/* Discard leftovers from any previous unsuccessful drag. */ /* Discard leftovers from any previous unsuccessful drag. */
if (self->priv->dnd_left) if (self->priv->dnd_left)
{ {
g_object_unref (self->priv->dnd_symbol); /* The Wayland backend does a leave-drop-leave sequence. */
if (self->priv->dnd_symbol)
g_object_unref (self->priv->dnd_symbol);
self->priv->dnd_symbol = NULL; self->priv->dnd_symbol = NULL;
self->priv->dnd_left = FALSE; self->priv->dnd_left = FALSE;
} }

View File

@ -1,3 +1,2 @@
VOID:OBJECT,OBJECT
VOID:OBJECT,STRING VOID:OBJECT,STRING
VOID:DOUBLE,DOUBLE VOID:DOUBLE,DOUBLE

View File

@ -1,5 +1,5 @@
<schemalist> <schemalist>
<schema id="org.logdiag" path="/org/logdiag/" gettext-domain="logdiag"> <schema id="name.janouch.logdiag" path="/name/janouch/logdiag/" gettext-domain="logdiag">
<key name="show-main-toolbar" type="b"> <key name="show-main-toolbar" type="b">
<default>true</default> <default>true</default>
<summary>Whether to show the main toolbar</summary> <summary>Whether to show the main toolbar</summary>
@ -14,4 +14,3 @@
</key> </key>
</schema> </schema>
</schemalist> </schemalist>

View File

@ -389,7 +389,7 @@ ld_window_main_init (LdWindowMain *self)
gtk_widget_show_all (GTK_WIDGET (self)); gtk_widget_show_all (GTK_WIDGET (self));
/* Set up GSettings. */ /* Set up GSettings. */
priv->settings = g_settings_new ("org." PROJECT_NAME); priv->settings = g_settings_new (PROJECT_ID);
g_settings_bind (priv->settings, "show-main-toolbar", g_settings_bind (priv->settings, "show-main-toolbar",
gtk_action_group_get_action (priv->action_group, gtk_action_group_get_action (priv->action_group,

View File

@ -127,16 +127,16 @@ main (int argc, char *argv[])
textdomain (GETTEXT_DOMAIN); textdomain (GETTEXT_DOMAIN);
#ifdef PROJECT_GSETTINGS_DIR #ifdef PROJECT_GSETTINGS_DIR
/* This is enabled when the build is set up for developing, so that the /* This is enabled when the build is set up for development,
* application can find its schema. It might also find use when * so that the application can find its schema. It might also find use
* installing the application into a location that's missing from * when installing the application into a location that's missing from
* g_get_system_data_dirs(), for example /usr/local or ~/.local. * g_get_system_data_dirs(), for example /usr/local or ~/.local.
*/ */
g_setenv ("GSETTINGS_SCHEMA_DIR", PROJECT_GSETTINGS_DIR, 0); g_setenv ("GSETTINGS_SCHEMA_DIR", PROJECT_GSETTINGS_DIR, 0);
#endif /* PROJECT_GSETTINGS_DIR */ #endif /* PROJECT_GSETTINGS_DIR */
#ifdef _WIN32 #ifdef _WIN32
/* Don't be unneccessarily limited by the system ANSI codepage. */ /* Don't be unneccessarily limited by the system's ANSI codepage. */
/* g_win32_get_command_line() should replace this code for GLib >= 2.40. */ /* g_win32_get_command_line() should replace this code for GLib >= 2.40. */
argv_overriden = get_utf8_args (&argc, &argv); argv_overriden = get_utf8_args (&argc, &argv);
if (argv_overriden) if (argv_overriden)