Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ohPipeline: 1.155.1133 #23835

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
4 changes: 3 additions & 1 deletion recipes/ohpipeline/config.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
versions:
"1.139.1000":
folder: all
folder: cmake
"1.155.1133":
folder: waf
22 changes: 22 additions & 0 deletions recipes/ohpipeline/waf/conandata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
sources:
"1.155.1133":
source:
url: "https://github.com/openhome/ohPipeline/archive/refs/tags/ohMediaPlayer_1.155.1133.tar.gz"
sha256: "507bdf70fc6b9bf8e4605546a5c7ae99abbe537cce4b74b3e091764323939fae"
helpers:
url: "https://github.com/openhome/ohWafHelpers/archive/refs/tags/ohWafHelpers_0.2.127.tar.gz"
sha256: "4d2365622eb6ccf883a14c1c02687d7f0560e0bbac31cbf48382b3e1c8ae6b60"
patches:
"1.155.1133":
- patch_file: "patches/0001-disable-raat.patch"
patch_type: "build"
patch_description: "Disable proprietary SDK"
- patch_file: "patches/0002-remove-msvs.patch"
patch_type: "build"
patch_description: "Remove msvs"
- patch_file: "patches/0003-fix-ohwafhelpers.patch"
patch_type: "build"
patch_description: "Fix ohWafHelpers"
- patch_file: "patches/0004-link-to-atomic.patch"
patch_type: "build"
patch_description: "Link to atomic"
129 changes: 129 additions & 0 deletions recipes/ohpipeline/waf/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
from conan import ConanFile
from conan.tools.build import check_min_cppstd
from conan.tools.env import VirtualBuildEnv
from conan.tools.files import chdir, copy, get, export_conandata_patches, apply_conandata_patches, rm, unzip
from conan.tools.layout import basic_layout
from conan.tools.scm import Version
from conan.errors import ConanInvalidConfiguration
import os

required_conan_version = ">=1.53.0"


class OhPipelineConan(ConanFile):
name = "ohpipeline"
description = "OpenHome audio pipeline"
license = "MIT"
url = "https://github.com/conan-io/conan-center-index"
homepage = "https://github.com/openhome/ohPipeline"
topics = ("openhome", "ohnet", "ohpipeline", "upnp")

package_type = "static-library"
settings = "os", "arch", "compiler", "build_type"
options = {
"fPIC": [True, False],
}
default_options = {
"fPIC": True,
}

@property
def _min_cppstd(self):
return 11

@property
def _compilers_minimum_version(self):
return {
"gcc": "7",
}

def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC

def export_sources(self):
export_conandata_patches(self)

def build_requirements(self):
self.tool_requires("waf/[>=2.0.19]")
self.tool_requires("cpython/[>=3.0.0]")

def requirements(self):
self.requires("ohnet/[>=1.36.5182]", transitive_headers=True, transitive_libs=True)
self.requires("openssl/[>=1.1 <4]")
self.requires("libmad/[>=0.15.1b]")
self.requires("alac/[>=cci.20121212]")
self.requires("libfdk_aac/[>=2.0.3]")
self.requires("faac/[>=1.30]")
self.requires("flac/[>=1.4.3]")
self.requires("ogg/[>=1.3.5]")
self.requires("vorbis/[>=1.3.7]")

def layout(self):
basic_layout(self, src_folder="src")

def validate(self):
if self.settings.compiler.cppstd:
check_min_cppstd(self, self._min_cppstd)
minimum_version = self._compilers_minimum_version.get(str(self.settings.compiler), False)
if minimum_version and Version(self.settings.compiler.version) < minimum_version:
raise ConanInvalidConfiguration(
f"{self.ref} requires C++{self._min_cppstd}, which your compiler does not support."
)

def generate(self):
venv = VirtualBuildEnv(self)
venv.generate()

def source(self):
get(self, **self.conan_data["sources"][self.version]["source"], strip_root=True)
get(self, **self.conan_data["sources"][self.version]["helpers"], destination='dependencies/AnyPlatform/ohWafHelpers', strip_root=True)

def build(self):
apply_conandata_patches(self)
with chdir(self, self.source_folder):
self.run(f"LDFLAGS=-L{self.dependencies['zlib'].cpp_info.libdirs[0]} waf configure --ohnet-include-dir={self.dependencies['ohnet'].cpp_info.includedirs[0]} --ohnet-lib-dir={self.dependencies['ohnet'].cpp_info.libdirs[0]} --ohnet={self.dependencies['ohnet'].cpp_info.libdirs[0]}/.. --ssl={self.dependencies['openssl'].cpp_info.libdirs[0]}/.. --with-default-fpm")
self.run("waf build")

