Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add deployer sources example #61

Merged
merged 5 commits into from
Feb 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,10 @@

### [Use Android NDK to cross-build](examples/cross_build/android/ndk_basic)

- Learn how to cross-build packages for Android. [Docs](https://docs.conan.io/en/2.0/examples/cross_build/android.html)
- Learn how to cross-build packages for Android. [Docs](https://docs.conan.io/en/2.0/examples/cross_build/android.html)

### [Use custom deployers](examples/extensions/deployers/)

- Learn how to create a custom deployer in Conan. [Docs](https://docs.conan.io/en/2.0/reference/extensions/deployers.html)

* ``sources_deploy`` [deployer](examples/extensions/deployers/sources/sources_deploy.py): Copies the sources of all your dependencies to your output folder. [Docs](https://docs.conan.io/en/2.0/examples/extensions/deployers/sources/custom_deployer_sources.html)
13 changes: 13 additions & 0 deletions examples/extensions/deployers/run_example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import os
import shutil

from test.examples_tools import run, tmp_dir

with tmp_dir("sources_tmp"):
# Move to temp dir
shutil.copy("../sources/conanfile.py", "./conanfile.py")
shutil.copy("../sources/sources_deploy.py", "./sources_deploy.py")
output = run("conan graph info conanfile.py -c tools.build:download_source=True --deploy=sources_deploy")
# Our requirements should now be in here
dependency_folders = set(os.listdir("dependencies_sources"))
assert {"zlib", "mcap", "zstd", "lz4"}.issubset(dependency_folders)
14 changes: 14 additions & 0 deletions examples/extensions/deployers/sources/conanfile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from conan import ConanFile


class BasicConanfile(ConanFile):
name = "pkg"
version = "1.0"
description = "A basic recipe"

# The requirements method allows you to define the dependencies of your recipe
def requirements(self):
# Each call to self.requires() will add the corresponding requirement
# to the current list of requirements
self.requires("zlib/1.2.13")
self.requires("mcap/0.5.0")
7 changes: 7 additions & 0 deletions examples/extensions/deployers/sources/sources_deploy.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from conan.tools.files import copy
import os


def deploy(graph, output_folder):
for name, dep in graph.root.conanfile.dependencies.items():
copy(graph.root.conanfile, "*", dep.folders.source_folder, os.path.join(output_folder, "dependencies_sources", str(dep)))