Compare commits

..

10 Commits

Author SHA1 Message Date
01ae0f5f54 Bumped version to 1.6.4 2017-04-21 18:16:14 +02:00
1e80446870 Added file exclusion filter for Flamenco.
A filter like "*.abc;*.mkv;*.mov" can be used to prevent certain files
from being copied to the job storage directory. Requires a Blender that is
bundled with BAM 1.1.7 or newer.
2017-04-21 18:15:59 +02:00
8d5c97931e Fixed capitalisation of label 2017-03-21 14:26:08 +01:00
1a0c00b87a Removed my name from changelog entry 2017-03-21 14:20:15 +01:00
32befc51f8 Include CHANGELOG.md as data file in distribution 2017-03-21 14:18:58 +01:00
06126862d4 Bumped version to 1.6.3 2017-03-21 14:16:37 +01:00
7b8713881e update_version.sh now prints example commit & tag commands 2017-03-21 14:16:29 +01:00
7c65851b75 Allow version passed to update_version.sh to start with "version-" prefix
This allows you to copy-paste a tag and edit it for the new version.
2017-03-21 14:16:07 +01:00
ec72091268 Added changelog, which will contain user-relevant changes. 2017-03-21 14:13:56 +01:00
cf7adb065f Local project path is used by both Attract and Flamenco
It's now shown whenever the project is set up for either one.
2017-03-21 14:06:45 +01:00
7 changed files with 95 additions and 35 deletions

40
CHANGELOG.md Normal file
View File

