Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 May 2026 20:48:58 +0000
From:      Piotr Kubaj <pkubaj@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 9eea24f124e7 - main - audio/maolan: port to powerpc64*
Message-ID:  <6a19fbba.32740.52f652d4@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by pkubaj:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9eea24f124e71760c1e149a3c7eabac95d61bb43

commit 9eea24f124e71760c1e149a3c7eabac95d61bb43
Author:     Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2026-05-28 11:20:26 +0000
Commit:     Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2026-05-29 20:48:53 +0000

    audio/maolan: port to powerpc64*
    
    Usual replacing of i8's with c_char.
---
 audio/maolan/Makefile                              |  2 +-
 .../files/patch-cargo-crates_lilv-0.2.4_src_ui.rs  | 13 ++++
 ...s_maolan-engine-0.0.20_src_plugins_vst3_host.rs | 20 +++++
 ...an-engine-0.0.20_src_plugins_vst3_interfaces.rs | 91 ++++++++++++++++++++++
 4 files changed, 125 insertions(+), 1 deletion(-)

diff --git a/audio/maolan/Makefile b/audio/maolan/Makefile
index 13e8f054398f..613413090767 100644
--- a/audio/maolan/Makefile
+++ b/audio/maolan/Makefile
@@ -9,7 +9,7 @@ WWW=		https://maolan.github.io
 LICENSE=	BSD2CLAUSE
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-ONLY_FOR_ARCHS=	amd64
+ONLY_FOR_ARCHS=	amd64 powerpc64 powerpc64le
 
 LIB_DEPENDS=	libavutil.so:multimedia/ffmpeg \
 		libjack.so:audio/jack \
