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

[Actions] Adding a MacOS build workflow, fixing several MacOS specific compilation errors and warnings #327

Merged
merged 19 commits into from
Nov 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
5751028
Adding a macOS build template
VeithMetro Nov 13, 2024
e6a3da5
Add a workflow file for macOS build
VeithMetro Nov 13, 2024
13d6adf
Remove the architecture specification from the build command
VeithMetro Nov 13, 2024
6677439
Disabling DeviceIdentification plugin due to no platform backend
VeithMetro Nov 13, 2024
fc01a22
Mark all Message method from Publishers as overrides
VeithMetro Nov 13, 2024
5c2ebb7
Bring Attach and Detach from PluginHost::JSONRPC into the MessageCont…
VeithMetro Nov 13, 2024
b7605e5
Try to enable the const copy constructor of MonitorObject to see if t…
VeithMetro Nov 13, 2024
4bf3342
The operators have to be deleted, bring it back
VeithMetro Nov 13, 2024
4f0168e
Removing the proper copy and assignemtn operators with const instead
VeithMetro Nov 13, 2024
33a48b6
Remove one instance of operator= deletion
VeithMetro Nov 13, 2024
3d29955
Make sure to include the fno-gnu-unique flag only for GCC
VeithMetro Nov 13, 2024
d6f99b8
Slight formatting changes
VeithMetro Nov 13, 2024
2098cdd
Adding a missing override
VeithMetro Nov 13, 2024
b014622
Adding overrides and marking member variable as not used
VeithMetro Nov 13, 2024
d520fe5
Mark the PerformanceMetrics methods as overrides of IPlugin
VeithMetro Nov 13, 2024
9a598a3
Mark Activated from TraceOutput as an override of a method from Perfo…
VeithMetro Nov 13, 2024
2913a15
Removing instantiation of LoggerFactory that occurs after specialization
VeithMetro Nov 13, 2024
8f7327c
Add override to Activated in TraceOutput
VeithMetro Nov 14, 2024
834ccba
Use the template from master and update the trigger conditions
VeithMetro Nov 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/workflows/Build ThunderNanoServicesRDK on MacOS.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Build ThunderNanoServicesRDK on MacOS

on:
workflow_dispatch:
push:
branches: ["master"]
pull_request:
branches: ["master"]

jobs:
Thunder:
uses: rdkcentral/Thunder/.github/workflows/MacOS build template.yml@master

ThunderInterfaces:
needs: Thunder
uses: rdkcentral/ThunderInterfaces/.github/workflows/MacOS build template.yml@master

ThunderNanoServicesRDK:
needs: ThunderInterfaces
uses: WebPlatformForEmbedded/ThunderNanoServicesRDK/.github/workflows/MacOS build template.yml@master
81 changes: 81 additions & 0 deletions .github/workflows/MacOS build template.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: MacOS build template

on:
workflow_call:

jobs:
ThunderNanoServicesRDK:

runs-on: macos-14

strategy:
matrix:
build_type: [Debug, Release, MinSizeRel]

name: Build type - ${{matrix.build_type}}
steps:
# --------- Packages & artifacts ---------
- name: Install necessary packages
run: |
brew update
brew upgrade
brew install ninja zlib
python3 -m venv venv
source venv/bin/activate
pip install jsonref

- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: ThunderInterfaces-${{matrix.build_type}}-artifact
path: ${{matrix.build_type}}

- name: Unpack files
run: |
tar -xvzf ${{matrix.build_type}}/${{matrix.build_type}}.tar.gz
rm ${{matrix.build_type}}/${{matrix.build_type}}.tar.gz

# ----- Checkout & Options regex -----
- name: Checkout ThunderNanoServicesRDK
uses: actions/checkout@v4
with:
path: ThunderNanoServicesRDK
repository: WebPlatformForEmbedded/ThunderNanoServicesRDK

- name: Regex ThunderNanoServicesRDK
if: contains(github.event.pull_request.body, '[Options:')
id: plugins
uses: AsasInnab/regex-action@v1
with:
regex_pattern: '(?<=\[Options:).*(?=\])'
regex_flags: 'gim'
search_string: ${{github.event.pull_request.body}}

