From 908759d0ef55d26279c9b68599cc69ca593ef03f Mon Sep 17 00:00:00 2001 From: Damon Kohler Date: Mon, 21 Oct 2013 14:04:53 +0200 Subject: [PATCH 01/12] Upgrades Gradle and Android build tools versions. --- src/rosjava_build_tools/create_android_project.py | 4 ++-- .../templates/android_package/build.gradle.in | 2 +- .../templates/rosjava_package/build.gradle.in | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rosjava_build_tools/create_android_project.py b/src/rosjava_build_tools/create_android_project.py index de1f1a1..60ad110 100644 --- a/src/rosjava_build_tools/create_android_project.py +++ b/src/rosjava_build_tools/create_android_project.py @@ -34,8 +34,8 @@ def parse_arguments(): help='The name for the package') parser.add_argument('-s', '--sdk-version', action='store', - default='17', - help='Android sdk version [17]') + default='18.1.1', + help='Android sdk version [18.1.1]') parser.add_argument('-p', '--android-package-name', action='store', default='com.github.rosjava.android.pkg_name', diff --git a/src/rosjava_build_tools/templates/android_package/build.gradle.in b/src/rosjava_build_tools/templates/android_package/build.gradle.in index b111f43..da580e5 100644 --- a/src/rosjava_build_tools/templates/android_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/android_package/build.gradle.in @@ -15,7 +15,7 @@ */ task wrapper(type: Wrapper) { - gradleVersion = '1.7' + gradleVersion = '1.8' } buildscript { diff --git a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in index d16e60d..d94ac2a 100644 --- a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in @@ -15,7 +15,7 @@ */ task wrapper(type: Wrapper) { - gradleVersion = '1.7' + gradleVersion = '1.8' } buildscript { @@ -40,7 +40,7 @@ apply plugin: 'catkin' allprojects { - /* + /* A github url provides a good standard unique name for your project Example below, but you may wish to switch to your own unique url. */ @@ -49,9 +49,9 @@ allprojects { } subprojects { - /* + /* See https://github.com/rosjava/rosjava_bootstrap (look for gradle_plugins) - to see what is going on under the hood. + to see what is going on under the hood. */ apply plugin: 'ros-java' } From 1916be0f152bf70c494435d79b2d0632cdc71c1d Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Wed, 23 Oct 2013 01:41:43 +0900 Subject: [PATCH 02/12] reintroduce the license. --- CMakeLists.txt | 5 +++++ LICENSE | 15 +++++++++++++++ src/rosjava_build_tools/__init__.py | 4 ---- src/rosjava_build_tools/console.py | 4 ---- src/rosjava_build_tools/create_android_project.py | 4 ---- src/rosjava_build_tools/create_package.py | 4 ---- src/rosjava_build_tools/create_rosjava_project.py | 4 ---- src/rosjava_build_tools/release.py | 6 +----- src/rosjava_build_tools/utils.py | 4 ---- 9 files changed, 21 insertions(+), 29 deletions(-) create mode 100644 LICENSE diff --git a/CMakeLists.txt b/CMakeLists.txt index 876004b..d980370 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,3 +37,8 @@ install( DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} ) +install( + FILES LICENSE + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + ) + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..34f8826 --- /dev/null +++ b/LICENSE @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2013 Yujin Robot. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ diff --git a/src/rosjava_build_tools/__init__.py b/src/rosjava_build_tools/__init__.py index cabbaa2..1b91276 100644 --- a/src/rosjava_build_tools/__init__.py +++ b/src/rosjava_build_tools/__init__.py @@ -1,8 +1,4 @@ #!/usr/bin/env python -# -# License: Apache 2.0 -# https://raw.github.com/rosjava/rosjava_build_tools/license/LICENSE -# ############################################################################## # Imports diff --git a/src/rosjava_build_tools/console.py b/src/rosjava_build_tools/console.py index cd6b93c..7589334 100644 --- a/src/rosjava_build_tools/console.py +++ b/src/rosjava_build_tools/console.py @@ -1,8 +1,4 @@ #!/usr/bin/env python -# -# License: Apache 2.0 -# https://raw.github.com/rosjava/rosjava_build_tools/license/LICENSE -# ############################################################################## # Imports diff --git a/src/rosjava_build_tools/create_android_project.py b/src/rosjava_build_tools/create_android_project.py index 60ad110..1f273f8 100644 --- a/src/rosjava_build_tools/create_android_project.py +++ b/src/rosjava_build_tools/create_android_project.py @@ -1,8 +1,4 @@ #!/usr/bin/env python -# -# License: Apache 2.0 -# https://raw.github.com/rosjava/rosjava_build_tools/license/LICENSE -# ############################################################################## # Imports diff --git a/src/rosjava_build_tools/create_package.py b/src/rosjava_build_tools/create_package.py index a93a34a..42cea2c 100644 --- a/src/rosjava_build_tools/create_package.py +++ b/src/rosjava_build_tools/create_package.py @@ -1,8 +1,4 @@ #!/usr/bin/env python -# -# License: Apache 2.0 -# https://raw.github.com/rosjava/rosjava_build_tools/license/LICENSE -# ############################################################################## # Imports diff --git a/src/rosjava_build_tools/create_rosjava_project.py b/src/rosjava_build_tools/create_rosjava_project.py index 0a0abd3..3acd167 100644 --- a/src/rosjava_build_tools/create_rosjava_project.py +++ b/src/rosjava_build_tools/create_rosjava_project.py @@ -1,8 +1,4 @@ #!/usr/bin/env python -# -# License: Apache 2.0 -# https://raw.github.com/rosjava/rosjava_build_tools/license/LICENSE -# ############################################################################## # Imports diff --git a/src/rosjava_build_tools/release.py b/src/rosjava_build_tools/release.py index 7f6bca3..f0778dd 100644 --- a/src/rosjava_build_tools/release.py +++ b/src/rosjava_build_tools/release.py @@ -1,8 +1,4 @@ #!/usr/bin/env python -# -# License: Apache 2.0 -# https://raw.github.com/rosjava/rosjava_build_tools/license/LICENSE -# ############################################################################## # Imports @@ -34,4 +30,4 @@ def scrape_for_release_message_packages(track): version = value['version'].split('/')[-1].split('-')[0] pkg = {'name': name, 'version': version} packages.append(pkg) - return packages \ No newline at end of file + return packages diff --git a/src/rosjava_build_tools/utils.py b/src/rosjava_build_tools/utils.py index 410621f..92a35ff 100644 --- a/src/rosjava_build_tools/utils.py +++ b/src/rosjava_build_tools/utils.py @@ -1,8 +1,4 @@ #!/usr/bin/env python -# -# License: Apache 2.0 -# https://raw.github.com/rosjava/rosjava_build_tools/license/LICENSE -# ############################################################################## # Imports From ec06c2d7c48bff2cb78fdbee9238c686588c11cf Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Sat, 26 Oct 2013 12:37:06 +0900 Subject: [PATCH 03/12] embedded gradle 1.7->1.8 --- .../gradle/gradle/wrapper/gradle-wrapper.jar | Bin 46742 -> 50518 bytes .../gradle/wrapper/gradle-wrapper.properties | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rosjava_build_tools/gradle/gradle/wrapper/gradle-wrapper.jar b/src/rosjava_build_tools/gradle/gradle/wrapper/gradle-wrapper.jar index faa569a9a0eedc9ff37450fed24a7efd77a86729..b979729db0ad460288cfe16f07072da7b1305e93 100644 GIT binary patch delta 33605 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 delta 29807 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 E0OLwGfdBvi diff --git a/src/rosjava_build_tools/gradle/gradle/wrapper/gradle-wrapper.properties b/src/rosjava_build_tools/gradle/gradle/wrapper/gradle-wrapper.properties index a4a11f7..5167804 100644 --- a/src/rosjava_build_tools/gradle/gradle/wrapper/gradle-wrapper.properties +++ b/src/rosjava_build_tools/gradle/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Sep 16 09:49:12 KST 2013 +#Fri Oct 18 13:01:06 CEST 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.7-bin.zip +distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip From b14ede3f280b8d9b2c6503856816794a21e4b336 Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Sat, 26 Oct 2013 12:35:49 +0900 Subject: [PATCH 04/12] template files for official maven style open ranged dependencies. --- .../templates/android_package/build.gradle.in | 2 +- .../templates/android_project/build.gradle.in | 4 ++-- .../templates/rosjava_package/build.gradle.in | 2 +- .../templates/rosjava_project/build.gradle.in | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rosjava_build_tools/templates/android_package/build.gradle.in b/src/rosjava_build_tools/templates/android_package/build.gradle.in index da580e5..24e8bb7 100644 --- a/src/rosjava_build_tools/templates/android_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/android_package/build.gradle.in @@ -32,7 +32,7 @@ buildscript { } } dependencies { - classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '0.1.+' + classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.1,)' } } diff --git a/src/rosjava_build_tools/templates/android_project/build.gradle.in b/src/rosjava_build_tools/templates/android_project/build.gradle.in index fa93846..2a72f22 100644 --- a/src/rosjava_build_tools/templates/android_project/build.gradle.in +++ b/src/rosjava_build_tools/templates/android_project/build.gradle.in @@ -26,8 +26,8 @@ /* dependencies { compile project(':local_android_library_dependency') - compile 'org.ros.android_core:android_gingerbread_mr1:0.1.+' - compile 'com.github.ros_java.android_extras:gingerbread:0.1.+' + compile 'org.ros.android_core:android_gingerbread_mr1:[0.1,)' + compile 'com.github.ros_java.android_extras:gingerbread:[0.1,)' } */ diff --git a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in index d94ac2a..a4daa44 100644 --- a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in @@ -32,7 +32,7 @@ buildscript { } } dependencies { - classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '0.1.+' + classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.1,)' } } diff --git a/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in index 4949b4e..6fe92d9 100644 --- a/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in @@ -26,8 +26,8 @@ /* dependencies { compile project(':local_android_library_dependency') - compile 'org.ros.android_core:android_gingerbread_mr1:0.1.+' - compile 'com.github.ros_java.android_extras:gingerbread:0.1.+' + compile 'org.ros.android_core:android_gingerbread_mr1:[0.1,)' + compile 'com.github.ros_java.android_extras:gingerbread:[0.1,)' } */ From 466deebe4f034c0292d5f985f7fc0f872b9b1b50 Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Sat, 26 Oct 2013 12:47:15 +0900 Subject: [PATCH 05/12] 0.2.0 --- CHANGELOG.rst | 8 +++++++- package.xml | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0c914cc..9719d59 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,8 +2,14 @@ Changelog ^^^^^^^^^ +0.2.0 [2013-10-25] +================== +* official maven style open range dependencies in templates +* gradle 1.7->1.8 +* android build tools 18.1.1 + 0.1.24 [2013-10-04] -====================== +=================== * bugfix for missing catkin_create_rosjava_xxx templates. diff --git a/package.xml b/package.xml index c916124..a0b990f 100644 --- a/package.xml +++ b/package.xml @@ -1,6 +1,6 @@ rosjava_build_tools - 0.1.24 + 0.2.0 Simple tools and catkin modules for rosjava development. From 02db01291d88805bcc622486172f45fffebe4377 Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Thu, 31 Oct 2013 09:33:15 +0900 Subject: [PATCH 06/12] use ROS_MAVEN_REPOSITORY --- env-hooks/15.rosjava.bash.em | 2 ++ env-hooks/15.rosjava.sh.em | 1 + generate_environment_variables.py | 6 ++++++ .../templates/android_package/build.gradle.in | 5 +++-- .../templates/android_project/build.gradle.in | 15 +++++++++------ .../templates/rosjava_package/build.gradle.in | 5 +++-- .../templates/rosjava_project/build.gradle.in | 15 +++++++++------ 7 files changed, 33 insertions(+), 16 deletions(-) diff --git a/env-hooks/15.rosjava.bash.em b/env-hooks/15.rosjava.bash.em index b950c1e..0a8cd58 100644 --- a/env-hooks/15.rosjava.bash.em +++ b/env-hooks/15.rosjava.bash.em @@ -8,3 +8,5 @@ SCRIPT=@(CMAKE_INSTALL_PREFIX)/share/rosjava_build_tools/generate_environment_va export ROS_MAVEN_PATH=`python ${SCRIPT} --maven-path` export ROS_MAVEN_DEPLOYMENT_REPOSITORY=`python ${SCRIPT} --maven-deployment-repository` +export ROS_MAVEN_REPOSITORY=`python ${SCRIPT} --maven-repository` + diff --git a/env-hooks/15.rosjava.sh.em b/env-hooks/15.rosjava.sh.em index 9e91c76..62cc858 100644 --- a/env-hooks/15.rosjava.sh.em +++ b/env-hooks/15.rosjava.sh.em @@ -8,3 +8,4 @@ SCRIPT=@(CMAKE_INSTALL_PREFIX)/share/rosjava_build_tools/generate_environment_va export ROS_MAVEN_PATH=`python ${SCRIPT} --maven-path` export ROS_MAVEN_DEPLOYMENT_REPOSITORY=`python ${SCRIPT} --maven-deployment-repository` +export ROS_MAVEN_REPOSITORY=`python ${SCRIPT} --maven-repository` diff --git a/generate_environment_variables.py b/generate_environment_variables.py index 6fb7f0d..87581df 100755 --- a/generate_environment_variables.py +++ b/generate_environment_variables.py @@ -9,6 +9,7 @@ def parse_arguments(): parser = argparse.ArgumentParser(description='Generate environment variables for the rosjava maven environment.') cmd_group = parser.add_mutually_exclusive_group() cmd_group.add_argument('-d', '--maven-deployment-repository', action='store_true', help='Return the current devel workspace maven directory.') + cmd_group.add_argument('-r', '--maven-repository', action='store_true', help='The url to the external ros maven repository.') cmd_group.add_argument('-m', '--maven-path', action='store_true', help='Generate maven path across all chained workspcaes.') cmd_group.add_argument('-g', '--gradle-user-home', action='store_true', help='Generate the local gradle user home in the current devel workspace (share/gradle).') args = parser.parse_args() @@ -48,6 +49,11 @@ def get_environment_variable(environ, key): if repo in [os.path.join(w, 'share', 'maven') for w in workspaces]: repo = os.path.join(workspaces[0], 'share', 'maven') print repo + elif args.maven_repository: + repo = get_environment_variable(environment_variables, 'ROS_MAVEN_REPOSITORY') + if repo is None: + repo = 'https://github.com/rosjava/rosjava_mvn_repo/raw/master' + print repo elif args.maven_path: new_maven_paths = [os.path.join(path, 'share', 'maven') for path in workspaces] maven_paths = get_environment_variable(environment_variables, 'ROS_MAVEN_PATH') diff --git a/src/rosjava_build_tools/templates/android_package/build.gradle.in b/src/rosjava_build_tools/templates/android_package/build.gradle.in index 24e8bb7..3ca8de4 100644 --- a/src/rosjava_build_tools/templates/android_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/android_package/build.gradle.in @@ -20,6 +20,7 @@ task wrapper(type: Wrapper) { buildscript { def rosMavenPath = "$System.env.ROS_MAVEN_PATH".split(':').collect { 'file://' + it } + def rosMavenRepository = "$System.env.ROS_MAVEN_REPOSITORY" repositories { rosMavenPath.each { p -> maven { @@ -28,11 +29,11 @@ buildscript { } mavenLocal() maven { - url 'https://github.com/rosjava/rosjava_mvn_repo/raw/master' + url rosMavenRepository } } dependencies { - classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.1,)' + classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.2,0.3)' } } diff --git a/src/rosjava_build_tools/templates/android_project/build.gradle.in b/src/rosjava_build_tools/templates/android_project/build.gradle.in index 2a72f22..b465ae2 100644 --- a/src/rosjava_build_tools/templates/android_project/build.gradle.in +++ b/src/rosjava_build_tools/templates/android_project/build.gradle.in @@ -17,17 +17,20 @@ /* Examples of 1) dependencies from another project in this gradle stack. - 2,3) dependency from a maven repository. + 2,3) open ranged dependencies from a maven repository. - It's a good idea to use + on the patch version dependency to - save continually updating these references, but avoid applying - the same principle to api breaking minor changes in the version. + It's a good idea to use open ranges on to + save continually updating these references, but it is recommended + to restrict this to the patch version number (e.g. [0.2,0.3) will + get the latest 0.2.x version) to avoid unknowingly + having api breaking changes usually associated with minor and major + version number changes. */ /* dependencies { compile project(':local_android_library_dependency') - compile 'org.ros.android_core:android_gingerbread_mr1:[0.1,)' - compile 'com.github.ros_java.android_extras:gingerbread:[0.1,)' + compile 'org.ros.android_core:android_10:[0.2,0.3)' + compile 'com.github.ros_java.android_extras:gingerbread:[0.2,0.3)' } */ diff --git a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in index a4daa44..5bafee3 100644 --- a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in @@ -20,6 +20,7 @@ task wrapper(type: Wrapper) { buildscript { def rosMavenPath = "$System.env.ROS_MAVEN_PATH".split(':').collect { 'file://' + it } + def rosMavenRepository = "$System.env.ROS_MAVEN_REPOSITORY" repositories { rosMavenPath.each { p -> maven { @@ -28,11 +29,11 @@ buildscript { } mavenLocal() maven { - url 'https://github.com/rosjava/rosjava_mvn_repo/raw/master' + url rosMavenRepository } } dependencies { - classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.1,)' + classpath group: 'org.ros.rosjava_bootstrap', name: 'gradle_plugins', version: '[0.2,0.3)' } } diff --git a/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in index 6fe92d9..b1a1bea 100644 --- a/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_project/build.gradle.in @@ -17,17 +17,20 @@ /* Examples of 1) dependencies from another project in this gradle stack. - 2,3) dependency from a maven repository. + 2,3) open ranged dependencies from a maven repository. - It's a good idea to use + on the patch version dependency to - save continually updating these references, but avoid applying - the same principle to api breaking minor changes in the version. + It's a good idea to use open ranges on to + save continually updating these references, but it is recommended + to restrict this to the patch version number (e.g. [0.2,0.3) will + get the latest 0.2.x version) to avoid unknowingly + having api breaking changes usually associated with minor and major + version number changes. */ /* dependencies { compile project(':local_android_library_dependency') - compile 'org.ros.android_core:android_gingerbread_mr1:[0.1,)' - compile 'com.github.ros_java.android_extras:gingerbread:[0.1,)' + compile 'org.ros.rosjava_core:rosjava:[0.2,0.3)' + compile 'com.github.rosjava.rosjava_extras:hokuyo:[0.2,0.3)' } */ From a91b20b62f0392a5993c5dc7440c77b2f6935336 Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Thu, 31 Oct 2013 17:03:52 +0900 Subject: [PATCH 07/12] seed ROS_MAVEN_REPOSITORY when necessary. --- cmake/rosjava.cmake.em | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cmake/rosjava.cmake.em b/cmake/rosjava.cmake.em index cc57f94..3d0a155 100644 --- a/cmake/rosjava.cmake.em +++ b/cmake/rosjava.cmake.em @@ -45,11 +45,17 @@ endmacro() # override a user setting. macro(_rosjava_env) set(ROS_MAVEN_DEPLOYMENT_REPOSITORY $ENV{ROS_MAVEN_DEPLOYMENT_REPOSITORY}) + set(ROS_MAVEN_REPOSITORY $ENV{ROS_MAVEN_REPOSITORY}) if(NOT ROS_MAVEN_DEPLOYMENT_REPOSITORY) set(ROSJAVA_ENV "ROS_MAVEN_DEPLOYMENT_REPOSITORY=${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_MAVEN_DESTINATION}") else() set(ROSJAVA_ENV "ROS_MAVEN_DEPLOYMENT_REPOSITORY=${ROS_MAVEN_DEPLOYMENT_REPOSITORY}") endif() + if(NOT ROS_MAVEN_REPOSITORY) + list(APPEND ROSJAVA_ENV "ROS_MAVEN_REPOSITORY=https://github.com/rosjava/rosjava_mvn_repo/raw/master") + else() + set(ROSJAVA_ENV "ROS_MAVEN_REPOSITORY=${ROS_MAVEN_REPOSITORY}") + endif() # The build farm won't let you access /root/.gradle, so redirect it somewhere practical here. if(DEFINED CATKIN_BUILD_BINARY_PACKAGE) list(APPEND ROSJAVA_ENV "GRADLE_USER_HOME=${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_GRADLE_DESTINATION}") From 29c5d35d0d2bfd9681f460de83ea5944d9f268d7 Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Sat, 9 Nov 2013 14:42:55 +0900 Subject: [PATCH 08/12] fix single artifact message generation when there is dependencies. --- .../templates/rosjava_msg_project/build.gradle.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rosjava_build_tools/templates/rosjava_msg_project/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_msg_project/build.gradle.in index 87c9221..d2efc9c 100644 --- a/src/rosjava_build_tools/templates/rosjava_msg_project/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_msg_project/build.gradle.in @@ -15,7 +15,7 @@ */ try { - project.catkin.tree.pkgs['%(project_name)s'].generateMessageArtifact(project) + project.catkin.tree.pkgs['%(project_name)s'].generateUnofficialMessageArtifact(project) } catch (NullPointerException e) { println("Couldn't find %(project_name)s on the ROS_PACKAGE_PATH") } From 1712cd67d3dd10f4f63cfa7eb9bebba8cbb80321 Mon Sep 17 00:00:00 2001 From: Damon Kohler Date: Thu, 13 Feb 2014 14:22:27 +0100 Subject: [PATCH 09/12] Change plugin from ros-java to ros. --- .../templates/rosjava_package/build.gradle.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in index 5bafee3..e92c650 100644 --- a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in @@ -54,7 +54,7 @@ subprojects { See https://github.com/rosjava/rosjava_bootstrap (look for gradle_plugins) to see what is going on under the hood. */ - apply plugin: 'ros-java' + apply plugin: 'ros' } /* From 9b3fa798d9f0627ac9d7b90c34ecc58eb86311bd Mon Sep 17 00:00:00 2001 From: Damon Kohler Date: Wed, 19 Feb 2014 12:06:12 +0100 Subject: [PATCH 10/12] Switch to uploadArchives. --- cmake/rosjava.cmake.em | 2 +- .../templates/rosjava_package/CMakeLists.txt.in | 2 +- .../templates/rosjava_package/build.gradle.in | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/rosjava.cmake.em b/cmake/rosjava.cmake.em index 3d0a155..b7a3c80 100644 --- a/cmake/rosjava.cmake.em +++ b/cmake/rosjava.cmake.em @@ -72,7 +72,7 @@ macro(catkin_rosjava_setup) find_gradle() if( ${ARGC} EQUAL 0 ) # Note : COMMAND is a list of variables (semi-colon separated) - set(gradle_tasks "publishMavenJavaPublicationToMavenRepository") # old targets "install;installApp;uploadArchives" + set(gradle_tasks "uploadArchives") # old targets "install;installApp;uploadArchives" else() set(gradle_tasks ${ARGV}) endif() diff --git a/src/rosjava_build_tools/templates/rosjava_package/CMakeLists.txt.in b/src/rosjava_build_tools/templates/rosjava_package/CMakeLists.txt.in index ab5fa4b..651b6a0 100644 --- a/src/rosjava_build_tools/templates/rosjava_package/CMakeLists.txt.in +++ b/src/rosjava_build_tools/templates/rosjava_package/CMakeLists.txt.in @@ -11,7 +11,7 @@ project(%(repo_name)s) find_package(catkin REQUIRED rosjava_build_tools) # Set the gradle targets you want catkin's make to run by default -catkin_android_setup(publishMavenJavaPublicationToMavenRepository) +catkin_android_setup(uploadArchives) catkin_package() ############################################################################## diff --git a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in index e92c650..d123753 100644 --- a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in @@ -60,7 +60,7 @@ subprojects { /* Some useful tasks: install: deploys jar's to MavenLocal() (i.e. ~/.m2/repository) - publishMavenJavaPublicationToMavenRepository : deploys jar's to devel/share/maven + uploadArchives : deploys jar's to devel/share/maven installApp : assembles java apps in the _subproject_/build directories. */ defaultTasks 'install' From 970fadbb902398e58b31d0a6fe8a355683744c0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Chr=C3=A9tien?= Date: Mon, 14 Apr 2014 14:12:55 +0200 Subject: [PATCH 11/12] Fix Python2/Python3 clash. --- generate_environment_variables.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/generate_environment_variables.py b/generate_environment_variables.py index 87581df..af7a3f9 100755 --- a/generate_environment_variables.py +++ b/generate_environment_variables.py @@ -34,7 +34,7 @@ def get_environment_variable(environ, key): except KeyError: pass if var == '': - var = None + var = None return var if __name__ == '__main__': @@ -48,12 +48,12 @@ def get_environment_variable(environ, key): else: if repo in [os.path.join(w, 'share', 'maven') for w in workspaces]: repo = os.path.join(workspaces[0], 'share', 'maven') - print repo + print(repo) elif args.maven_repository: repo = get_environment_variable(environment_variables, 'ROS_MAVEN_REPOSITORY') if repo is None: repo = 'https://github.com/rosjava/rosjava_mvn_repo/raw/master' - print repo + print(repo) elif args.maven_path: new_maven_paths = [os.path.join(path, 'share', 'maven') for path in workspaces] maven_paths = get_environment_variable(environment_variables, 'ROS_MAVEN_PATH') @@ -64,7 +64,7 @@ def get_environment_variable(environ, key): common_paths = [p for p in maven_paths if p in new_maven_paths] if common_paths: maven_paths = new_maven_paths - print os.pathsep.join(maven_paths) + print(os.pathsep.join(maven_paths)) elif args.gradle_user_home: home = get_environment_variable(environment_variables, 'GRADLE_USER_HOME') if home is None: @@ -72,6 +72,6 @@ def get_environment_variable(environ, key): else: if home in [os.path.join(w, 'share', 'gradle') for w in workspaces]: home = os.path.join(workspaces[0], 'share', 'gradle') - print home + print(home) else: - print "Nothing to see here - please provide one of the valid command switches." + print("Nothing to see here - please provide one of the valid command switches.") From dde3104e93841334db29d8ddef2252304c31ed1d Mon Sep 17 00:00:00 2001 From: Julian Cerruti Date: Mon, 26 Dec 2016 10:35:03 -0300 Subject: [PATCH 12/12] Example to use proper maven-publish target --- .../templates/rosjava_package/build.gradle.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in index f709c4a..307a387 100644 --- a/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in +++ b/src/rosjava_build_tools/templates/rosjava_package/build.gradle.in @@ -58,7 +58,7 @@ subprojects { Some useful tasks: install: deploys jar's to MavenLocal() (i.e. ~/.m2/repository) - uploadArchives : deploys jar's to devel/share/maven + publishMavenJavaPublicationToMavenRepository : deploys jar's to devel/share/maven installApp : assembles java apps in the _subproject_/build directories. Note that these are dependent on the type of project (e.g. installApp is only valid for