From 3a3def5ce59f1fc24be676b29eaf5a87e14f914f Mon Sep 17 00:00:00 2001 From: Ian Chen Date: Wed, 18 Oct 2023 12:54:41 -0700 Subject: [PATCH] Bumps in ionic : ci_matching_branch/bump_ionic_gz-sim9 (#2470) Signed-off-by: Ian Chen Signed-off-by: Addisu Z. Taddese Co-authored-by: Addisu Z. Taddese --- Aliases/gz-sim9 | 1 - Formula/gz-sim9.rb | 137 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) delete mode 120000 Aliases/gz-sim9 create mode 100644 Formula/gz-sim9.rb diff --git a/Aliases/gz-sim9 b/Aliases/gz-sim9 deleted file mode 120000 index 35f69d73d..000000000 --- a/Aliases/gz-sim9 +++ /dev/null @@ -1 +0,0 @@ -../Formula/gz-sim8.rb \ No newline at end of file diff --git a/Formula/gz-sim9.rb b/Formula/gz-sim9.rb new file mode 100644 index 000000000..73740be08 --- /dev/null +++ b/Formula/gz-sim9.rb @@ -0,0 +1,137 @@ +class GzSim9 < Formula + desc "Gazebo Sim robot simulator" + homepage "https://github.com/gazebosim/gz-sim" + url "https://github.com/gazebosim/gz-sim.git", branch: "main" + version "8.999.999-0-20231016" + license "Apache-2.0" + + head "https://github.com/gazebosim/gz-sim.git", branch: "main" + + depends_on "cmake" => :build + depends_on "pybind11" => :build + depends_on "ffmpeg" + depends_on "gflags" + depends_on "google-benchmark" + depends_on "gz-cmake4" + depends_on "gz-common6" + depends_on "gz-fuel-tools10" + depends_on "gz-gui9" + depends_on "gz-math8" + depends_on "gz-msgs11" + depends_on "gz-physics8" + depends_on "gz-plugin3" + depends_on "gz-rendering9" + depends_on "gz-sensors9" + depends_on "gz-tools2" + depends_on "gz-transport14" + depends_on "gz-utils3" + depends_on macos: :mojave # c++17 + depends_on "pkg-config" + depends_on "protobuf" + depends_on "ruby" + depends_on "sdformat15" + + def install + rpaths = [ + rpath, + rpath(source: lib/"gz-sim-8/plugins", target: lib), + rpath(source: lib/"gz-sim-8/plugins/gui", target: lib), + rpath(source: lib/"gz-sim-8/plugins/gui/GzSim", target: lib), + ] + cmake_args = std_cmake_args + cmake_args << "-DBUILD_TESTING=OFF" + cmake_args << "-DCMAKE_INSTALL_RPATH=#{rpaths.join(";")}" + + mkdir "build" do + system "cmake", "..", *cmake_args + system "make", "install" + end + end + + test do + # test some plugins in subfolders + plugin_info = lambda { |p| + # Use gz-plugin --info command to check plugin linking + cmd = Formula["gz-plugin3"].opt_libexec/"gz/plugin3/gz-plugin" + args = ["--info", "--plugin"] << p + # print command and check return code + system cmd, *args + # check that library was loaded properly + _, stderr = system_command(cmd, args: args) + error_string = "Error while loading the library" + assert stderr.exclude?(error_string), error_string + } + %w[altimeter log physics sensors].each do |system| + plugin_info.call lib/"gz-sim-8/plugins/libgz-sim-#{system}-system.dylib" + end + ["libAlignTool", "libEntityContextMenuPlugin", "libGzSceneManager", "GzSim/libEntityContextMenu"].each do |p| + plugin_info.call lib/"gz-sim-8/plugins/gui/#{p}.dylib" + end + # test gz sim CLI tool + ENV["GZ_CONFIG_PATH"] = "#{opt_share}/gz" + system Formula["gz-tools2"].opt_bin/"gz", + "sim", "-s", "--iterations", "5", "-r", "-v", "4" + # build against API + (testpath/"test.cpp").write <<-EOS + #include + #include + #include + #include + #include + + using namespace gz; + using namespace sim; + + ////////////////////////////////////////////////// + int main(int argc, char **argv) + { + // Warm start. Initial allocation of resources can throw off calculations. + { + // Create the entity component manager + EntityComponentManager mgr; + + // Create the matching entities + for (int i = 0; i < 100; ++i) + { + Entity entity = mgr.CreateEntity(); + mgr.CreateComponent(entity, components::World()); + mgr.CreateComponent(entity, components::Name("world_name")); + } + + mgr.Each( + [&](const Entity &, const components::World *, + const components::Name *)->bool {return true;}); + } + + return 0; + } + EOS + (testpath/"CMakeLists.txt").write <<-EOS + cmake_minimum_required(VERSION 3.5 FATAL_ERROR) + find_package(gz-sim9 QUIET REQUIRED) + add_executable(test_cmake test.cpp) + target_link_libraries(test_cmake gz-sim9::core) + EOS + # ENV.append_path "PKG_CONFIG_PATH", Formula["qt@5"].opt_lib/"pkgconfig" + # system "pkg-config", "--cflags", "gz-sim9" + # cflags = `pkg-config --cflags gz-sim9`.split + # ldflags = `pkg-config --libs gz-sim9`.split + # system ENV.cc, "test.cpp", + # *cflags, + # *ldflags, + # "-lc++", + # "-o", "test" + # system "./test" + # test building with cmake + ENV.append_path "CMAKE_PREFIX_PATH", Formula["ffmpeg@4"].opt_prefix + ENV.append_path "CMAKE_PREFIX_PATH", Formula["qt@5"].opt_prefix + mkdir "build" do + system "cmake", ".." + system "make" + system "./test_cmake" + end + # check for Xcode frameworks in bottle + cmd_not_grep_xcode = "! grep -rnI 'Applications[/]Xcode' #{prefix}" + system cmd_not_grep_xcode + end +end