# ----- Build & upload artifacts -----
- name: Build ThunderNanoServicesRDK
run: |
source venv/bin/activate
cmake -G Ninja -S ThunderNanoServicesRDK -B ${{matrix.build_type}}/build/ThunderNanoServicesRDK \
-DCMAKE_CXX_FLAGS="-Wall -Wextra -Wpedantic -Werror" \
-DCMAKE_C_FLAGS="-Wall -Wextra -Wpedantic -Werror" \
-DCMAKE_INSTALL_PREFIX="${{matrix.build_type}}/install/usr" \
-DCMAKE_MODULE_PATH="${PWD}/${{matrix.build_type}}/install/usr/include/WPEFramework/Modules" \
-DPLUGIN_DEVICEIDENTIFICATION=OFF \
-DPLUGIN_DEVICEINFO=ON \
-DPLUGIN_LOCATIONSYNC=ON \
-DPLUGIN_MESSAGECONTROL=ON \
-DPLUGIN_MESSENGER=ON \
-DPLUGIN_MONITOR=ON \
-DPLUGIN_OPENCDMI=ON \
-DPLUGIN_PERFORMANCEMETRICS=ON \
${{steps.plugins.outputs.first_match}}
cmake --build ${{matrix.build_type}}/build/ThunderNanoServicesRDK --target install

- name: Tar files
run: tar -czvf ${{matrix.build_type}}.tar.gz ${{matrix.build_type}}