diff --git a/audio/maolan/files/patch-cargo-crates_lilv-0.2.4_src_ui.rs b/audio/maolan/files/patch-cargo-crates_lilv-0.2.4_src_ui.rs
new file mode 100644
index 000000000000..e9d7b85a795f
--- /dev/null
+++ b/audio/maolan/files/patch-cargo-crates_lilv-0.2.4_src_ui.rs
@@ -0,0 +1,13 @@
+--- cargo-crates/lilv-0.2.4/src/ui.rs.orig	2026-05-28 08:42:48 UTC
++++ cargo-crates/lilv-0.2.4/src/ui.rs
+@@ -140,8 +140,8 @@ unsafe extern "C" fn supported_func<S: UISupport>(
+ }
+ 
+ unsafe extern "C" fn supported_func<S: UISupport>(
+-    container_type_uri: *const i8,
+-    ui_type_uri: *const i8,
++    container_type_uri: *const std::os::raw::c_char,
++    ui_type_uri: *const std::os::raw::c_char,
+ ) -> u32 {
+     S::supported(
+         CStr::from_ptr(container_type_uri).to_str().unwrap(),
diff --git a/audio/maolan/files/patch-cargo-crates_maolan-engine-0.0.20_src_plugins_vst3_host.rs b/audio/maolan/files/patch-cargo-crates_maolan-engine-0.0.20_src_plugins_vst3_host.rs
new file mode 100644
index 000000000000..55915c57b78d
--- /dev/null
+++ b/audio/maolan/files/patch-cargo-crates_maolan-engine-0.0.20_src_plugins_vst3_host.rs
@@ -0,0 +1,20 @@
+--- cargo-crates/maolan-engine-0.0.20/src/plugins/vst3/host.rs.orig	2026-05-28 09:11:22 UTC
++++ cargo-crates/maolan-engine-0.0.20/src/plugins/vst3/host.rs
+@@ -179,7 +179,7 @@ fn class_info_to_plugin_info(
+     }
+ }
+ 
+-fn tuid_to_string(tuid: &[i8; 16]) -> String {
++fn tuid_to_string(tuid: &[std::os::raw::c_char; 16]) -> String {
+     // Convert TUID to hexadecimal string
+     tuid.iter()
+         .map(|&b| format!("{:02X}", b as u8))
+@@ -204,7 +204,7 @@ mod tests {
+         let class_info = ClassInfo {
+             name: "Synth".to_string(),
+             category: "Instrument".to_string(),
+-            cid: [0x12_i8; 16],
++            cid: [0x12_i8 as std::os::raw::c_char; 16],
+         };
+ 
+         let info = class_info_to_plugin_info(
diff --git a/audio/maolan/files/patch-cargo-crates_maolan-engine-0.0.20_src_plugins_vst3_interfaces.rs b/audio/maolan/files/patch-cargo-crates_maolan-engine-0.0.20_src_plugins_vst3_interfaces.rs
new file mode 100644
index 000000000000..0c34db17e4ca
--- /dev/null
+++ b/audio/maolan/files/patch-cargo-crates_maolan-engine-0.0.20_src_plugins_vst3_interfaces.rs
@@ -0,0 +1,91 @@
+--- cargo-crates/maolan-engine-0.0.20/src/plugins/vst3/interfaces.rs.orig	2026-05-28 09:11:22 UTC
++++ cargo-crates/maolan-engine-0.0.20/src/plugins/vst3/interfaces.rs
+@@ -193,7 +193,7 @@ impl PluginFactory {
+     }
+ 
+     /// Create an instance of a plugin using the trait
+-    pub fn create_instance(&self, class_id: &[i8; 16]) -> Result<PluginInstance, String> {
++    pub fn create_instance(&self, class_id: &[std::os::raw::c_char; 16]) -> Result<PluginInstance, String> {
+         use vst3::Steinberg::IPluginFactoryTrait;
+ 
+         let mut instance_ptr: *mut c_void = std::ptr::null_mut();
+@@ -201,7 +201,7 @@ impl PluginFactory {
+         let result = unsafe {
+             self.factory.createInstance(
+                 class_id.as_ptr(),
+-                IComponent::IID.as_ptr() as *const i8,
++                IComponent::IID.as_ptr() as *const std::os::raw::c_char,
+                 &mut instance_ptr,
+             )
+         };
+@@ -246,7 +246,7 @@ impl PluginFactory {
+ 
+     pub fn create_edit_controller(
+         &self,
+-        class_id: &[i8; 16],
++        class_id: &[std::os::raw::c_char; 16],
+     ) -> Result<ComPtr<IEditController>, String> {
+         use vst3::Steinberg::IPluginFactoryTrait;
+ 
+@@ -255,7 +255,7 @@ impl PluginFactory {
+         let result = unsafe {
+             self.factory.createInstance(
+                 class_id.as_ptr(),
+-                IEditController::IID.as_ptr() as *const i8,
++                IEditController::IID.as_ptr() as *const std::os::raw::c_char,
+                 &mut instance_ptr,
+             )
+         };
+@@ -293,7 +293,7 @@ pub struct ClassInfo {
+ pub struct ClassInfo {
+     pub name: String,
+     pub category: String,
+-    pub cid: [i8; 16],
++    pub cid: [std::os::raw::c_char; 16],
+ }
+ 
+ /// Information about the plugin factory
+@@ -522,7 +522,7 @@ impl PluginInstance {
+             let vtbl = (*component_raw).vtbl;
+             let query_interface = (*vtbl).base.base.queryInterface;
+             // Cast IID from [u8; 16] to [i8; 16]
+-            let iid = std::mem::transmute::<&[u8; 16], &[i8; 16]>(&IAudioProcessor::IID);
++            let iid = std::mem::transmute::<&[u8; 16], &[std::os::raw::c_char; 16]>(&IAudioProcessor::IID);
+             query_interface(component_raw as *mut _, iid, &mut processor_ptr)
+         };
+ 
+@@ -537,7 +537,7 @@ impl PluginInstance {
+             let component_raw = self.component.as_ptr();
+             let vtbl = (*component_raw).vtbl;
+             let query_interface = (*vtbl).base.base.queryInterface;
+-            let iid = std::mem::transmute::<&[u8; 16], &[i8; 16]>(&IEditController::IID);
++            let iid = std::mem::transmute::<&[u8; 16], &[std::os::raw::c_char; 16]>(&IEditController::IID);
+             query_interface(component_raw as *mut _, iid, &mut controller_ptr)
+         };
+         if query_result == kResultOk && !controller_ptr.is_null() {
+@@ -1621,7 +1621,7 @@ fn get_module_path(bundle_path: &Path) -> Result<std::
+     }
+ }
+ 
+-fn extract_cstring(bytes: &[i8]) -> String {
++fn extract_cstring(bytes: &[std::os::raw::c_char]) -> String {
+     let len = bytes.iter().position(|&c| c == 0).unwrap_or(bytes.len());
+     let u8_bytes: Vec<u8> = bytes[..len].iter().map(|&b| b as u8).collect();
+     String::from_utf8_lossy(&u8_bytes).to_string()
+@@ -1663,14 +1663,14 @@ mod tests {
+ 
+     #[test]
+     fn extract_cstring_stops_at_nul_and_uses_lossy_utf8() {
+-        let bytes = [b'A' as i8, b'B' as i8, -1, 0, b'Z' as i8];
++        let bytes = [b'A' as std::os::raw::c_char, b'B' as std::os::raw::c_char, -1i8 as std::os::raw::c_char, 0, b'Z' as std::os::raw::c_char];
+ 
+         assert_eq!(extract_cstring(&bytes), "AB\u{FFFD}");
+     }
+ 
+     #[test]
+     fn extract_cstring_uses_full_slice_when_not_nul_terminated() {
+-        let bytes = [b'X' as i8, b'Y' as i8, b'Z' as i8];
++        let bytes = [b'X' as std::os::raw::c_char, b'Y' as std::os::raw::c_char, b'Z' as std::os::raw::c_char];
+ 
+         assert_eq!(extract_cstring(&bytes), "XYZ");
+     }


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a19fbba.32740.52f652d4>