def package(self):
copy(self, "License.txt", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses"))
with chdir(self, self.source_folder):
self.run("waf bundle")
unzip(self, "build/ohMediaPlayer.tar.gz", self.package_folder, strip_root=True)
rm(self, "dependencies.json", self.package_folder)

def package_info(self):
self.cpp_info.libs = [
'ohPipeline',
'ohMediaPlayer',
'ohMediaPlayerTestUtils',
'SourcePlaylist',
'SourceRadio',
'SourceSongcast',
'SourceRaop',
'SourceScd',
'SourceUpnpAv',
'CodecAacFdk',
'CodecAacFdkAdts',
'CodecAacFdkBase',
'CodecAacFdkMp4',
'CodecAifc',
'CodecAiff',
'CodecAiffBase',
'CodecAlacAppleBase',
'CodecAlacApple',
'CodecDsdDsf',
'CodecDsdDff',
'CodecDsdRaw',
'CodecFlac',
'CodecMp3',
'CodecVorbis',
'CodecWav',
'CodecPcm',
'libOgg',
'WebAppFramework',
'ConfigUi',
'ConfigUiTestUtils',
'Odp',
'Podcast'
]
63 changes: 63 additions & 0 deletions recipes/ohpipeline/waf/patches/0001-disable-raat.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
diff --git a/wscript b/wscript
index 616b3329..4d3e7f82 100755
--- a/wscript
+++ b/wscript
@@ -7,35 +7,34 @@ import shutil

from waflib.Node import Node

from wafmodules.filetasks import (
find_resource_or_fail)

import os.path, sys
sys.path[0:0] = [os.path.join('dependencies', 'AnyPlatform', 'ohWafHelpers')]

from filetasks import gather_files, build_tree, copy_task, find_dir_or_fail, create_copy_task
-from utilfuncs import invoke_test, guess_dest_platform, configure_toolchain, guess_ohnet_location, guess_location, guess_ssl_location, guess_raat_location, guess_libplatform_location, guess_libosa_location, is_core_platform
+from utilfuncs import invoke_test, guess_dest_platform, configure_toolchain, guess_ohnet_location, guess_location, guess_ssl_location, guess_libplatform_location, guess_libosa_location, is_core_platform

def options(opt):
opt.load('msvs')
opt.load('msvc')
opt.load('compiler_cxx')
opt.load('compiler_c')
opt.add_option('--ohnet-include-dir', action='store', default=None)
opt.add_option('--ohnet-lib-dir', action='store', default=None)
opt.add_option('--testharness-dir', action='store', default=os.path.join('dependencies', 'AnyPlatform', 'testharness'))
opt.add_option('--ohnet', action='store', default=None)
opt.add_option('--ssl', action='store', default=None)
opt.add_option('--libplatform', action='store', default=None)
opt.add_option('--libosa', action='store', default=None)
- opt.add_option('--raat', action='store', default=None)
opt.add_option('--debug', action='store_const', dest="debugmode", const="Debug", default="Release")
opt.add_option('--release', action='store_const', dest="debugmode", const="Release", default="Release")
opt.add_option('--dest-platform', action='store', default=None)
opt.add_option('--cross', action='store', default=None)
opt.add_option('--with-default-fpm', action='store_true', default=False)

def configure(conf):

def set_env(conf, varname, value):
conf.msg(
@@ -53,21 +52,20 @@ def configure(conf):
except KeyError:
conf.fatal('Specify --dest-platform')

if is_core_platform(conf):
guess_libosa_location(conf)
guess_libplatform_location(conf)

configure_toolchain(conf)
guess_ohnet_location(conf)
guess_ssl_location(conf)
- guess_raat_location(conf)

conf.env.dest_platform = conf.options.dest_platform
conf.env.testharness_dir = os.path.abspath(conf.options.testharness_dir)

if conf.options.dest_platform.startswith('Windows'):
conf.env.LIB_OHNET=['ws2_32', 'iphlpapi', 'dbghelp', 'psapi', 'userenv']
conf.env.STLIB_OHNET=['TestFramework', 'ohNetCore']

if is_core_platform(conf):
conf.env.prepend_value('STLIB_OHNET', ['target', 'platform'])
26 changes: 26 additions & 0 deletions recipes/ohpipeline/waf/patches/0002-remove-msvs.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
diff --git a/wscript b/wscript
index ee7adbba..38ef5b01 100755
--- a/wscript
+++ b/wscript
@@ -10,21 +10,20 @@ from waflib.Node import Node
from wafmodules.filetasks import (
find_resource_or_fail)

import os.path, sys
sys.path[0:0] = [os.path.join('dependencies', 'AnyPlatform', 'ohWafHelpers')]

from filetasks import gather_files, build_tree, copy_task, find_dir_or_fail, create_copy_task
from utilfuncs import invoke_test, guess_dest_platform, configure_toolchain, guess_ohnet_location, guess_location, guess_ssl_location, guess_libplatform_location, guess_libosa_location, is_core_platform

def options(opt):
- opt.load('msvs')
opt.load('msvc')
opt.load('compiler_cxx')
opt.load('compiler_c')
opt.add_option('--ohnet-include-dir', action='store', default=None)
opt.add_option('--ohnet-lib-dir', action='store', default=None)
opt.add_option('--testharness-dir', action='store', default=os.path.join('dependencies', 'AnyPlatform', 'testharness'))
opt.add_option('--ohnet', action='store', default=None)
opt.add_option('--ssl', action='store', default=None)
opt.add_option('--libplatform', action='store', default=None)
opt.add_option('--libosa', action='store', default=None)
Loading