- name: Upload
uses: actions/upload-artifact@v4
with:
name: ThunderNanoServicesRDK-${{matrix.build_type}}-artifact
path: ${{matrix.build_type}}.tar.gz
3 changes: 3 additions & 0 deletions MessageControl/MessageControl.h
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,9 @@ namespace Plugin {
END_INTERFACE_MAP

public:
using PluginHost::JSONRPC::Attach;
using PluginHost::JSONRPC::Detach;

const string Initialize(PluginHost::IShell* service) override;
void Deinitialize(PluginHost::IShell* service) override;
string Information() const override;
Expand Down
8 changes: 4 additions & 4 deletions MessageControl/MessageOutput.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ namespace Publishers {
~ConsoleOutput() override = default;

public:
void Message(const Core::Messaging::MessageInfo& metadata, const string& text);
void Message(const Core::Messaging::MessageInfo& metadata, const string& text) override;

private:
Text _convertor;
Expand All @@ -81,7 +81,7 @@ namespace Publishers {
~SyslogOutput() override = default;

public:
void Message(const Core::Messaging::MessageInfo& metadata, const string& text);
void Message(const Core::Messaging::MessageInfo& metadata, const string& text) override;

private:
Text _convertor;
Expand Down Expand Up @@ -111,7 +111,7 @@ namespace Publishers {
}

public:
void Message(const Core::Messaging::MessageInfo& metadata, const string& text);
void Message(const Core::Messaging::MessageInfo& metadata, const string& text) override;

private:
Text _convertor;
Expand Down Expand Up @@ -377,7 +377,7 @@ namespace Publishers {
}

void UpdateChannel();
void Message(const Core::Messaging::MessageInfo& metadata, const string& text);
void Message(const Core::Messaging::MessageInfo& metadata, const string& text) override;

private:
Text _convertor;
Expand Down
5 changes: 2 additions & 3 deletions Monitor/Monitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,6 @@ namespace Plugin {
class MonitorObject {
public:
MonitorObject() = delete;
MonitorObject& operator=(const MonitorObject&) = delete;

enum evaluation {
SUCCESFULL = 0x00,
Expand Down Expand Up @@ -490,8 +489,8 @@ namespace Plugin {
}
}

MonitorObject(MonitorObject&) = delete;
MonitorObject& operator=(MonitorObject&) = delete;
MonitorObject(const MonitorObject&) = delete;
MonitorObject& operator=(const MonitorObject&) = delete;
MonitorObject(MonitorObject&&) = delete;
MonitorObject& operator=(MonitorObject&&) = delete;

Expand Down
4 changes: 3 additions & 1 deletion OpenCDMi/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ add_library(${MODULE_NAME} SHARED
FrameworkRPC.cpp
Module.cpp)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-gnu-unique")
if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-gnu-unique")
endif()

set_target_properties(${MODULE_NAME} PROPERTIES
CXX_STANDARD 11
Expand Down
20 changes: 10 additions & 10 deletions OpenCDMi/FrameworkRPC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -375,9 +375,9 @@ namespace Plugin {

private:
CDMi::IMediaKeySession* _mediaKeys;
CDMi::IMediaKeySessionExt* _mediaKeysExt;
uint8_t* _sessionKey;
uint32_t _sessionKeyLength;
VARIABLE_IS_NOT_USED CDMi::IMediaKeySessionExt* _mediaKeysExt;
VARIABLE_IS_NOT_USED uint8_t* _sessionKey;
VARIABLE_IS_NOT_USED uint32_t _sessionKeyLength;
};

// IMediaKeys defines the MediaKeys interface.
Expand Down Expand Up @@ -748,7 +748,7 @@ POP_WARNING()
private:
AccessorOCDM& _parent;
mutable Core::CriticalSection _adminLock;
mutable uint32_t _refCount;
VARIABLE_IS_NOT_USED mutable uint32_t _refCount;
std::string _keySystem;
std::string _sessionId;
CDMi::IMediaKeySession* _mediaKeySession;
Expand Down Expand Up @@ -954,7 +954,7 @@ POP_WARNING()
const std::string& keySystem,
unsigned char Ids[],
uint16_t idsLength,
uint32_t& count)
uint32_t& count) override
{
CDMi::IMediaKeysExt* systemExt = dynamic_cast<CDMi::IMediaKeysExt*>(_parent.KeySystem(keySystem));
if (systemExt) {
Expand Down Expand Up @@ -982,7 +982,7 @@ POP_WARNING()
const unsigned char sessionID[],
uint16_t sessionIDLength,
const unsigned char serverResponse[],
uint16_t serverResponseLength)
uint16_t serverResponseLength) override
{
CDMi::IMediaKeysExt* systemExt = dynamic_cast<CDMi::IMediaKeysExt*>(_parent.KeySystem(keySystem));
if (systemExt) {
Expand Down Expand Up @@ -1418,21 +1418,21 @@ POP_WARNING()
}
}

virtual uint32_t Reset()
virtual uint32_t Reset() override
{
return (Core::ERROR_NONE);
}
virtual RPC::IStringIterator* Systems() const
virtual RPC::IStringIterator* Systems() const override
{
return (Core::ServiceType<RPC::StringIterator>::Create<RPC::IStringIterator>(_keySystems));
}
virtual RPC::IStringIterator* Designators(const string& keySystem) const
virtual RPC::IStringIterator* Designators(const string& keySystem) const override
{
std::list<string> designators;
LoadDesignators(keySystem, designators);
return (Core::ServiceType<RPC::StringIterator>::Create<RPC::IStringIterator>(designators));
}
virtual RPC::IStringIterator* Sessions(const string& keySystem) const
virtual RPC::IStringIterator* Sessions(const string& keySystem) const override
{
std::list<string> sessions;
LoadSessions(keySystem, sessions);
Expand Down
2 changes: 1 addition & 1 deletion OpenCDMi/Protobuf.h
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@ namespace Protobuf {
}
return (result);
}
WireType Type() const {
WireType Type() const override {
return (WireType::LENGTH_DELIMITED);
}

Expand Down
6 changes: 3 additions & 3 deletions PerformanceMetrics/PerformanceMetrics.h
Original file line number Diff line number Diff line change
Expand Up @@ -664,17 +664,17 @@ POP_WARNING()
// If there is an error, return a string describing the issue why the initialisation failed.
// The Service object is *NOT* reference counted, lifetime ends if the plugin is deactivated.
// The lifetime of the Service object is guaranteed till the deinitialize method is called.
virtual const string Initialize(PluginHost::IShell* service);
virtual const string Initialize(PluginHost::IShell* service) override;

// The plugin is unloaded from Thunder. This is call allows the module to notify clients
// or to persist information if needed. After this call the plugin will unlink from the service path
// and be deactivated. The Service object is the same as passed in during the Initialize.
// After theis call, the lifetime of the Service object ends.
virtual void Deinitialize(PluginHost::IShell* service);
virtual void Deinitialize(PluginHost::IShell* service) override;

// Returns an interface to a JSON struct that can be used to return specific metadata information with respect
// to this plugin. This Metadata can be used by the MetData plugin to publish this information to the ouside world.
virtual string Information() const;
virtual string Information() const override;

private:

Expand Down
5 changes: 2 additions & 3 deletions PerformanceMetrics/TraceOutput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class MetricsTraceOuput : public PerformanceMetrics::IStateMetricsLogger {
}
}

void Activated()
void Activated() override
{
if( _memory != nullptr ) {
TRACE(Trace::Metric, (_T("Plugin %s activated, RSS: %llu"), _callsign.c_str(), _memory->Resident()));
Expand Down Expand Up @@ -158,7 +158,7 @@ class MetricsTraceOuputBrowser : public PerformanceMetrics::IBrowserMetricsLogge
}
}

void Activated()
void Activated() override
{
}

Expand Down Expand Up @@ -226,7 +226,6 @@ std::unique_ptr<PerformanceMetrics::IBrowserMetricsLogger> PerformanceMetrics::L

template std::unique_ptr<PerformanceMetrics::IBasicMetricsLogger> PerformanceMetrics::LoggerFactory<PerformanceMetrics::IBasicMetricsLogger>();
template std::unique_ptr<PerformanceMetrics::IStateMetricsLogger> PerformanceMetrics::LoggerFactory<PerformanceMetrics::IStateMetricsLogger>();
template std::unique_ptr<PerformanceMetrics::IBrowserMetricsLogger> PerformanceMetrics::LoggerFactory<PerformanceMetrics::IBrowserMetricsLogger>();

}
}