From eb9f769894ff4d2b2d76e21e0ac27508b2455960 Mon Sep 17 00:00:00 2001 From: Amneesh Singh Date: Tue, 20 Dec 2022 09:48:58 +0530 Subject: [PATCH] init catkin workspace Signed-off-by: Amneesh Singh --- .gitattributes | 1 + CMakeLists.txt | 69 ++++++++++++++++++++++++++++++++++++++++++ flake.lock | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 35 ++++++++++++++++++++++ 4 files changed, 186 insertions(+) create mode 100644 .gitattributes create mode 100644 CMakeLists.txt create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8c5bae0 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +CMakeLists.txt linguist-generated=true diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..cd58121 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,69 @@ +# toplevel CMakeLists.txt for a catkin workspace +# catkin/cmake/toplevel.cmake + +cmake_minimum_required(VERSION 3.0.2) + +project(Project) + +set(CATKIN_TOPLEVEL TRUE) + +# search for catkin within the workspace +set(_cmd "catkin_find_pkg" "catkin" "${CMAKE_SOURCE_DIR}") +execute_process(COMMAND ${_cmd} + RESULT_VARIABLE _res + OUTPUT_VARIABLE _out + ERROR_VARIABLE _err + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_STRIP_TRAILING_WHITESPACE +) +if(NOT _res EQUAL 0 AND NOT _res EQUAL 2) + # searching fot catkin resulted in an error + string(REPLACE ";" " " _cmd_str "${_cmd}") + message(FATAL_ERROR "Search for 'catkin' in workspace failed (${_cmd_str}): ${_err}") +endif() + +# include catkin from workspace or via find_package() +if(_res EQUAL 0) + set(catkin_EXTRAS_DIR "${CMAKE_SOURCE_DIR}/${_out}/cmake") + # include all.cmake without add_subdirectory to let it operate in same scope + include(${catkin_EXTRAS_DIR}/all.cmake NO_POLICY_SCOPE) + add_subdirectory("${_out}") + +else() + # use either CMAKE_PREFIX_PATH explicitly passed to CMake as a command line argument + # or CMAKE_PREFIX_PATH from the environment + if(NOT DEFINED CMAKE_PREFIX_PATH) + if(NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "") + if(NOT WIN32) + string(REPLACE ":" ";" CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) + else() + set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) + endif() + endif() + endif() + + # list of catkin workspaces + set(catkin_search_path "") + foreach(path ${CMAKE_PREFIX_PATH}) + if(EXISTS "${path}/.catkin") + list(FIND catkin_search_path ${path} _index) + if(_index EQUAL -1) + list(APPEND catkin_search_path ${path}) + endif() + endif() + endforeach() + + # search for catkin in all workspaces + set(CATKIN_TOPLEVEL_FIND_PACKAGE TRUE) + find_package(catkin QUIET + NO_POLICY_SCOPE + PATHS ${catkin_search_path} + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + unset(CATKIN_TOPLEVEL_FIND_PACKAGE) + + if(NOT catkin_FOUND) + message(FATAL_ERROR "find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.") + endif() +endif() + +catkin_workspace() diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..9227ea5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,81 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1671323474, + "narHash": "sha256-JnifWGgKWWlsNv7lnREMJsUOGnN9X1Fu1UIVcfbKEK0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e398530d85d637bf1fa75768b2df2e76484dea3c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs", + "ros": "ros", + "utils": "utils" + } + }, + "ros": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1668111746, + "narHash": "sha256-+Y7jRTnhOY/1Jn68zDc1iGVLQP7CZ2e0NJw3zBmnolc=", + "owner": "lopsided98", + "repo": "nix-ros-overlay", + "rev": "6fa03dc558b92cf7f3a2d426c9335e014e3fd10d", + "type": "github" + }, + "original": { + "owner": "lopsided98", + "repo": "nix-ros-overlay", + "rev": "6fa03dc558b92cf7f3a2d426c9335e014e3fd10d", + "type": "github" + } + }, + "utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..31ce1ac --- /dev/null +++ b/flake.nix @@ -0,0 +1,35 @@ +{ + description = "ros1 overlay"; + inputs = + rec { + ros.url = github:lopsided98/nix-ros-overlay/6fa03dc558b92cf7f3a2d426c9335e014e3fd10d; + ros.inputs.nixpkgs.follows = "nixpkgs"; + nixpkgs.url = github:nixos/nixpkgs/release-22.05; + utils.url = github:numtide/flake-utils; + }; + + outputs = { self, utils, ros, nixpkgs }: + utils.lib.eachDefaultSystem + (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ ros.overlays.default ]; + }; + in + { + devShells = { + default = pkgs.mkShell { + buildInputs = + (with pkgs.python3Packages; [ + python-lsp-server + pyls-flake8 + ]) ++ [ pkgs.rosPackages.noetic.desktop-full ]; + shellHook = '' + [[ -d ./devel ]] && source ./devel/setup.bash + export GAZEBO_MODEL_PATH=$PWD/src/mr_robot_gazebo/models + ''; + }; + }; + }); +}