Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
bob.admin
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
bob
bob.admin
Merge requests
!63
Conda package based CI
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Conda package based CI
condapackage
into
master
Overview
3
Commits
136
Pipelines
0
Changes
31
Merged
Amir MOHAMMADI
requested to merge
condapackage
into
master
7 years ago
Overview
3
Commits
136
Pipelines
0
Changes
8
Expand
Fixes
#35 (closed)
and
#48 (closed)
Edited
7 years ago
by
André Anjos
0
0
Merge request reports
Compare
version 45
version 97
bb99b326
7 years ago
version 96
12c38582
7 years ago
version 95
bf51de52
7 years ago
version 94
17bded07
7 years ago
version 93
c40ef140
7 years ago
version 92
0bda0ea7
7 years ago
version 91
afcf8190
7 years ago
version 90
cffc7883
7 years ago
version 89
2cf0b12f
7 years ago
version 88
136d852c
7 years ago
version 87
75eeebbf
7 years ago
version 86
36332a5d
7 years ago
version 85
55a54595
7 years ago
version 84
0d674821
7 years ago
version 83
f9fdc1bc
7 years ago
version 82
f31d19db
7 years ago
version 81
6b28c177
7 years ago
version 80
ce4d78df
7 years ago
version 79
5ca5e3ac
7 years ago
version 78
e426392f
7 years ago
version 77
298c7c03
7 years ago
version 76
b861e230
7 years ago
version 75
4c301904
7 years ago
version 74
ebd5beca
7 years ago
version 73
6c6264c8
7 years ago
version 72
52a7d02d
7 years ago
version 71
d3e10ccd
7 years ago
version 70
ae95051b
7 years ago
version 69
2c84cff7
7 years ago
version 68
a5600ef5
7 years ago
version 67
2889ed53
7 years ago
version 66
fdbbf54a
7 years ago
version 65
04bce0b5
7 years ago
version 64
d5ff772e
7 years ago
version 63
fa41bb39
7 years ago
version 62
a4318587
7 years ago
version 61
fecd60cd
7 years ago
version 60
7add7bdc
7 years ago
version 59
4688def9
7 years ago
version 58
c0a05db1
7 years ago
version 57
7d03b217
7 years ago
version 56
2eb29e61
7 years ago
version 55
5eaf9c6b
7 years ago
version 54
e813a21a
7 years ago
version 53
99e076d6
7 years ago
version 52
60d830ad
7 years ago
version 51
df11ee89
7 years ago
version 50
6ab15fd1
7 years ago
version 49
dda37a52
7 years ago
version 48
6317bef6
7 years ago
version 47
eb37ed81
7 years ago
version 46
2654a5bd
7 years ago
version 45
4554c37a
7 years ago
version 44
eaebd8a4
7 years ago
version 43
d37cb4a1
7 years ago
version 42
5b88ca07
7 years ago
version 41
2ca37790
7 years ago
version 40
4bf33f9b
7 years ago
version 39
825e57a4
7 years ago
version 38
b662c35b
7 years ago
version 37
dd3107da
7 years ago
version 36
518b33ec
7 years ago
version 35
b1cc5028
7 years ago
version 34
42f90c2d
7 years ago
version 33
f24ad274
7 years ago
version 32
5e0890ce
7 years ago
version 31
0f46db1d
7 years ago
version 30
365817ef
7 years ago
version 29
e2fbf51d
7 years ago
version 28
a6fb19be
7 years ago
version 27
e446cfc9
7 years ago
version 26
c797a803
7 years ago
version 25
5b2469e1
7 years ago
version 24
e7a10f01
7 years ago
version 23
cf03b0c9
7 years ago
version 22
1c50f6a2
7 years ago
version 21
551f94f4
7 years ago
version 20
7ccd43dc
7 years ago
version 19
f4317f05
7 years ago
version 18
7170ee94
7 years ago
version 17
754ef0aa
7 years ago
version 16
26e50d95
7 years ago
version 15
f7403602
7 years ago
version 14
3574d109
7 years ago
version 13
18ce304b
7 years ago
version 12
6a254bc3
7 years ago
version 11
bdbad623
7 years ago
version 10
ab33a37d
7 years ago
version 9
5c5b0bf0
7 years ago
version 8
ce043a42
7 years ago
version 7
b1b6af10
7 years ago
version 6
0f9a4324
7 years ago
version 5
888d7ded
7 years ago
version 4
5065de85
7 years ago
version 3
ee61e0a1
7 years ago
version 2
ca1a2600
7 years ago
version 1
9738db2a
7 years ago
master (base)
and
version 63
latest version
d10ba58a
136 commits,
7 years ago
version 97
bb99b326
134 commits,
7 years ago
version 96
12c38582
133 commits,
7 years ago
version 95
bf51de52
132 commits,
7 years ago
version 94
17bded07
131 commits,
7 years ago
version 93
c40ef140
130 commits,
7 years ago
version 92
0bda0ea7
129 commits,
7 years ago
version 91
afcf8190
128 commits,
7 years ago
version 90
cffc7883
127 commits,
7 years ago
version 89
2cf0b12f
126 commits,
7 years ago
version 88
136d852c
125 commits,
7 years ago
version 87
75eeebbf
124 commits,
7 years ago
version 86
36332a5d
122 commits,
7 years ago
version 85
55a54595
121 commits,
7 years ago
version 84
0d674821
119 commits,
7 years ago
version 83
f9fdc1bc
118 commits,
7 years ago
version 82
f31d19db
117 commits,
7 years ago
version 81
6b28c177
115 commits,
7 years ago
version 80
ce4d78df
114 commits,
7 years ago
version 79
5ca5e3ac
113 commits,
7 years ago
version 78
e426392f
112 commits,
7 years ago
version 77
298c7c03
111 commits,
7 years ago
version 76
b861e230
110 commits,
7 years ago
version 75
4c301904
109 commits,
7 years ago
version 74
ebd5beca
107 commits,
7 years ago
version 73
6c6264c8
106 commits,
7 years ago
version 72
52a7d02d
104 commits,
7 years ago
version 71
d3e10ccd
102 commits,
7 years ago
version 70
ae95051b
100 commits,
7 years ago
version 69
2c84cff7
99 commits,
7 years ago
version 68
a5600ef5
98 commits,
7 years ago
version 67
2889ed53
97 commits,
7 years ago
version 66
fdbbf54a
96 commits,
7 years ago
version 65
04bce0b5
95 commits,
7 years ago
version 64
d5ff772e
94 commits,
7 years ago
version 63
fa41bb39
93 commits,
7 years ago
version 62
a4318587
92 commits,
7 years ago
version 61
fecd60cd
91 commits,
7 years ago
version 60
7add7bdc
90 commits,
7 years ago
version 59
4688def9
89 commits,
7 years ago
version 58
c0a05db1
88 commits,
7 years ago
version 57
7d03b217
87 commits,
7 years ago
version 56
2eb29e61
86 commits,
7 years ago
version 55
5eaf9c6b
85 commits,
7 years ago
version 54
e813a21a
84 commits,
7 years ago
version 53
99e076d6
82 commits,
7 years ago
version 52
60d830ad
78 commits,
7 years ago
version 51
df11ee89
77 commits,
7 years ago
version 50
6ab15fd1
76 commits,
7 years ago
version 49
dda37a52
75 commits,
7 years ago
version 48
6317bef6
74 commits,
7 years ago
version 47
eb37ed81
73 commits,
7 years ago
version 46
2654a5bd
72 commits,
7 years ago
version 45
4554c37a
71 commits,
7 years ago
version 44
eaebd8a4
70 commits,
7 years ago
version 43
d37cb4a1
69 commits,
7 years ago
version 42
5b88ca07
68 commits,
7 years ago
version 41
2ca37790
67 commits,
7 years ago
version 40
4bf33f9b
66 commits,
7 years ago
version 39
825e57a4
64 commits,
7 years ago
version 38
b662c35b
63 commits,
7 years ago
version 37
dd3107da
62 commits,
7 years ago
version 36
518b33ec
61 commits,
7 years ago
version 35
b1cc5028
60 commits,
7 years ago
version 34
42f90c2d
59 commits,
7 years ago
version 33
f24ad274
56 commits,
7 years ago
version 32
5e0890ce
55 commits,
7 years ago
version 31
0f46db1d
54 commits,
7 years ago
version 30
365817ef
53 commits,
7 years ago
version 29
e2fbf51d
52 commits,
7 years ago
version 28
a6fb19be
51 commits,
7 years ago
version 27
e446cfc9
49 commits,
7 years ago
version 26
c797a803
48 commits,
7 years ago
version 25
5b2469e1
47 commits,
7 years ago
version 24
e7a10f01
46 commits,
7 years ago
version 23
cf03b0c9
45 commits,
7 years ago
version 22
1c50f6a2
44 commits,
7 years ago
version 21
551f94f4
43 commits,
7 years ago
version 20
7ccd43dc
41 commits,
7 years ago
version 19
f4317f05
39 commits,
7 years ago
version 18
7170ee94
35 commits,
7 years ago
version 17
754ef0aa
34 commits,
7 years ago
version 16
26e50d95
33 commits,
7 years ago
version 15
f7403602
32 commits,
7 years ago
version 14
3574d109
30 commits,
7 years ago
version 13
18ce304b
27 commits,
7 years ago
version 12
6a254bc3
26 commits,
7 years ago
version 11
bdbad623
25 commits,
7 years ago
version 10
ab33a37d
24 commits,
7 years ago
version 9
5c5b0bf0
31 commits,
7 years ago
version 8
ce043a42
29 commits,
7 years ago
version 7
b1b6af10
28 commits,
7 years ago
version 6
0f9a4324
22 commits,
7 years ago
version 5
888d7ded
21 commits,
7 years ago
version 4
5065de85
20 commits,
7 years ago
version 3
ee61e0a1
19 commits,
7 years ago
version 2
ca1a2600
18 commits,
7 years ago
version 1
9738db2a
17 commits,
7 years ago
Show latest version
8 files
+
458
−
296
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
8
Search (e.g. *.vue) (Ctrl+P)
conda/migrate.py
0 → 100755
+
185
−
0
Options
#!/usr/bin/env python
'''
Migrates a Bob package recipe from bob.conda into its own repository
Usage: {prog} <template_recipe> <old_recipe> <conda_build_variant> <package_folder>
'''
from
__future__
import
absolute_import
,
division
,
print_function
import
re
from
conda_build.api
import
render
,
Config
from
conda_build.variants
import
parse_config_file
from
conda_build.conda_interface
import
PY3
import
os
def
extract_requirements_text
(
path
):
text
=
""
if
path
:
with
open
(
path
)
as
f
:
recipe_text
=
f
.
read
()
if
PY3
and
hasattr
(
recipe_text
,
'
decode
'
):
recipe_text
=
recipe_text
.
decode
()
match
=
re
.
search
(
r
'
(^requirements:.*?)(^test:|^extra:|^about:|^outputs:|\Z)
'
,
recipe_text
,
flags
=
re
.
MULTILINE
|
re
.
DOTALL
)
text
=
match
.
group
(
1
)
if
match
else
""
return
text
def
extract_test_text
(
path
):
text
=
""
if
path
:
with
open
(
path
)
as
f
:
recipe_text
=
f
.
read
()
if
PY3
and
hasattr
(
recipe_text
,
'
decode
'
):
recipe_text
=
recipe_text
.
decode
()
match
=
re
.
search
(
r
'
(^test:.*?)(^extra:|^about:|^outputs:|\Z)
'
,
recipe_text
,
flags
=
re
.
MULTILINE
|
re
.
DOTALL
)
text
=
match
.
group
(
1
)
if
match
else
""
i1
=
text
.
find
(
'
requires:
\n
'
)
+
10
i2
=
text
.
find
(
'
imports:
'
,
i1
)
i3
=
text
.
find
(
'
commands:
'
,
i1
)
i2
=
i2
if
i2
>
-
1
else
len
(
text
)
i3
=
i3
if
i3
>
-
1
else
len
(
text
)
i2
=
min
(
i2
,
i3
)
return
text
[
i1
:
i2
]
def
add_variant
(
doc
,
star
=
True
):
lines
=
doc
.
split
(
'
\n
'
)
for
i
,
line
in
enumerate
(
lines
):
if
line
.
find
(
'
{{
'
)
==
-
1
:
if
line
.
find
(
'
-
'
)
==
-
1
:
continue
variant
=
line
.
split
(
'
-
'
,
1
)[
1
].
strip
()
if
variant
.
startswith
(
'
bob.
'
)
or
variant
==
'
bob
'
:
continue
variant
=
variant
.
replace
(
'
-
'
,
'
_
'
).
replace
(
'
.
'
,
'
_
'
)
variant
=
'
{{
'
+
variant
.
split
(
'
#
'
)[
0
].
strip
()
+
'
}}
'
line
=
line
.
split
(
'
#
'
)
line
=
[
line
[
0
]
+
variant
]
+
line
[
1
:]
lines
[
i
]
=
'
#
'
.
join
(
line
)
doc
=
'
\n
'
.
join
(
lines
)
if
star
:
doc
=
doc
.
replace
(
'
}}.*
'
,
'
}}
'
).
replace
(
'
}}
'
,
'
}}.*
'
)
doc
=
doc
.
replace
(
"
compiler(
'
c
'
) }}.*
"
,
"
compiler(
'
c
'
) }}
"
)
doc
=
doc
.
replace
(
"
compiler(
'
cxx
'
) }}.*
"
,
"
compiler(
'
cxx
'
) }}
"
)
return
doc
def
migrate
(
template_recipe_path
,
old_recipe_path
,
build_variant_path
,
output_folder
):
config
=
Config
()
variants
=
parse_config_file
(
build_variant_path
,
config
)
recipe
=
render
(
old_recipe_path
,
variants
=
variants
)[
0
][
0
]
with
open
(
template_recipe_path
)
as
f
:
final_recipe
=
f
.
read
()
final_recipe
=
final_recipe
.
replace
(
'
<PACKAGE>
'
,
recipe
.
name
())
entry_points
,
entry_points_test
=
''
,
''
if
'
entry_points
'
in
recipe
.
meta
[
'
build
'
]:
entry_points
=
'
entry_points:
\n
-
'
+
\
'
\n
-
'
.
join
(
recipe
.
meta
[
'
build
'
][
'
entry_points
'
])
+
'
\n
'
entry_points_test
=
'
-
'
+
'
\n
-
'
.
join
(
l
.
split
(
'
=
'
)[
0
].
strip
()
+
'
--help
'
for
l
in
recipe
.
meta
[
'
build
'
][
'
entry_points
'
])
+
'
\n
'
final_recipe
=
final_recipe
.
replace
(
'
<ENTRY_POINTS>
\n
'
,
entry_points
)
final_recipe
=
final_recipe
.
replace
(
'
<ENTRY_POINTS_TEST>
\n
'
,
entry_points_test
)
requirements_text
=
extract_requirements_text
(
old_recipe_path
)
already_build
=
[
'
- python
\n
'
,
'
- setuptools
\n
'
,
'
- python {{ python }}
\n
'
,
'
- setuptools {{ setuptools }}
\n
'
,
'
- toolchain {{ toolchain }}
\n
'
]
i1
=
requirements_text
.
find
(
'
build:
\n
'
)
+
7
i2
=
requirements_text
.
find
(
'
run:
\n
'
)
build_text
=
requirements_text
[
i1
:
i2
]
requires_compilers
=
'
toolchain
'
in
build_text
for
line
in
already_build
:
build_text
=
build_text
.
replace
(
line
,
''
)
build_text
=
build_text
.
strip
()
if
build_text
:
build_text
=
'
'
+
build_text
+
'
\n
'
build_text
=
add_variant
(
build_text
,
star
=
False
)
final_recipe
=
final_recipe
.
replace
(
'
<HOST_DEPS>
\n
'
,
build_text
)
if
requires_compilers
:
final_recipe
=
final_recipe
.
replace
(
'
<BUILD_DEPS>
\n
'
,
'''
build:
- {{ compiler(
'
c
'
)}}
- {{ compiler(
'
cxx
'
)}}
'''
)
else
:
final_recipe
=
final_recipe
.
replace
(
'
<BUILD_DEPS>
\n
'
,
''
)
run_text
=
requirements_text
[
i2
+
5
:]
for
line
in
already_build
[:
2
]:
run_text
=
run_text
.
replace
(
line
,
''
)
run_text
=
run_text
.
strip
()
run_text
=
'
'
+
run_text
+
'
\n
'
if
run_text
else
run_text
final_recipe
=
final_recipe
.
replace
(
'
<RUN_DEPS>
\n
'
,
run_text
)
already_test
=
[
'
nose
'
,
'
coverage
'
,
'
sphinx
'
,
'
sphinx_rtd_theme
'
]
already_test
+=
[
l
+
'
{{
'
+
l
+
'
}}
'
for
l
in
already_test
]
already_test
=
[
'
-
'
+
l
+
'
\n
'
for
l
in
already_test
]
test_requires
=
extract_test_text
(
old_recipe_path
)
for
line
in
already_test
:
test_requires
=
test_requires
.
replace
(
line
,
''
)
test_requires
=
test_requires
.
strip
()
if
test_requires
:
test_requires
=
'
'
+
test_requires
+
'
\n
'
test_requires
=
add_variant
(
test_requires
)
final_recipe
=
final_recipe
.
replace
(
'
<TEST_DEPS>
\n
'
,
test_requires
)
final_recipe
=
final_recipe
.
replace
(
'
<LICENSE>
'
,
recipe
.
meta
[
'
about
'
][
'
license
'
])
final_recipe
=
final_recipe
.
replace
(
'
<SHORT_DESCRIPTION>
'
,
recipe
.
meta
[
'
about
'
][
'
summary
'
])
license_family
=
recipe
.
meta
[
'
about
'
][
'
license
'
]
license_family
=
'
BSD
'
if
'
BSD
'
in
license_family
else
'
GPL
'
final_recipe
=
final_recipe
.
replace
(
'
<LICENSE_FAMILY>
'
,
license_family
)
output_folder
=
os
.
path
.
join
(
output_folder
,
'
conda
'
)
os
.
makedirs
(
output_folder
,
exist_ok
=
True
)
out_path
=
os
.
path
.
join
(
output_folder
,
'
meta.yaml
'
)
# custom modifications:
if
recipe
.
name
()
==
'
bob.extension
'
:
final_recipe
=
final_recipe
.
replace
(
'
-sv {{ name }}
'
,
'
-sv {{ name }} --exclude=test_extensions
'
)
if
recipe
.
name
()
in
(
'
bob.ip.gabor
'
,
'
bob.learn.em
'
):
final_recipe
=
final_recipe
.
replace
(
'
{{ sphinx_rtd_theme }}
\n
'
,
'
{{ sphinx_rtd_theme }}
\n
'
+
'
- matplotlib {{ matplotlib }}
\n
'
)
with
open
(
out_path
,
'
w
'
)
as
f
:
f
.
write
(
final_recipe
)
# fix the doc/conf.py
latex_conf
=
'''
import sphinx
if sphinx.__version__ >=
"
1.4.1
"
:
extensions.append(
'
sphinx.ext.imgmath
'
)
imgmath_image_format =
'
svg
'
else:
extensions.append(
'
sphinx.ext.pngmath
'
)
'''
place_to_insert
=
'''
'
sphinx.ext.viewcode
'
,
'''
replace
=
place_to_insert
+
place_to_insert
.
replace
(
'
viewcode
'
,
'
mathjax
'
)
conf
=
os
.
path
.
join
(
output_folder
,
'
..
'
,
'
doc
'
,
'
conf.py
'
)
with
open
(
conf
)
as
f
:
lines
=
f
.
read
()
lines
=
lines
.
replace
(
latex_conf
,
''
)
lines
=
lines
.
replace
(
place_to_insert
,
replace
)
with
open
(
conf
,
'
w
'
)
as
f
:
f
.
write
(
lines
)
def
main
(
argv
=
None
):
import
sys
migrate
(
*
sys
.
argv
[
1
:])
if
__name__
==
'
__main__
'
:
main
()
Loading