Initial commit

This commit is contained in:
2026-07-30 13:20:08 +03:00
commit c7feb08367
7 changed files with 206 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
# Ignore BPM archives and signatures
*.bpm
*.bpm.sig
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
# Github repository
REPO="metabrainz/libmusicbrainz"
# Get tag name using Github Rest API
TAG_NAME=$(curl -s -L -H "X-GitHub-Api-Version: 2022-11-28" -H "Authorization: token ${GITHUB_API_TOKEN}" https://api.github.com/repos/"$REPO"/releases/latest | jq -r '.tag_name')
# Get version number from tag name
VERSION=$(echo "$TAG_NAME" | rev | cut -d'-' -f1 | rev)
# Trim 'v' character in VERSION variable
VERSION=$(echo "$VERSION" | tr -d 'v')
echo "$VERSION"
+20
View File
@@ -0,0 +1,20 @@
name: libmusicbrainz
description: Library That Provides Access to the MusicBrainz Server
version: 5.1.0
revision: 1
url: https://musicbrainz.org/doc/libmusicbrainz
license: LGPL-2.1-or-later
architecture: any
type: source
depends:
- gcc-libs
- libxml2
- neon
make_depends:
- cmake
- doxygen
downloads:
- url: https://github.com/metabrainz/libmusicbrainz/releases/download/release-${BPM_PKG_VERSION}/libmusicbrainz-${BPM_PKG_VERSION}.tar.gz
extract_to: ${BPM_SOURCE}
extract_strip_components: 1
checksum: 6749259e89bbb273f3f5ad7acdffb7c47a2cf8fcaeab4c4695484cef5f4c6b46
+33
View File
@@ -0,0 +1,33 @@
# This is the recipe.sh script. It is executed by BPM in a temporary directory when compiling a source package
# BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE
# BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT
# The prepare function is executed in the root of the temp directory
# This function is used for putting downloaded files to the correct location or applying patches
prepare() {
cd "$BPM_SOURCE"
patch -Np1 -i "$BPM_WORKDIR"/libmusicbrainz-5.patch
patch -Np1 -i "$BPM_WORKDIR"/libmusicbrainz-16.patch
patch -Np1 -i "$BPM_WORKDIR"/libmusicbrainz-19.patch
}
# The build function is executed in the source directory
# This function is used to compile the source code
build() {
cmake -B build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_POLICY_VERSION_MINIMUM=3.5
cmake --build build
cmake --build build --target docs
}
# The package function is executed in the source directory
# This function is used to move the compiled files into the output directory
package() {
DESTDIR="$BPM_OUTPUT" cmake --install build
# Install documentation
mkdir -p "$BPM_OUTPUT"/usr/share/doc/libmusicbrainz
cp -r build/docs "$BPM_OUTPUT"/usr/share/doc/libmusicbrainz/html
# Install package license
install -Dm644 "$BPM_SOURCE"/COPYING.txt "$BPM_OUTPUT"/usr/share/licenses/libmusicbrainz5/COPYING.txt
}
+24
View File
@@ -0,0 +1,24 @@
From 36262d60fe92fe7a2c9bfb40e736bfcd29a6c3bd Mon Sep 17 00:00:00 2001
From: Abderrahim Kitouni <[email protected]>
Date: Fri, 13 Apr 2018 09:56:57 +0100
Subject: [PATCH] src/CMakelists.txt: do not use wildcards for dependencies
This is discouraged by cmake's documentation and doesn't work with the ninja generator.
---
src/CMakeLists.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 68c04e3..f7439d3 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -37,7 +37,8 @@ ADD_CUSTOM_COMMAND(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mb5_c.cc ${CMAKE_CURRENT_BINARY_DIR}/mb5_c.h ${CMAKE_CURRENT_BINARY_DIR}/../include/musicbrainz5/mb5_c.h
COMMAND make-c-interface ${CMAKE_CURRENT_SOURCE_DIR} cinterface.xml ${CMAKE_CURRENT_BINARY_DIR} mb5_c.cc mb5_c.h
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_BINARY_DIR}/mb5_c.h ${CMAKE_CURRENT_BINARY_DIR}/../include/musicbrainz5/mb5_c.h
- DEPENDS make-c-interface cinterface.xml *.inc
+ DEPENDS make-c-interface cinterface.xml c-int-medium-defines.inc c-int-query-source.inc c-int-source-funcs.inc
+ c-int-medium-source.inc c-int-release-defines.inc c-int-query-defines.inc c-int-release-source.inc
)
ADD_CUSTOM_TARGET(src_gen DEPENDS mb5_c.h)
+64
View File
@@ -0,0 +1,64 @@
From 9ba00067a15479a52262a5126bcb6889da5884b7 Mon Sep 17 00:00:00 2001
From: Christopher Degawa <[email protected]>
Date: Sun, 8 Oct 2023 11:41:30 -0500
Subject: [PATCH 1/2] libxml: include parser.h
libxml2 removed the inclusion of global.h in a few of its include files,
so we can no longer rely on transitive includes.
This applies to functions like xmlParseFile.
Signed-off-by: Christopher Degawa <[email protected]>
---
src/xmlParser.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/xmlParser.cc b/src/xmlParser.cc
index e63df55..53dec25 100644
--- a/src/xmlParser.cc
+++ b/src/xmlParser.cc
@@ -30,6 +30,7 @@
#include <cstring>
#include <libxml/tree.h>
+#include <libxml/parser.h>
XMLResults::XMLResults()
: line(0),
From 558c9ba0e6d702d5c877f75be98176f57abf1b02 Mon Sep 17 00:00:00 2001
From: Christopher Degawa <[email protected]>
Date: Sun, 8 Oct 2023 11:42:55 -0500
Subject: [PATCH 2/2] libxml: constify the storage of xmlGetLastError()
libxml2 recently made it a const return.
Since nothing is being modified of it, this should have no real effect
past satisfying the compiler.
Signed-off-by: Christopher Degawa <[email protected]>
---
src/xmlParser.cc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/xmlParser.cc b/src/xmlParser.cc
index 53dec25..fee684c 100644
--- a/src/xmlParser.cc
+++ b/src/xmlParser.cc
@@ -57,7 +57,7 @@ XMLNode *XMLRootNode::parseFile(const std::string &filename, XMLResults* results
doc = xmlParseFile(filename.c_str());
if ((doc == NULL) && (results != NULL)) {
- xmlErrorPtr error = xmlGetLastError();
+ const xmlError *error = xmlGetLastError();
results->message = error->message;
results->line = error->line;
results->code = error->code;
@@ -72,7 +72,7 @@ XMLNode *XMLRootNode::parseString(const std::string &xml, XMLResults* results)
doc = xmlParseMemory(xml.c_str(), xml.length());
if ((doc == NULL) && (results != NULL)) {
- xmlErrorPtr error = xmlGetLastError();
+ const xmlError *error = xmlGetLastError();
results->message = error->message;
results->line = error->line;
results->code = error->code;
+47
View File
@@ -0,0 +1,47 @@
From 3c8d945c20a6fd6eabe9fc3ef24809b88cb50301 Mon Sep 17 00:00:00 2001
From: Sebastian Ramacher <[email protected]>
Date: Thu, 20 Nov 2014 18:54:17 +0100
Subject: [PATCH 1/2] Allow doxygen out-of-tree builds
Signed-off-by: Sebastian Ramacher <[email protected]>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 384cb65..83c5b23 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,7 +29,7 @@ SET(LIB_INSTALL_DIR ${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX} CACHE PATH "Install
SET(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "Installation prefix for C header files" FORCE)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libmusicbrainz5.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libmusicbrainz5.pc)
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile)
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
FILE(GLOB headers ${CMAKE_CURRENT_SOURCE_DIR}/include/musicbrainz5/*.h)
From 3407ac7df846b141b05d5bd747a1f001e9fc08b5 Mon Sep 17 00:00:00 2001
From: Sebastian Ramacher <[email protected]>
Date: Thu, 20 Nov 2014 19:07:36 +0100
Subject: [PATCH 2/2] Also move generated config.h to CMAKE_BINARY_DIR
Signed-off-by: Sebastian Ramacher <[email protected]>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 83c5b23..e8d68c0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,7 +30,7 @@ SET(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "Installation
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libmusicbrainz5.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libmusicbrainz5.pc)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
-CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
FILE(GLOB headers ${CMAKE_CURRENT_SOURCE_DIR}/include/musicbrainz5/*.h)
INSTALL(FILES ${headers} ${CMAKE_CURRENT_BINARY_DIR}/include/musicbrainz5/mb5_c.h DESTINATION ${INCLUDE_INSTALL_DIR}/musicbrainz5)