forked from conan-io/conan
-
Notifications
You must be signed in to change notification settings - Fork 0
/
package_editable_layout.py
63 lines (47 loc) · 2.13 KB
/
package_editable_layout.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# coding=utf-8
import os
from conans.errors import ConanException
from conans.model.editable_layout import EditableLayout
from conans.model.ref import ConanFileReference
from conans.model.ref import PackageReference
from conans.paths import CONANFILE
class PackageEditableLayout(object):
def __init__(self, base_folder, layout_file, ref, conanfile=CONANFILE):
assert isinstance(ref, ConanFileReference)
self._ref = ref
self._base_folder = base_folder
self._layout_file = layout_file
self._conanfile_name = conanfile
@property
def ref(self):
return self._ref
def base_folder(self):
""" Returns the base folder for this package reference """
return self._base_folder
def conanfile(self):
""" Path to the conanfile. We can agree that an editable package
needs to be a Conan package
"""
return os.path.join(self._base_folder, self._conanfile_name)
def editable_cpp_info(self):
if self._layout_file:
if os.path.isfile(self._layout_file):
return EditableLayout(self._layout_file)
else:
raise ConanException("Layout file not found: %s" % self._layout_file)
def export(self):
raise ConanException("Operation not allowed on a package installed as editable")
def export_sources(self):
raise ConanException("Operation not allowed on a package installed as editable")
def source(self):
raise ConanException("Operation not allowed on a package installed as editable")
def load_metadata(self):
raise ConanException("Operation not allowed on a package installed as editable")
def package(self, pref):
assert isinstance(pref, PackageReference)
assert pref.ref == self._ref
raise ConanException("Operation not allowed on a package installed as editable")
def package_metadata(self):
raise ConanException("Package metadata is not available for editable packages")
def get_path(self, package_id=None, path=None):
raise ConanException("Operation not allowed on a package installed as editable")