Skip to content

Commit

Permalink
Merge pull request #13 from jw3/issue-8
Browse files Browse the repository at this point in the history
Clone during packaging

resolves #8
  • Loading branch information
jw3 committed Oct 11, 2019
2 parents a692596 + 7a4811b commit a8b6a70
Show file tree
Hide file tree
Showing 26 changed files with 161 additions and 223 deletions.
32 changes: 15 additions & 17 deletions build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/usr/bin/env bash

set -ex

readonly sourcedir="${SOURCE_DIR:-${PWD}}"
readonly builddir="${BUILD_DIR:-${sourcedir}/build}"

Expand All @@ -17,6 +19,11 @@ _checkec() { ec=${?}; _checkerr ${ec} "$1"; }
build() {
IFS=' ' read -r -a ext_cmake_args <<< "$CMAKE_ARGS"

if [[ "$2" != "quick" ]]; then
rm -rf "$builddir"
mkdir "$builddir"
fi

if [ ! -d ${builddir} ]; then mkdir -p "$builddir"; fi
cd ${builddir}
cmake ${ext_cmake_args[@]} ${sourcedir}
Expand All @@ -27,15 +34,11 @@ build() {
# export the version generated by cmake
export BUILD_DIR=${builddir}

# export each conan package
conan export-pkg common "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
conan export-pkg OneWire "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
conan export-pkg DS18B20 "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
conan export-pkg TinyGpsPlus "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
conan export-pkg LiquidCrystalI2C "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
conan export-pkg AssetTrackerRK "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
conan export-pkg LIS3DH "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
conan export-pkg NeoGPS "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -f
for pkg in *; do
export PKG_SRC_DIR="${sourcedir}/packages/$pkg"
conan source ${PKG_SRC_DIR} -sf ${builddir}/${pkg}
conan export-pkg ${PKG_SRC_DIR} "$conanuser/$conanchannel" -s compiler.version="$compiler_major_version" -sf ${builddir}/${pkg} -f
done
}


Expand All @@ -48,14 +51,9 @@ publish() {
remote="${CONAN_REMOTE:-particle-bintray}"

_echoerr "conan upload $conanuser/$conanchannel"
conan upload "particle-common/$version@$conanuser/$conanchannel" -c -r "$remote" --all
conan upload "OneWire/$version@$conanuser/$conanchannel" -c -r "$remote" --all
conan upload "DS18B20/$version@$conanuser/$conanchannel" -c -r "$remote" --all
conan upload "TinyGpsPlus/$version@$conanuser/$conanchannel" -c -r "$remote" --all
conan upload "LiquidCrystalI2C/$version@$conanuser/$conanchannel" -c -r "$remote" --all
conan upload "AssetTrackerRK/$version@$conanuser/$conanchannel" -c -r "$remote" --all
conan upload "LIS3DH/$version@$conanuser/$conanchannel" -c -r "$remote" --all
conan upload "NeoGPS/$version@$conanuser/$conanchannel" -c -r "$remote" --all
for pkg in packges/*; do
conan upload "$pkg/$version@$conanuser/$conanchannel" -c -r "$remote" --all
done
}


Expand Down
11 changes: 11 additions & 0 deletions example-project/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,14 @@ This example uses a Conan build to provide CMake dependencies.

### dependencies
- TinyGPS++


### dev

export the conan packages to a snapshot

`CONAN_VERSION=snapshot ./build.sh`

build this project

`./example-project/build.sh photon`
5 changes: 2 additions & 3 deletions example-project/conanfile.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[requires]
particle-common/0.2.2@jw3/stable
TinyGpsPlus/0.2.2@jw3/stable
TMCStepper/0.2.2@jw3/stable
particle-common/snapshot@jw3/stable
TinyGpsPlus/snapshot@jw3/stable

[generators]
cmake
32 changes: 4 additions & 28 deletions packages/AssetTrackerRK/cmake/AssetTrackerRK.cmake
Original file line number Diff line number Diff line change
@@ -1,34 +1,10 @@
include(ExternalProject)
set(AssetTrackerRK_Install assettrackerrk)

set(AssetTrackerRK ${CONAN_ASSETTRACKERRK_ROOT})
include(LIS3DH)

externalproject_add(
${AssetTrackerRK_Install}
GIT_REPOSITORY https://github.com/rickkas7/AssetTrackerRK.git
GIT_TAG b913c5ac4967e83c466d8f079857ef349f8e7f69
PATCH_COMMAND ""
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
UPDATE_COMMAND ""
LOG_DOWNLOAD ON)

externalproject_get_property(${AssetTrackerRK_Install} source_dir)
set(AssetTrackerRK ${source_dir}/src)

set(SOURCE_FILES
${AssetTrackerRK}/TinyGPS++.cpp
${AssetTrackerRK}/AssetTrackerRK.cpp)

foreach (f IN ITEMS ${SOURCE_FILES})
if (NOT EXISTS ${f})
file(WRITE ${f})
endif ()
endforeach ()
file(GLOB SOURCE_FILES ${AssetTrackerRK}/src/*)

add_library(AssetTrackerRK STATIC ${SOURCE_FILES})
target_include_directories(AssetTrackerRK PRIVATE ${AssetTrackerRK} ${LIS3DH} ${PLATFORM_CXX_INCLUDES})
target_include_directories(AssetTrackerRK PRIVATE ${AssetTrackerRK}/include ${LIS3DH}/include ${PLATFORM_CXX_INCLUDES})
target_compile_options(AssetTrackerRK PRIVATE "$<$<CONFIG:ALL>:${PLATFORM_CXX_FLAGS}>")
target_compile_definitions(AssetTrackerRK PRIVATE ${PLATFORM_CXX_DEFS})
add_dependencies(AssetTrackerRK ${AssetTrackerRK_Install} LIS3DH)
add_dependencies(AssetTrackerRK LIS3DH)
20 changes: 16 additions & 4 deletions packages/AssetTrackerRK/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,34 @@
from conans import ConanFile, tools
import os

repo_url = 'https://github.com/rickkas7/AssetTrackerRK.git'
commit_sha = 'b913c5ac4967e83c466d8f079857ef349f8e7f69'
build_dir = os.getenv("BUILD_DIR", "build")
source_dir = os.getenv("PKG_SRC_DIR", None)

def lookup(name, default = None):

def lookup(name, default=None):
v = default
if os.path.exists(build_dir + "/" + name):
v = tools.load(build_dir + "/" + name)
return os.getenv("CONAN_" + name, v)


class ParticlePackage(ConanFile):
name = "AssetTrackerRK"
version = lookup("VERSION", "snapshot")
settings = "os", "compiler", "build_type", "arch"
url = "https://github.com/jw3/particle-cmakes"
url = "https://github.com/jw3/conan-particle"
exports = build_dir + "/VERSION"
generators = "cmake"
requires = []
requires = ['LIS3DH/9.9.9.9@jw3/stable']

def package(self):
self.copy("*.cmake", src="cmake")
self.copy("*.cmake", src=f"{source_dir}/cmake")
self.copy("*.c*", dst="src", src='src')
self.copy("*.h*", dst="include", src='src')

def source(self):
self.run(f"git clone {repo_url} .")
if commit_sha:
self.run(f"git checkout {commit_sha}")
27 changes: 4 additions & 23 deletions packages/DS18B20/cmake/DS18B20.cmake
Original file line number Diff line number Diff line change
@@ -1,29 +1,10 @@
include(ExternalProject)
set(DS18B20_Install ds18b20)

set(DS18B20 ${CONAN_DS18B20_ROOT})
include(OneWire)

externalproject_add(
${DS18B20_Install}
GIT_REPOSITORY https://github.com/tomdeboer/SparkCoreDallasTemperature.git
GIT_TAG 5f5dbea7cb131eb801dfb1fec0338df0a20dced9
PATCH_COMMAND ${CONAN_PARTICLE-COMMON_ROOT}/bin/apply.sh ${CONAN_DS18B20_ROOT}/patch
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
UPDATE_COMMAND ""
LOG_DOWNLOAD ON)

externalproject_get_property(${DS18B20_Install} source_dir)
set(DS18B20 ${source_dir}/firmware)

set(SOURCE_FILES ${DS18B20}/spark-dallas-temperature.cpp)
if (NOT EXISTS ${SOURCE_FILES})
file(WRITE ${SOURCE_FILES})
endif ()
file(GLOB SOURCE_FILES ${DS18B20}/src/*)

add_library(DS18B20 STATIC ${SOURCE_FILES})
target_include_directories(DS18B20 PRIVATE ${DS18B20} ${OneWire} ${PLATFORM_CXX_INCLUDES})
target_include_directories(DS18B20 PRIVATE ${DS18B20}/include ${OneWire}/include ${PLATFORM_CXX_INCLUDES})
target_compile_options(DS18B20 PRIVATE "$<$<CONFIG:ALL>:${PLATFORM_CXX_FLAGS}>")
target_compile_definitions(DS18B20 PRIVATE ${PLATFORM_CXX_DEFS})
add_dependencies(DS18B20 ${DS18B20_Install} OneWire)
add_dependencies(DS18B20 OneWire)
20 changes: 16 additions & 4 deletions packages/DS18B20/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,35 @@
from conans import ConanFile, tools
import os

repo_url = 'https://github.com/tomdeboer/SparkCoreDallasTemperature.git'
commit_sha = '5f5dbea7cb131eb801dfb1fec0338df0a20dced9'
build_dir = os.getenv("BUILD_DIR", "build")
source_dir = os.getenv("PKG_SRC_DIR", None)

def lookup(name, default = None):

def lookup(name, default=None):
v = default
if os.path.exists(build_dir + "/" + name):
v = tools.load(build_dir + "/" + name)
return os.getenv("CONAN_" + name, v)


class ParticlePackage(ConanFile):
name = "DS18B20"
version = lookup("VERSION", "snapshot")
settings = "os", "compiler", "build_type", "arch"
url = "https://github.com/jw3/particle-cmakes"
url = "https://github.com/jw3/conan-particle"
exports = build_dir + "/VERSION"
generators = "cmake"
requires = "OneWire/" + version + "@jw3/stable"

def package(self):
self.copy("*.cmake", src="cmake")
self.copy("*.patch", src="patch", dst="patch", keep_path=True)
self.copy("*.cmake", src=f"{source_dir}/cmake")
self.copy("*.c*", dst="src", src='firmware')
self.copy("*.h*", dst="include", src='firmware')

def source(self):
self.run(f"git clone {repo_url} .")
if commit_sha:
self.run(f"git checkout {commit_sha}")
tools.patch(patch_file=f"{source_dir}/patch/0001-include-cmath.patch")
24 changes: 3 additions & 21 deletions packages/LIS3DH/cmake/LIS3DH.cmake
Original file line number Diff line number Diff line change
@@ -1,26 +1,8 @@
include(ExternalProject)
set(LIS3DH_Install lis3dh)
set(LIS3DH ${CONAN_LIS3DH_ROOT})

externalproject_add(
${LIS3DH_Install}
GIT_REPOSITORY https://github.com/rickkas7/LIS3DH.git
GIT_TAG 8d8f331dd6cfce93380de2988693832a3397f03e
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
UPDATE_COMMAND ""
LOG_DOWNLOAD ON)

externalproject_get_property(${LIS3DH_Install} source_dir)
set(LIS3DH ${source_dir}/src)

set(SOURCE_FILES ${LIS3DH}/LIS3DH.cpp)
if (NOT EXISTS ${SOURCE_FILES})
file(WRITE ${SOURCE_FILES})
endif ()
file(GLOB SOURCE_FILES ${LIS3DH}/src/*)

add_library(LIS3DH STATIC ${SOURCE_FILES})
target_include_directories(LIS3DH PRIVATE ${LIS3DH} ${PLATFORM_CXX_INCLUDES})
target_include_directories(LIS3DH PRIVATE ${LIS3DH}/include ${PLATFORM_CXX_INCLUDES})
target_compile_options(LIS3DH PRIVATE "$<$<CONFIG:ALL>:${PLATFORM_CXX_FLAGS}>")
target_compile_definitions(LIS3DH PRIVATE ${PLATFORM_CXX_DEFS})
add_dependencies(LIS3DH ${LIS3DH_Install})
18 changes: 15 additions & 3 deletions packages/LIS3DH/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,34 @@
from conans import ConanFile, tools
import os

repo_url = 'https://github.com/rickkas7/LIS3DH.git'
commit_sha = '8d8f331dd6cfce93380de2988693832a3397f03e'
build_dir = os.getenv("BUILD_DIR", "build")
source_dir = os.getenv("PKG_SRC_DIR", None)

def lookup(name, default = None):

def lookup(name, default=None):
v = default
if os.path.exists(build_dir + "/" + name):
v = tools.load(build_dir + "/" + name)
return os.getenv("CONAN_" + name, v)


class ParticlePackage(ConanFile):
name = "LIS3DH"
version = lookup("VERSION", "snapshot")
settings = "os", "compiler", "build_type", "arch"
url = "https://github.com/jw3/particle-cmakes"
url = "https://github.com/jw3/conan-particle"
exports = build_dir + "/VERSION"
generators = "cmake"
requires = []

def package(self):
self.copy("*.cmake", src="cmake")
self.copy("*.cmake", src=f"{source_dir}/cmake")
self.copy("*.c*", dst="src", src='src')
self.copy("*.h*", dst="include", src='src')

def source(self):
self.run(f"git clone {repo_url} .")
if commit_sha:
self.run(f"git checkout {commit_sha}")
24 changes: 3 additions & 21 deletions packages/LiquidCrystalI2C/cmake/LiquidCrystalI2C.cmake
Original file line number Diff line number Diff line change
@@ -1,26 +1,8 @@
include(ExternalProject)
set(LiquidCrystalI2C_Install lcdi2c)
set(LiquidCrystalI2C ${CONAN_LIQUIDCRYSTALI2C_ROOT})

externalproject_add(
${LiquidCrystalI2C_Install}
GIT_REPOSITORY https://github.com/BulldogLowell/LiquidCrystal_I2C_Spark.git
GIT_TAG master
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
UPDATE_COMMAND ""
LOG_DOWNLOAD ON)

externalproject_get_property(${LiquidCrystalI2C_Install} source_dir)
set(LiquidCrystalI2C ${source_dir}/firmware)

set(SOURCE_FILES ${LiquidCrystalI2C}/LiquidCrystal_I2C_Spark.cpp)
if (NOT EXISTS ${SOURCE_FILES})
file(WRITE ${SOURCE_FILES})
endif ()
file(GLOB SOURCE_FILES ${AssetTrackerRK}/src/*)

add_library(LiquidCrystalI2C STATIC ${SOURCE_FILES})
target_include_directories(LiquidCrystalI2C PRIVATE ${LiquidCrystalI2C} ${PLATFORM_CXX_INCLUDES})
target_include_directories(LiquidCrystalI2C PRIVATE ${LiquidCrystalI2C}/include ${PLATFORM_CXX_INCLUDES})
target_compile_options(LiquidCrystalI2C PRIVATE "$<$<CONFIG:ALL>:${PLATFORM_CXX_FLAGS}>")
target_compile_definitions(LiquidCrystalI2C PRIVATE ${PLATFORM_CXX_DEFS})
add_dependencies(LiquidCrystalI2C ${LiquidCrystalI2C_Install})
18 changes: 15 additions & 3 deletions packages/LiquidCrystalI2C/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,34 @@
from conans import ConanFile, tools
import os

repo_url = 'https://github.com/BulldogLowell/LiquidCrystal_I2C_Spark.git'
commit_sha = ''
build_dir = os.getenv("BUILD_DIR", "build")
source_dir = os.getenv("PKG_SRC_DIR", None)

def lookup(name, default = None):

def lookup(name, default=None):
v = default
if os.path.exists(build_dir + "/" + name):
v = tools.load(build_dir + "/" + name)
return os.getenv("CONAN_" + name, v)


class ParticlePackage(ConanFile):
name = "LiquidCrystalI2C"
version = lookup("VERSION", "snapshot")
settings = "os", "compiler", "build_type", "arch"
url = "https://github.com/jw3/particle-cmakes"
url = "https://github.com/jw3/conan-particle"
exports = build_dir + "/VERSION"
generators = "cmake"
requires = []

def package(self):
self.copy("*.cmake", src="cmake")
self.copy("*.cmake", src=f"{source_dir}/cmake")
self.copy("*.c*", dst="src", src='firmware')
self.copy("*.h*", dst="include", src='firmware')

def source(self):
self.run(f"git clone {repo_url} .")
if commit_sha:
self.run(f"git checkout {commit_sha}")
Loading

0 comments on commit a8b6a70

Please sign in to comment.