129 lines
4.5 KiB
Ruby
129 lines
4.5 KiB
Ruby
class Mavsdk < Formula
|
|
include Language::Python::Virtualenv
|
|
|
|
desc "API and library for MAVLink compatible systems written in C++17"
|
|
homepage "https://mavsdk.mavlink.io"
|
|
url "https://github.com/mavlink/MAVSDK.git",
|
|
tag: "v1.0.8",
|
|
revision: "a6836be251e216f9967183a7551cc6ccb2a60382"
|
|
license "BSD-3-Clause"
|
|
|
|
livecheck do
|
|
url :stable
|
|
regex(/^v?(\d+(?:\.\d+)+)$/i)
|
|
end
|
|
|
|
bottle do
|
|
sha256 cellar: :any, arm64_monterey: "9fb33ff6e74279012e5d391ec47ed52aeca5588a013cc9f65896cc29aaa5b82c"
|
|
sha256 cellar: :any, arm64_big_sur: "2721c4980c1e09a83ca8ca6f1d0e5ee6cb8c95d07269f3933b73609122ec2761"
|
|
sha256 cellar: :any, monterey: "4a82d217b82d0a624a359b8be229786543d62c1b80e2c3f8bafae66298a34798"
|
|
sha256 cellar: :any, big_sur: "b5b21636214f558111908abc90e869d362cc176659b83d1bcdaf58c05fc8c80a"
|
|
sha256 cellar: :any, catalina: "9a718db425f20936967ce3c349250a0ca512b92c219a3cf0f3a20f10248de918"
|
|
sha256 cellar: :any_skip_relocation, x86_64_linux: "9f22087ba88278c10f232358634b1463946a379178dc901271c9495e31746821"
|
|
end
|
|
|
|
depends_on "cmake" => :build
|
|
depends_on "python@3.9" => :build
|
|
depends_on "six" => :build
|
|
depends_on "abseil"
|
|
depends_on "c-ares"
|
|
depends_on "curl"
|
|
depends_on "grpc"
|
|
depends_on "jsoncpp"
|
|
depends_on "openssl@1.1"
|
|
depends_on "protobuf"
|
|
depends_on "re2"
|
|
depends_on "tinyxml2"
|
|
|
|
uses_from_macos "zlib"
|
|
|
|
on_macos do
|
|
depends_on "llvm" if DevelopmentTools.clang_build_version <= 1100
|
|
end
|
|
|
|
on_linux do
|
|
depends_on "gcc"
|
|
end
|
|
|
|
fails_with :clang do
|
|
build 1100
|
|
cause <<-EOS
|
|
Undefined symbols for architecture x86_64:
|
|
"std::__1::__fs::filesystem::__status(std::__1::__fs::filesystem::path const&, std::__1::error_code*)"
|
|
EOS
|
|
end
|
|
|
|
fails_with gcc: "5"
|
|
|
|
# To update the resources, use homebrew-pypi-poet on the PyPI package `protoc-gen-mavsdk`.
|
|
# These resources are needed to install protoc-gen-mavsdk, which we use to regenerate protobuf headers.
|
|
# This is needed when brewed protobuf is newer than upstream's vendored protobuf.
|
|
resource "Jinja2" do
|
|
url "https://files.pythonhosted.org/packages/91/a5/429efc6246119e1e3fbf562c00187d04e83e54619249eb732bb423efa6c6/Jinja2-3.0.3.tar.gz"
|
|
sha256 "611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"
|
|
end
|
|
|
|
resource "MarkupSafe" do
|
|
url "https://files.pythonhosted.org/packages/bf/10/ff66fea6d1788c458663a84d88787bae15d45daa16f6b3ef33322a51fc7e/MarkupSafe-2.0.1.tar.gz"
|
|
sha256 "594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"
|
|
end
|
|
|
|
def install
|
|
# Fix version being reported as `v#{version}-dirty`
|
|
inreplace "CMakeLists.txt", "OUTPUT_VARIABLE VERSION_STR", "OUTPUT_VARIABLE VERSION_STR_IGNORED"
|
|
|
|
ENV.llvm_clang if OS.mac? && (DevelopmentTools.clang_build_version <= 1100)
|
|
|
|
# Install protoc-gen-mavsdk deps
|
|
venv_dir = buildpath/"bootstrap"
|
|
venv = virtualenv_create(venv_dir, "python3")
|
|
venv.pip_install resources
|
|
|
|
# Install protoc-gen-mavsdk
|
|
venv.pip_install "proto/pb_plugins"
|
|
|
|
# Run generator script in an emulated virtual env.
|
|
with_env(
|
|
VIRTUAL_ENV: venv_dir,
|
|
PATH: "#{venv_dir}/bin:#{ENV["PATH"]}",
|
|
) do
|
|
system "tools/generate_from_protos.sh"
|
|
end
|
|
|
|
# Source build adapted from
|
|
# https://mavsdk.mavlink.io/develop/en/contributing/build.html
|
|
system "cmake", *std_cmake_args,
|
|
"-Bbuild/default",
|
|
"-DSUPERBUILD=OFF",
|
|
"-DBUILD_SHARED_LIBS=ON",
|
|
"-DBUILD_MAVSDK_SERVER=ON",
|
|
"-DBUILD_TESTS=OFF",
|
|
"-DVERSION_STR=v#{version}-#{tap.user}",
|
|
"-DCMAKE_INSTALL_RPATH=#{rpath}",
|
|
"-H."
|
|
system "cmake", "--build", "build/default"
|
|
system "cmake", "--build", "build/default", "--target", "install"
|
|
end
|
|
|
|
test do
|
|
# Force use of Clang on Mojave
|
|
ENV.clang if OS.mac?
|
|
|
|
(testpath/"test.cpp").write <<~EOS
|
|
#include <iostream>
|
|
#include <mavsdk/mavsdk.h>
|
|
int main() {
|
|
mavsdk::Mavsdk mavsdk;
|
|
std::cout << mavsdk.version() << std::endl;
|
|
return 0;
|
|
}
|
|
EOS
|
|
system ENV.cxx, "-std=c++17", testpath/"test.cpp", "-o", "test",
|
|
"-I#{include}", "-L#{lib}", "-lmavsdk"
|
|
assert_match "v#{version}-#{tap.user}", shell_output("./test").chomp
|
|
|
|
assert_equal "Usage: #{bin}/mavsdk_server [Options] [Connection URL]",
|
|
shell_output("#{bin}/mavsdk_server --help").split("\n").first
|
|
end
|
|
end
|