@@ -0,0 +1,40 @@
# Blender Cloud changelog
## Version 1.6.4 (2017-04-21)
- Added file exclusion filter for Flamenco. A filter like "*.abc;*.mkv;*.mov" can be
used to prevent certain files from being copied to the job storage directory.
Requires a Blender that is bundled with BAM 1.1.7 or newer.
## Version 1.6.3 (2017-03-21)
- Fixed bug where local project path wasn't shown for projects only set up for Flamenco
(and not Attract).
- Added this CHANGELOG.md file, which will contain user-relevant changes.
## Version 1.6.2 (2017-03-17)
- Flamenco: when opening non-existing file path, open parent instead
- Fix T50954: Improve Blender Cloud add-on project selector
## Version 1.6.1 (2017-03-07)
- Show error in GUI when Blender Cloud is unreachable
- Fixed sample count when using branched path tracing
## Version 1.6.0 (2017-02-14)
- Default to frame chunk size of 1 (instead of 10).
- Turn off "use overwrite" and "use placeholder" for Flamenco blend files.
- Fixed bugs when blendfile is outside the project directory
## Older versions
For the history of older versions, please refer to the
[Git history](https://developer.blender.org/diffusion/BCA/)

View File

@@ -21,7 +21,7 @@
bl_info = { bl_info = {
'name': 'Blender Cloud', 'name': 'Blender Cloud',
"author": "Sybren A. Stüvel, Francesco Siddi, Inês Almeida, Antony Riakiotakis", "author": "Sybren A. Stüvel, Francesco Siddi, Inês Almeida, Antony Riakiotakis",
'version': (1, 6, 2), 'version': (1, 6, 4),
'blender': (2, 77, 0), 'blender': (2, 77, 0),
'location': 'Addon Preferences panel, and Ctrl+Shift+Alt+A anywhere for texture browser', 'location': 'Addon Preferences panel, and Ctrl+Shift+Alt+A anywhere for texture browser',
'description': 'Texture library browser and Blender Sync. Requires the Blender ID addon ' 'description': 'Texture library browser and Blender Sync. Requires the Blender ID addon '

View File

@@ -220,7 +220,7 @@ class BlenderCloudPreferences(AddonPreferences):
# can switch projects and the Attract and Flamenco properties switch with it. # can switch projects and the Attract and Flamenco properties switch with it.
project = PointerProperty(type=BlenderCloudProjectGroup) project = PointerProperty(type=BlenderCloudProjectGroup)
attract_project_local_path = StringProperty( cloud_project_local_path = StringProperty(
name='Local Project Path', name='Local Project Path',
description='Local path of your Attract project, used to search for blend files; ' description='Local path of your Attract project, used to search for blend files; '
'usually best to set to an absolute path', 'usually best to set to an absolute path',
@@ -228,6 +228,11 @@ class BlenderCloudPreferences(AddonPreferences):
default='//../') default='//../')
flamenco_manager = PointerProperty(type=flamenco.FlamencoManagerGroup) flamenco_manager = PointerProperty(type=flamenco.FlamencoManagerGroup)
flamenco_exclude_filter = StringProperty(
name='File Exclude Filter',
description='Filter like "*.abc;*.mkv" to prevent certain files to be packed '
'into the output directory',
default='')
# TODO: before making Flamenco public, change the defaults to something less Institute-specific. # TODO: before making Flamenco public, change the defaults to something less Institute-specific.
# NOTE: The assumption is that the workers can also find the files in the same path. # NOTE: The assumption is that the workers can also find the files in the same path.
# This assumption is true for the Blender Institute. # This assumption is true for the Blender Institute.
@@ -345,11 +350,6 @@ class BlenderCloudPreferences(AddonPreferences):
self.draw_project_selector(project_box, self.project) self.draw_project_selector(project_box, self.project)
extensions = project_extensions(self.project.project) extensions = project_extensions(self.project.project)
# Attract stuff
if 'attract' in extensions:
attract_box = project_box.column()
self.draw_attract_buttons(attract_box, self.project)
# Flamenco stuff # Flamenco stuff
if 'flamenco' in extensions: if 'flamenco' in extensions:
flamenco_box = project_box.column() flamenco_box = project_box.column()
@@ -411,24 +411,27 @@ class BlenderCloudPreferences(AddonPreferences):
row_buttons.label('Fetching available projects.') row_buttons.label('Fetching available projects.')
enabled_for = project_extensions(project) enabled_for = project_extensions(project)
if project: if not project:
if enabled_for: return
project_box.label('This project is set up for: %s' %
', '.join(sorted(enabled_for)))
else:
project_box.label('This project is not set up for Attract or Flamenco')
def draw_attract_buttons(self, attract_box, bcp: BlenderCloudProjectGroup): if not enabled_for:
header_row = attract_box.row(align=True) project_box.label('This project is not set up for Attract or Flamenco')
header_row.label('Attract:', icon_value=icon('CLOUD')) return
attract_box.prop(self, 'attract_project_local_path',
text='Local Attract project path') project_box.label('This project is set up for: %s' %
', '.join(sorted(enabled_for)))
# This is only needed when the project is set up for either Attract or Flamenco.
project_box.prop(self, 'cloud_project_local_path',
text='Local Cloud Project Path')
def draw_flamenco_buttons(self, flamenco_box, bcp: flamenco.FlamencoManagerGroup, context): def draw_flamenco_buttons(self, flamenco_box, bcp: flamenco.FlamencoManagerGroup, context):
header_row = flamenco_box.row(align=True) header_row = flamenco_box.row(align=True)
header_row.label('Flamenco:', icon_value=icon('CLOUD')) header_row.label('Flamenco:', icon_value=icon('CLOUD'))
manager_box = flamenco_box.row(align=True) manager_split = flamenco_box.split(0.32, align=True)
manager_split.label('Manager:')
manager_box = manager_split.row(align=True)
if bcp.status in {'NONE', 'IDLE'}: if bcp.status in {'NONE', 'IDLE'}:
if not bcp.available_managers or not bcp.manager: if not bcp.available_managers or not bcp.manager:
@@ -436,26 +439,33 @@ class BlenderCloudPreferences(AddonPreferences):
text='Find Flamenco Managers', text='Find Flamenco Managers',
icon='FILE_REFRESH') icon='FILE_REFRESH')
else: else:
manager_box.prop(bcp, 'manager', text='Manager') manager_box.prop(bcp, 'manager', text='')
manager_box.operator('flamenco.managers', manager_box.operator('flamenco.managers',
text='', text='',
icon='FILE_REFRESH') icon='FILE_REFRESH')
else: else:
manager_box.label('Fetching available managers.') manager_box.label('Fetching available managers.')
path_box = flamenco_box.row(align=True) path_split = flamenco_box.split(0.32, align=True)
path_box.prop(self, 'flamenco_job_file_path') path_split.label(text='Job File Path:')
path_box = path_split.row(align=True)
path_box.prop(self, 'flamenco_job_file_path', text='')
props = path_box.operator('flamenco.explore_file_path', text='', icon='DISK_DRIVE') props = path_box.operator('flamenco.explore_file_path', text='', icon='DISK_DRIVE')
props.path = self.flamenco_job_file_path props.path = self.flamenco_job_file_path
job_output_box = flamenco_box.column(align=True) job_output_box = flamenco_box.column(align=True)
path_box = job_output_box.row(align=True) path_split = job_output_box.split(0.32, align=True)
path_box.prop(self, 'flamenco_job_output_path') path_split.label(text='Job Output Path:')
path_box = path_split.row(align=True)
path_box.prop(self, 'flamenco_job_output_path', text='')
props = path_box.operator('flamenco.explore_file_path', text='', icon='DISK_DRIVE') props = path_box.operator('flamenco.explore_file_path', text='', icon='DISK_DRIVE')
props.path = self.flamenco_job_output_path props.path = self.flamenco_job_output_path
job_output_box.prop(self, 'flamenco_job_output_strip_components', job_output_box.prop(self, 'flamenco_exclude_filter')
text='Strip Components')
prop_split = job_output_box.split(0.32, align=True)
prop_split.label('Strip Components:')
prop_split.prop(self, 'flamenco_job_output_strip_components', text='')
from .flamenco import render_output_path from .flamenco import render_output_path

View File

@@ -300,6 +300,8 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
outdir = Path(prefs.flamenco_job_file_path) / unique_dir outdir = Path(prefs.flamenco_job_file_path) / unique_dir
outfile = outdir / filepath.name outfile = outdir / filepath.name
exclusion_filter = prefs.flamenco_exclude_filter or None
try: try:
outdir.mkdir(parents=True) outdir.mkdir(parents=True)
except Exception as ex: except Exception as ex:
@@ -309,7 +311,7 @@ class FLAMENCO_OT_render(async_loop.AsyncModalOperatorMixin,
return None, [] return None, []
try: try:
missing_sources = await bam_interface.bam_copy(filepath, outfile) missing_sources = await bam_interface.bam_copy(filepath, outfile, exclusion_filter)
except bam_interface.CommandExecutionError as ex: except bam_interface.CommandExecutionError as ex:
self.log.exception('Unable to execute BAM pack') self.log.exception('Unable to execute BAM pack')
self.report({'ERROR'}, 'Unable to execute BAM pack: %s' % ex) self.report({'ERROR'}, 'Unable to execute BAM pack: %s' % ex)
@@ -514,7 +516,7 @@ def render_output_path(context, filepath: Path = None) -> typing.Optional[PurePa
filepath = Path(context.blend_data.filepath) filepath = Path(context.blend_data.filepath)
return _render_output_path( return _render_output_path(
prefs.attract_project_local_path, prefs.cloud_project_local_path,
filepath, filepath,
prefs.flamenco_job_output_strip_components, prefs.flamenco_job_output_strip_components,
prefs.flamenco_job_output_path, prefs.flamenco_job_output_path,

View File

@@ -14,7 +14,8 @@ class CommandExecutionError(Exception):
pass pass
async def bam_copy(base_blendfile: Path, target_blendfile: Path) -> typing.List[Path]: async def bam_copy(base_blendfile: Path, target_blendfile: Path,
exclusion_filter: str) -> typing.List[Path]:
"""Uses BAM to copy the given file and dependencies to the target blendfile. """Uses BAM to copy the given file and dependencies to the target blendfile.
Due to the way blendfile_pack.py is programmed/structured, we cannot import it Due to the way blendfile_pack.py is programmed/structured, we cannot import it
@@ -41,6 +42,9 @@ async def bam_copy(base_blendfile: Path, target_blendfile: Path) -> typing.List[
'--mode', 'FILE', '--mode', 'FILE',
] ]
if exclusion_filter:
args.extend(['--exclude', exclusion_filter])
cmd_to_log = ' '.join(shlex.quote(s) for s in args) cmd_to_log = ' '.join(shlex.quote(s) for s in args)
log.info('Executing %s', cmd_to_log) log.info('Executing %s', cmd_to_log)

View File

@@ -227,11 +227,11 @@ setup(
'wheels': BuildWheels}, 'wheels': BuildWheels},
name='blender_cloud', name='blender_cloud',
description='The Blender Cloud addon allows browsing the Blender Cloud from Blender.', description='The Blender Cloud addon allows browsing the Blender Cloud from Blender.',
version='1.6.2', version='1.6.4',
author='Sybren A. Stüvel', author='Sybren A. Stüvel',
author_email='sybren@stuvel.eu', author_email='sybren@stuvel.eu',
packages=find_packages('.'), packages=find_packages('.'),
data_files=[('blender_cloud', ['README.md', 'README-flamenco.md']), data_files=[('blender_cloud', ['README.md', 'README-flamenco.md', 'CHANGELOG.md']),
('blender_cloud/icons', glob.glob('blender_cloud/icons/*'))], ('blender_cloud/icons', glob.glob('blender_cloud/icons/*'))],
scripts=[], scripts=[],
url='https://developer.blender.org/diffusion/BCA/', url='https://developer.blender.org/diffusion/BCA/',

View File

@@ -1,15 +1,19 @@
#!/bin/bash #!/bin/bash
if [ -z "$1" ]; then VERSION="${1/version-}"
if [ -z "$VERSION" ]; then
echo "Usage: $0 new-version" >&2 echo "Usage: $0 new-version" >&2
exit 1 exit 1
fi fi
BL_INFO_VER=$(echo "$1" | sed 's/\./, /g') BL_INFO_VER=$(echo "$VERSION" | sed 's/\./, /g')
sed "s/version='[^']*'/version='$1'/" -i setup.py sed "s/version='[^']*'/version='$VERSION'/" -i setup.py
sed "s/'version': ([^)]*)/'version': ($BL_INFO_VER)/" -i blender_cloud/__init__.py sed "s/'version': ([^)]*)/'version': ($BL_INFO_VER)/" -i blender_cloud/__init__.py
git diff git diff
echo echo
echo "Don't forget to commit!" echo "Don't forget to commit and tag:"
echo git commit -m \'Bumped version to $VERSION\' setup.py blender_cloud/__init__.py
echo git tag -a version-$VERSION -m \'Tagged version $VERSION\'