abaddon: new recipe (#10367)

Co-authored-by: zeldakatze <mail@zeldakatze.de>
This commit is contained in:
TheZeldakatze
2024-07-10 10:29:43 +02:00
committed by GitHub
parent 24c40acf20
commit 6ac6bee2da
3 changed files with 364 additions and 0 deletions

View File

@@ -0,0 +1,150 @@
SUMMARY="An alternative Discord client made in C++ with GTK"
DESCRIPTION="
Abaddon is an alternative Discord client which supports most chat message types.
To Log In, you either have to use the mobile app or extract the login token from
the discord web client.
Please note that alternative discord clients have a higher risk of tripping discord's
spam filter. If you should get caught in the spam filter, you can usually appeal at
discord.
NOTE: currently this port does not support sound!
"
HOMEPAGE="https://github.com/uowuo/abaddon/"
COPYRIGHT="2024 uowuo"
LICENSE="GNU GPL v3"
REVISION="1"
SOURCE_URI="https://github.com/uowuo/abaddon/archive/refs/tags/v0.2.1.tar.gz"
CHECKSUM_SHA256="407d14bc7659c65eca1c5266fb96a60b1e169b31c122159ae7f54e69a86e0b45"
SOURCE_URI_2="https://github.com/machinezone/IXWebSocket/archive/refs/tags/v11.4.5.tar.gz"
CHECKSUM_SHA256_2="c5fc225edec32bf7d583e55347ef2c9c4940d005c13ef5e848354a85602f5fd6"
SOURCE_DIR_2="IXWebSocket-11.4.5"
SOURCE_URI_3="https://github.com/mackron/miniaudio/archive/refs/tags/0.11.21.tar.gz"
CHECKSUM_SHA256_3="6afb5c231613d2fab4f1c668b7243ff9a7d6d78a7f5a2692c133f026fe508506"
SOURCE_DIR_3="miniaudio-0.11.21"
SOURCE_URI_4="https://github.com/nayuki/QR-Code-generator/archive/refs/tags/v1.8.0.tar.gz"
CHECKSUM_SHA256_4="2ec0a4d33d6f521c942eeaf473d42d5fe139abcfa57d2beffe10c5cf7d34ae60"
SOURCE_DIR_4="QR-Code-generator-1.8.0"
PATCHES="abaddon-0.2.1.patchset"
ADDITIONAL_FILES="abaddon.rdef.in"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
USER_SETTINGS_FILES="
settings/abaddon directory
"
PROVIDES="
abaddon$secondaryArchSuffix
app:Abaddon
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libatk_1.0$secondaryArchSuffix
lib:libatkmm_1.6$secondaryArchSuffix
lib:libcairo$secondaryArchSuffix
lib:libcairomm_1.0$secondaryArchSuffix
lib:libcrypto$secondaryArchSuffix
lib:libcurl$secondaryArchSuffix
lib:libfmt$secondaryArchSuffix
lib:libfontconfig$secondaryArchSuffix
lib:libfreetype$secondaryArchSuffix
lib:libgdk_3$secondaryArchSuffix
lib:libgdkmm_3.0$secondaryArchSuffix
lib:libgdk_pixbuf_2.0$secondaryArchSuffix
lib:libglib_2.0$secondaryArchSuffix
lib:libglibmm$secondaryArchSuffix
lib:libgtk_3$secondaryArchSuffix
lib:libgtkmm_3.0$secondaryArchSuffix
lib:libhandy_1${secondaryArchSuffix}
lib:libharfbuzz$secondaryArchSuffix
lib:libopus$secondaryArchSuffix
lib:libpango_1.0$secondaryArchSuffix
lib:libpangomm_1.4$secondaryArchSuffix
lib:librnnoise$secondaryArchSuffix
lib:libsigc_2.0$secondaryArchSuffix
lib:libsodium$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libspdlog$secondaryArchSuffix
lib:libsqlite3$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libatk_1.0$secondaryArchSuffix
devel:libatkmm_1.6$secondaryArchSuffix
devel:libcairo$secondaryArchSuffix
devel:libcrypto$secondaryArchSuffix
devel:libcairomm_1.0$secondaryArchSuffix
devel:libcurl$secondaryArchSuffix
devel:libfmt$secondaryArchSuffix
devel:libfontconfig$secondaryArchSuffix
devel:libfreetype$secondaryArchSuffix
devel:libgdk_3$secondaryArchSuffix
devel:libgdkmm_3.0$secondaryArchSuffix
devel:libgdk_pixbuf_2.0$secondaryArchSuffix
devel:libglib_2.0$secondaryArchSuffix
devel:libglibmm$secondaryArchSuffix
devel:libgtk_3$secondaryArchSuffix
devel:libgtkmm_3.0$secondaryArchSuffix
devel:libhandy_1${secondaryArchSuffix}
devel:libharfbuzz$secondaryArchSuffix
devel:nlohmann_json
devel:libopus$secondaryArchSuffix
devel:libpango_1.0$secondaryArchSuffix
devel:libpangomm_1.4$secondaryArchSuffix
devel:librnnoise$secondaryArchSuffix
devel:libsigc_2.0$secondaryArchSuffix
devel:libsodium$secondaryArchSuffix
devel:libssl$secondaryArchSuffix
devel:libspdlog$secondaryArchSuffix
devel:libsqlite3$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:make
cmd:gcc$secondaryArchSuffix
cmd:pkg_config$secondaryArchSuffix
"
BUILD() {
mkdir -p subprojects/ixwebsocket/
mkdir -p subprojects/miniaudio/
mkdir -p subprojects/qrcodegen/
cp -r $sourceDir2/* subprojects/ixwebsocket/
cp -r $sourceDir3/* subprojects/miniaudio/
cp -r $sourceDir4/* subprojects/qrcodegen/
cmake -Bbuild \
-DCMAKE_BUILD_TYPE=Release \
-DUSE_KEYCHAIN=0 \
-DENABLE_VOICE=OFF
make -C build $jobArgs
}
INSTALL() {
local APP_SIGNATURE="application/x-vnd.abaddon"
local MAJOR="`echo "$portVersion" | cut -d. -f1`"
local MIDDLE="`echo "$portVersion" | cut -d. -f2`"
local MINOR="`echo "$portVersion" | cut -d. -f3`"
sed \
-e "s|@APP_SIGNATURE@|$APP_SIGNATURE|" \
-e "s|@MAJOR@|$MAJOR|" \
-e "s|@MIDDLE@|$MIDDLE|" \
-e "s|@MINOR@|$MINOR|" \
-e "s|@LONG_INFO@|$SUMMARY|" \
$portDir/additional-files/abaddon.rdef.in > abaddon.rdef
mkdir -p $dataDir/abaddon
mkdir -p $appsDir
cp -r res/* $dataDir/abaddon
cp build/abaddon $appsDir/Abaddon
addResourcesToBinaries abaddon.rdef $appsDir/Abaddon
addAppDeskbarSymlink $appsDir/Abaddon
}

View File

@@ -0,0 +1,28 @@
resource app_flags B_EXCLUSIVE_LAUNCH;
resource app_version {
major = @MAJOR@,
middle = @MIDDLE@,
minor = @MINOR@,
variety = B_APPV_FINAL,
short_info = "Abaddon",
long_info = "@LONG_INFO@"
};
resource app_signature "@APP_SIGNATURE@";
resource vector_icon {
$"6E63696604050003FFB852038C6F4403900303050000020743274724BE20B7E6"
$"33362F2DBB29BD193E44BDBBC0494D515239C65CBD64CC19B8F94F37C5A137C7"
$"4C374D2EC5DCB9BE4929452CC185B800C456B52F02043824C01524B90A242C34"
$"2CB7722CBE7D4B55C09C55C7A7555B3A5BC0E15BB9D6020D4030C34530BEEC30"
$"2F2AB8F6B672B8FDB7852938B619BC5EB851BD40273BB53BBE09293A294229BF"
$"AC29C126274EB646C429B54DC67EB895C3F8B896C3E7B8934B334AB9DAC444BB"
$"D4C2CC3652BAC9C7C5BCBEC612335EB9BA5EBBE95E4657C1DBC8C4C244C8FA52"
$"4FC58CC5CAC84BC5A95040504350BC3A02044030C34530BC3A30304030BC3A30"
$"C3454050BC3A50C34550504050C34550BC3A050A020103000A010102000A0001"
$"01201F250A0301040238000000000000000037FFFF49E0004860000A03010402"
$"38000000000000000037FFFF4A7000492000"
};

View File

@@ -0,0 +1,186 @@
From 0dbd41d190666118220a41e539bd53b90b0486b3 Mon Sep 17 00:00:00 2001
From: zeldakatze <mail@zeldakatze.de>
Date: Wed, 10 Apr 2024 23:11:58 +0200
Subject: fix build for haiku
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d1b56fc..6e1d906 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -74,12 +74,17 @@ endif ()
target_precompile_headers(abaddon PRIVATE <gtkmm.h> src/abaddon.hpp src/util.hpp)
-if ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
+if (NOT (CMAKE_SYSTEM_NAME STREQUAL "Haiku") AND
+((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR
(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
-((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_CXX_COMPILER_VERSION LESS 9))))
+((CMAKE_SYSTEM_NAME STREQUAL "Linux") OR (CMAKE_CXX_COMPILER_VERSION LESS 9)))))
target_link_libraries(abaddon stdc++fs)
endif ()
+if (CMAKE_SYSTEM_NAME STREQUAL "Haiku")
+ target_link_libraries(abaddon network)
+endif ()
+
if (NOT WIN32)
target_sources(abaddon PRIVATE src/notifications/notifier_gio.cpp)
else ()
diff --git a/cmake/Findatkmm.cmake b/cmake/Findatkmm.cmake
index 68c3bc6..623d0e1 100644
--- a/cmake/Findatkmm.cmake
+++ b/cmake/Findatkmm.cmake
@@ -25,7 +25,8 @@ find_path(ATKMM_CONFIG_INCLUDE_DIR
/usr/lib
/usr/local/lib
/opt/local/lib
- PATH_SUFFIXES ${ATKMM_LIBRARY_NAME}/include)
+ PATH_SUFFIXES ${ATKMM_LIBRARY_NAME}/include
+ ${ATKMM_LIBRARY_NAME})
find_library(ATKMM_LIBRARY
NAMES ${ATKMM_LIBRARY_NAME}
diff --git a/cmake/Findgdkmm.cmake b/cmake/Findgdkmm.cmake
index 5316bb7..23077ca 100644
--- a/cmake/Findgdkmm.cmake
+++ b/cmake/Findgdkmm.cmake
@@ -1,4 +1,5 @@
set(gdkmm_LIBRARY_NAME gdkmm-3.0)
+set(gtkmm_LIBRARY_NAME gtkmm-3.0)
find_package(PkgConfig)
if (PKG_CONFIG_FOUND)
@@ -23,7 +24,8 @@ find_path(gdkmm_CONFIG_INCLUDE_DIR
/usr/lib
/usr/local/lib
/opt/local/lib
- PATH_SUFFIXES ${gdkmm_LIBRARY_NAME}/include)
+ PATH_SUFFIXES ${gdkmm_LIBRARY_NAME}/include
+ ${gtkmm_LIBRARY_NAME})
find_library(gdkmm_LIBRARY
NAMES ${gdkmm_LIBRARY_NAME}
diff --git a/cmake/Findglibmm.cmake b/cmake/Findglibmm.cmake
index 27220e6..11bd996 100644
--- a/cmake/Findglibmm.cmake
+++ b/cmake/Findglibmm.cmake
@@ -22,7 +22,8 @@ find_path(GLIBMM_INCLUDE_DIR
find_path(GLIBMM_CONFIG_INCLUDE_DIR
NAMES glibmmconfig.h
HINTS ${GLIBMM_LIBRARY_HINTS}
- PATH_SUFFIXES ${GLIBMM_LIBRARY_NAME}/include)
+ PATH_SUFFIXES ${GLIBMM_LIBRARY_NAME}/include
+ ${GLIBMM_LIBRARY_NAME})
find_library(GLIBMM_LIBRARY
NAMES ${GLIBMM_LIBRARY_NAME}
diff --git a/cmake/Findgtkmm.cmake b/cmake/Findgtkmm.cmake
index addbede..908a08c 100644
--- a/cmake/Findgtkmm.cmake
+++ b/cmake/Findgtkmm.cmake
@@ -32,12 +32,15 @@ find_path(GTKMM_INCLUDE_DIR
find_path(GTKMM_CONFIG_INCLUDE_DIR
NAMES gtkmmconfig.h
HINTS ${GTKMM_LIBRARY_HINTS}
+ PATH_SUFFIXES ${GTKMM_LIBRARY_NAME}
PATH_SUFFIXES ${GTKMM_LIBRARY_NAME}/include)
find_library(GTKMM_LIB
NAMES ${GTKMM_LIBRARY_NAME}
gtkmm
HINTS ${GTKMM_LIBRARY_HINTS}
+ HINTS ${GTKMM_INCLUDE_DIR}
+ PATH ${GTKMM_INCLUDE_DIR}
PATH_SUFFIXES ${GTKMM_LIBRARY_NAME}
${GTKMM_LIBRARY_NAME}/include)
diff --git a/cmake/Findsigc++.cmake b/cmake/Findsigc++.cmake
index e0f56c0..d81eb15 100644
--- a/cmake/Findsigc++.cmake
+++ b/cmake/Findsigc++.cmake
@@ -19,7 +19,8 @@ find_path(SIGC++_INCLUDE_DIR
find_path(SIGC++_CONFIG_INCLUDE_DIR
NAMES sigc++config.h
HINTS ${SIGC++_LIBRARY_HINTS}
- PATH_SUFFIXES ${SIGC++_LIBRARY_NAME}/include)
+ PATH_SUFFIXES ${SIGC++_LIBRARY_NAME}/include
+ ${SIGC++_LIBRARY_NAME})
find_library(SIGC++_LIBRARY
NAMES ${SIGC++_LIBRARY_FILE}
--
2.43.2
From 3059f8468983a8db4bc5bd70768ab004926510a7 Mon Sep 17 00:00:00 2001
From: zeldakatze <mail@zeldakatze.de>
Date: Thu, 11 Apr 2024 00:16:45 +0200
Subject: abaddon: add haiku platform code
diff --git a/src/platform.cpp b/src/platform.cpp
index 0a69721..47b6bbc 100644
--- a/src/platform.cpp
+++ b/src/platform.cpp
@@ -215,6 +215,56 @@ std::string Platform::FindStateCacheFolder() {
return home_path;
}
+#elif __HAIKU__
+#include <FindDirectory.h>
+#include <fs_info.h>
+
+std::string Platform::FindResourceFolder() {
+ static std::string found_path;
+ static bool found = false;
+ if (found) return found_path;
+
+ dev_t volume = dev_for_path("/boot");
+ char buffer[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH];
+ find_directory(B_SYSTEM_DATA_DIRECTORY, volume, false, buffer, sizeof(buffer));
+ strcat(buffer, "/abaddon/");
+ found_path = std::string(buffer);
+ return found_path;
+}
+
+std::string Platform::FindConfigFile() {
+ const auto cfg = std::getenv("ABADDON_CONFIG");
+ if (cfg != nullptr) return cfg;
+
+ static std::string found_path;
+ static bool found = false;
+ if (found) return found_path;
+
+ dev_t volume = dev_for_path("/boot");
+ char buffer[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH];
+ char cmdbuffer[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH] = "mkdir -p ";
+ find_directory(B_USER_SETTINGS_DIRECTORY, volume, false, buffer, sizeof(buffer));
+ strcat(buffer, "/abaddon/");
+ strcat(cmdbuffer, buffer);
+ system(cmdbuffer);
+ strcat(buffer, "abaddon.ini");
+ found_path = std::string(buffer);
+ return found_path;
+}
+
+std::string Platform::FindStateCacheFolder() {
+ static std::string found_path;
+ static bool found = false;
+ if (found) return found_path;
+
+ dev_t volume = dev_for_path("/boot");
+ char buffer[B_PATH_NAME_LENGTH+B_FILE_NAME_LENGTH];
+ find_directory(B_SYSTEM_CACHE_DIRECTORY, volume, false, buffer, sizeof(buffer));
+ strcat(buffer, "/abaddon/");
+ found_path = std::string(buffer);
+ return found_path;
+}
+
#else
std::string Platform::FindResourceFolder() {
--
2.43.2