[ARVADOS] updated: 25c212007d4c6ef14cf730526246bc8876700bb6

Git user git at public.curoverse.com
Thu Dec 29 10:25:24 EST 2016


Summary of changes:
 .gitignore                                         |   2 +
 README.md                                          |   1 +
 apps/workbench/Gemfile                             |   6 +-
 apps/workbench/Gemfile.lock                        |  16 +-
 .../app/assets/javascripts/work_unit_component.js  |  22 +-
 .../app/controllers/application_controller.rb      |  10 +-
 .../controllers/container_requests_controller.rb   |  28 +
 .../controllers/pipeline_instances_controller.rb   |   2 +-
 .../app/controllers/projects_controller.rb         |   4 +-
 .../app/controllers/work_units_controller.rb       |  14 +-
 apps/workbench/app/models/container_work_unit.rb   |  13 +-
 apps/workbench/app/models/proxy_work_unit.rb       |   6 +-
 .../application/_extra_tab_line_buttons.html.erb   |   0
 .../views/application/_title_and_buttons.html.erb  |   3 +
 .../_extra_tab_line_buttons.html.erb               |  10 +
 .../views/container_requests/_show_inputs.html.erb |  36 +-
 .../pipeline_instances/_running_component.html.erb |   2 +-
 .../_show_components_running.html.erb              |   2 +-
 .../app/views/projects/_show_dashboard.html.erb    |  16 +-
 .../app/views/projects/_show_processes.html.erb    |   5 +
 apps/workbench/app/views/projects/show.html.erb    |  16 +-
 apps/workbench/config/application.default.yml      |   5 +
 apps/workbench/config/routes.rb                    |   1 +
 apps/workbench/lib/tasks/config_dump.rake          |   6 +
 .../container_requests_controller_test.rb          |  27 +
 .../test/controllers/disabled_api_test.rb          |   3 +
 .../test/controllers/projects_controller_test.rb   |  21 +-
 .../test/diagnostics/container_request_test.rb     |  49 ++
 apps/workbench/test/diagnostics/pipeline_test.rb   |  45 +-
 apps/workbench/test/diagnostics_test_helper.rb     |  43 +
 .../test/integration/application_layout_test.rb    |   6 +-
 .../test/integration/container_requests_test.rb    |  13 +
 .../test/integration/pipeline_instances_test.rb    |   2 +-
 apps/workbench/test/integration/projects_test.rb   |   2 +-
 apps/workbench/test/integration/work_units_test.rb |  10 +-
 apps/workbench/test/performance/browsing_test.rb   |   2 +-
 build/README                                       |   6 +-
 build/build-dev-docker-jobs-image.sh               |  63 ++
 build/libcloud-pin                                 |   2 +-
 build/run-build-docker-images.sh                   |   2 +-
 build/run-build-packages-one-target.sh             |  12 +-
 build/run-build-packages.sh                        |  66 +-
 build/run-library.sh                               |  17 +
 build/run-tests.sh                                 |  22 +-
 doc/_config.yml                                    |  16 +-
 .../_container_runtime_constraints.liquid          |   1 -
 .../_container_scheduling_parameters.liquid        |   7 +
 doc/_includes/_what_is_cwl.liquid                  |   1 +
 .../methods/container_requests.html.textile.liquid |   9 +-
 doc/api/methods/containers.html.textile.liquid     |   5 +
 doc/images/upload-using-workbench.png              | Bin 49690 -> 23979 bytes
 doc/images/workbench-dashboard.png                 | Bin 94257 -> 57930 bytes
 doc/images/workbench-move-selected.png             | Bin 47833 -> 15450 bytes
 doc/install/install-ws.html.textile.liquid         | 204 +++++
 doc/user/cwl/cwl-extensions.html.textile.liquid    |  56 ++
 doc/user/cwl/cwl-run-options.html.textile.liquid   |  94 +++
 doc/user/cwl/cwl-runner.html.textile.liquid        | 253 ++----
 doc/user/cwl/cwl-style.html.textile.liquid         |   2 +
 .../examples/crunch-examples.html.textile.liquid   |   2 +
 .../getting_started/workbench.html.textile.liquid  |   4 +-
 .../reference/job-pipeline-ref.html.textile.liquid |   2 +
 doc/user/topics/arv-copy.html.textile.liquid       |   3 +
 doc/user/topics/arv-docker.html.textile.liquid     |  12 +-
 doc/user/topics/run-command.html.textile.liquid    |   2 +
 ...nning-pipeline-command-line.html.textile.liquid |   2 +-
 .../running-external-program.html.textile.liquid   |   2 +-
 ...tutorial-pipeline-workbench.html.textile.liquid |  35 -
 .../tutorial-submit-job.html.textile.liquid        |   2 +-
 ...tutorial-workflow-workbench.html.textile.liquid |  27 +
 .../writing-cwl-workflow.html.textile.liquid}      | 284 +++----
 sdk/cli/bin/crunch-job                             |   6 +-
 sdk/cli/test/test_arv-keep-get.rb                  |   8 +
 sdk/cli/test/test_arv-keep-put.rb                  |   8 +-
 sdk/cwl/arvados_cwl/__init__.py                    | 104 ++-
 sdk/cwl/arvados_cwl/arvcontainer.py                | 163 ++--
 sdk/cwl/arvados_cwl/arvdocker.py                   |  73 +-
 sdk/cwl/arvados_cwl/arvjob.py                      |  30 +-
 sdk/cwl/arvados_cwl/arvworkflow.py                 |  45 +-
 sdk/cwl/arvados_cwl/crunch_script.py               |   6 +-
 sdk/cwl/arvados_cwl/done.py                        |   3 +
 sdk/cwl/arvados_cwl/fsaccess.py                    |  84 ++
 sdk/cwl/arvados_cwl/pathmapper.py                  |  27 +-
 sdk/cwl/arvados_cwl/runner.py                      |  40 +-
 sdk/cwl/setup.py                                   |  11 +-
 sdk/cwl/tests/test_container.py                    |  92 +--
 sdk/cwl/tests/test_job.py                          |  38 +-
 sdk/cwl/tests/test_submit.py                       | 471 ++++++++++-
 sdk/cwl/tests/test_urljoin.py                      |  56 ++
 sdk/cwl/tests/wf/expect_arvworkflow.cwl            |  24 +
 sdk/cwl/tests/wf/expect_packed.cwl                 |  43 +-
 sdk/cwl/tests/wf/scatter2_subwf.cwl                |  50 +-
 .../wf/{submit_wf.cwl => submit_keepref_wf.cwl}    |  13 +-
 sdk/dev-jobs.dockerfile                            |  38 +
 sdk/go/arvados/client.go                           |  97 ++-
 sdk/go/arvados/log.go                              |  25 +
 sdk/go/arvadosclient/arvadosclient.go              |  43 +-
 sdk/go/config/load.go                              |   5 +
 sdk/go/crunchrunner/crunchrunner.go                |  20 -
 sdk/go/ctxlog/log.go                               |  59 ++
 sdk/go/httpserver/request_limiter.go               |  26 +-
 sdk/go/keepclient/keepclient.go                    |   3 +-
 sdk/go/logger/logger.go                            | 204 -----
 sdk/go/logger/util.go                              |  20 -
 sdk/go/stats/duration.go                           |  35 +
 sdk/go/stats/duration_test.go                      |  23 +
 sdk/go/util/util.go                                |  34 -
 sdk/python/arvados/_version.py                     |   3 +
 sdk/python/arvados/arvfile.py                      |  10 +-
 sdk/python/arvados/collection.py                   |  13 +-
 sdk/python/arvados/commands/arv_copy.py            |   4 +
 sdk/python/arvados/commands/keepdocker.py          |   5 +
 sdk/python/arvados/commands/ls.py                  |   6 +
 sdk/python/arvados/commands/put.py                 | 496 ++++++++----
 sdk/python/arvados/commands/run.py                 |  36 +-
 sdk/python/arvados/commands/ws.py                  |   4 +
 sdk/python/arvados/keep.py                         | 138 ++--
 sdk/python/arvados/util.py                         |   2 +
 sdk/python/bin/arv-get                             |   5 +
 sdk/python/bin/arv-normalize                       |  14 +-
 sdk/python/setup.py                                |   2 +-
 sdk/python/tests/arvados_testutil.py               |  13 +
 sdk/python/tests/nginx.conf                        |  16 +
 sdk/python/tests/run_test_server.py                |  71 +-
 sdk/python/tests/test_arv_copy.py                  |  29 +
 sdk/python/tests/test_arv_keepdocker.py            |  30 +
 sdk/python/tests/test_arv_ls.py                    |  15 +-
 sdk/python/tests/test_arv_normalize.py             |  27 +
 sdk/python/tests/test_arv_put.py                   | 165 +++-
 sdk/python/tests/test_arv_run.py                   |  29 +
 sdk/python/tests/test_arv_ws.py                    |  15 +
 sdk/python/tests/test_arvfile.py                   |  21 +
 sdk/python/tests/test_collections.py               |   2 +
 sdk/python/tests/test_events.py                    |  86 +-
 sdk/python/tests/test_keep_client.py               |  76 +-
 services/api/Gemfile                               |  24 +-
 services/api/Gemfile.lock                          | 239 +++---
 .../api/app/controllers/application_controller.rb  |  18 +-
 .../arvados/v1/collections_controller.rb           |   4 +-
 .../controllers/arvados/v1/groups_controller.rb    |   9 +-
 .../controllers/arvados/v1/schema_controller.rb    |  22 +-
 .../arvados/v1/user_agreements_controller.rb       |   3 +-
 .../app/controllers/arvados/v1/users_controller.rb |   2 +-
 .../arvados/v1/virtual_machines_controller.rb      |   2 +-
 .../api/app/controllers/database_controller.rb     |   2 +-
 services/api/app/middlewares/arvados_api_token.rb  |   2 +-
 services/api/app/models/arvados_model.rb           |  16 +-
 services/api/app/models/blob.rb                    |   4 +-
 services/api/app/models/collection.rb              |  15 +-
 services/api/app/models/commit_ancestor.rb         |   6 +-
 services/api/app/models/container.rb               |   2 +-
 services/api/app/models/job.rb                     |  46 +-
 services/api/app/models/link.rb                    |   1 -
 services/api/app/models/log.rb                     |   1 -
 services/api/app/models/node.rb                    |   6 +-
 services/api/app/models/pipeline_instance.rb       |  14 +
 services/api/app/models/repository.rb              |   2 +-
 services/api/app/models/user.rb                    |   4 +-
 services/api/config/application.default.yml        |   1 +
 services/api/config/boot.rb                        |   2 +-
 services/api/config/initializers/inflections.rb    |   8 +-
 services/api/config/initializers/load_config.rb    |   4 +-
 .../api/config/initializers/preload_all_models.rb  |   2 +-
 .../20161213172944_full_text_search_indexes.rb     |  33 +
 services/api/db/structure.sql                      |  18 +-
 services/api/lib/create_superuser_token.rb         |  15 +-
 services/api/lib/crunch_dispatch.rb                |  10 +-
 services/api/lib/current_api_client.rb             |  10 +-
 services/api/lib/eventbus.rb                       |  35 +-
 services/api/lib/load_param.rb                     |   4 +-
 services/api/lib/salvage_collection.rb             |   2 +-
 services/api/lib/tasks/config_dump.rake            |   6 +
 services/api/script/arvados-git-sync.rb            |   4 +-
 .../api/script/migrate-gitolite-to-uuid-storage.rb |   4 +-
 services/api/test/factories/user.rb                |   2 +-
 services/api/test/fixtures/container_requests.yml  |   2 +
 services/api/test/fixtures/pipeline_templates.yml  |  22 +
 services/api/test/fixtures/workflows.yml           |  19 +
 .../api_client_authorizations_controller_test.rb   |   2 +-
 .../arvados/v1/collections_controller_test.rb      |   8 +-
 .../api/test/functional/arvados/v1/filters_test.rb |   6 +-
 .../arvados/v1/groups_controller_test.rb           |  19 +-
 .../functional/arvados/v1/jobs_controller_test.rb  |   2 +-
 .../functional/arvados/v1/links_controller_test.rb |   4 +-
 .../arvados/v1/repositories_controller_test.rb     |  13 +-
 .../arvados/v1/schema_controller_test.rb           |   2 +-
 .../functional/arvados/v1/users_controller_test.rb |   4 +-
 .../arvados/v1/virtual_machines_controller_test.rb |   1 -
 services/api/test/helpers/users_test_helper.rb     |   2 +-
 .../api/test/integration/collections_api_test.rb   |  14 +-
 .../integration/collections_performance_test.rb    |   6 +-
 services/api/test/integration/cross_origin_test.rb |   2 +-
 .../api/test/integration/database_reset_test.rb    |   9 +-
 .../api/test/integration/user_sessions_test.rb     |   2 +-
 services/api/test/integration/websocket_test.rb    | 136 ++--
 services/api/test/test_helper.rb                   |  32 +-
 services/api/test/unit/app_version_test.rb         |   7 +-
 services/api/test/unit/authorized_key_test.rb      |   2 +-
 .../api/test/unit/collection_performance_test.rb   |   5 +-
 services/api/test/unit/collection_test.rb          |  16 +-
 services/api/test/unit/commit_test.rb              |  18 +-
 services/api/test/unit/container_request_test.rb   |   7 +
 services/api/test/unit/container_test.rb           |  55 +-
 .../api/test/unit/create_superuser_token_test.rb   |  21 +-
 services/api/test/unit/fail_jobs_test.rb           |   4 +-
 services/api/test/unit/job_test.rb                 |   6 +-
 services/api/test/unit/log_test.rb                 |   2 +-
 services/api/test/unit/node_test.rb                |   2 +-
 services/api/test/unit/owner_test.rb               |   3 +-
 services/api/test/unit/permission_test.rb          |  14 +-
 services/api/test/unit/pipeline_instance_test.rb   |   9 +-
 services/api/test/unit/salvage_collection_test.rb  |  12 +-
 services/api/test/unit/user_test.rb                |   1 -
 services/api/test/websocket_runner.rb              |  53 --
 .../crunch-dispatch-slurm/crunch-dispatch-slurm.go |  14 +-
 .../crunch-dispatch-slurm_test.go                  |   5 +-
 services/crunch-dispatch-slurm/squeue.go           |  42 +-
 services/crunch-run/crunchrun.go                   |  28 +-
 services/crunch-run/crunchrun_test.go              |  34 +-
 services/crunchstat/crunchstat.go                  |  36 +
 services/crunchstat/crunchstat_test.go             | 150 ++++
 services/datamanager/collection/collection.go      | 408 ----------
 services/datamanager/collection/collection_test.go | 202 -----
 services/datamanager/collection/testing.go         |  61 --
 services/datamanager/datamanager.go                | 220 -----
 services/datamanager/datamanager_test.go           | 732 -----------------
 services/datamanager/experimental/datamanager.py   | 887 ---------------------
 .../datamanager/experimental/datamanager_test.py   |  41 -
 services/datamanager/keep/keep.go                  | 551 -------------
 services/datamanager/keep/keep_test.go             | 278 -------
 services/datamanager/loggerutil/loggerutil.go      |  52 --
 services/datamanager/summary/canonical_string.go   |  30 -
 services/datamanager/summary/file.go               | 115 ---
 services/datamanager/summary/pull_list.go          | 215 -----
 services/datamanager/summary/pull_list_test.go     | 272 -------
 services/datamanager/summary/summary.go            | 277 -------
 services/datamanager/summary/summary_test.go       | 220 -----
 services/datamanager/summary/trash_list.go         |  62 --
 services/datamanager/summary/trash_list_test.go    |  76 --
 services/fuse/arvados_fuse/__init__.py             |  30 +-
 services/fuse/arvados_fuse/_version.py             |   3 +
 services/fuse/arvados_fuse/command.py              |   6 +
 services/fuse/setup.py                             |   3 +-
 services/fuse/tests/mount_test_base.py             |   2 +
 services/fuse/tests/test_command_args.py           |  16 +
 services/fuse/tests/test_retry.py                  |   2 +-
 services/keep-balance/balance.go                   |   2 +-
 services/keep-balance/keep-balance.service         |   2 +-
 services/keep-balance/main.go                      |   7 +-
 services/keep-balance/usage.go                     |   2 +-
 services/keepstore/azure_blob_volume.go            | 125 ++-
 services/keepstore/azure_blob_volume_test.go       |  64 ++
 services/keepstore/handlers.go                     |  42 +-
 services/keepstore/keepstore.go                    |   7 +-
 services/keepstore/logging_router.go               |  22 +-
 services/keepstore/s3_volume_test.go               | 117 ++-
 services/nodemanager/arvnodeman/_version.py        |   3 +
 .../arvnodeman/computenode/driver/gce.py           |   3 +-
 services/nodemanager/arvnodeman/launcher.py        |  10 +-
 services/nodemanager/setup.py                      |   1 +
 services/nodemanager/tests/test_arguments.py       |  27 +
 services/nodemanager/tests/testutil.py             |  17 +-
 .../keepproxy.service => ws/arvados-ws.service}    |   6 +-
 services/ws/config.go                              |  40 +
 services/ws/doc.go                                 |  55 ++
 services/ws/event.go                               |  65 ++
 services/ws/event_source.go                        | 216 +++++
 services/ws/handler.go                             | 235 ++++++
 services/ws/main.go                                |  67 ++
 services/ws/permission.go                          |  94 +++
 services/ws/router.go                              | 140 ++++
 services/ws/session.go                             |  33 +
 services/ws/session_v0.go                          | 295 +++++++
 services/ws/session_v1.go                          |  14 +
 tools/arvbash/arvbash.sh                           | 124 +++
 tools/arvbox/lib/arvbox/docker/Dockerfile.base     |   2 +
 tools/arvbox/lib/arvbox/docker/common.sh           |   9 +-
 tools/arvbox/lib/arvbox/docker/createusers.sh      |   4 +-
 .../lib/arvbox/docker/service/api/run-service      |   4 +-
 278 files changed, 6222 insertions(+), 6874 deletions(-)
 copy tools/crunchstat-summary/tests/__init__.py => apps/workbench/app/views/application/_extra_tab_line_buttons.html.erb (100%)
 create mode 100644 apps/workbench/app/views/container_requests/_extra_tab_line_buttons.html.erb
 create mode 100644 apps/workbench/app/views/projects/_show_processes.html.erb
 create mode 100644 apps/workbench/lib/tasks/config_dump.rake
 create mode 100644 apps/workbench/test/diagnostics/container_request_test.rb
 create mode 100755 build/build-dev-docker-jobs-image.sh
 create mode 100644 doc/_includes/_container_scheduling_parameters.liquid
 create mode 100644 doc/_includes/_what_is_cwl.liquid
 create mode 100644 doc/install/install-ws.html.textile.liquid
 create mode 100644 doc/user/cwl/cwl-extensions.html.textile.liquid
 create mode 100644 doc/user/cwl/cwl-run-options.html.textile.liquid
 delete mode 100644 doc/user/tutorials/tutorial-pipeline-workbench.html.textile.liquid
 create mode 100644 doc/user/tutorials/tutorial-workflow-workbench.html.textile.liquid
 copy doc/user/{cwl/cwl-runner.html.textile.liquid => tutorials/writing-cwl-workflow.html.textile.liquid} (50%)
 create mode 100644 sdk/cwl/tests/test_urljoin.py
 create mode 100644 sdk/cwl/tests/wf/expect_arvworkflow.cwl
 copy sdk/cwl/tests/wf/{submit_wf.cwl => submit_keepref_wf.cwl} (70%)
 create mode 100644 sdk/dev-jobs.dockerfile
 create mode 100644 sdk/go/arvados/log.go
 create mode 100644 sdk/go/ctxlog/log.go
 delete mode 100644 sdk/go/logger/logger.go
 delete mode 100644 sdk/go/logger/util.go
 create mode 100644 sdk/go/stats/duration.go
 create mode 100644 sdk/go/stats/duration_test.go
 delete mode 100644 sdk/go/util/util.go
 create mode 100644 sdk/python/arvados/_version.py
 create mode 100644 sdk/python/tests/test_arv_copy.py
 create mode 100644 sdk/python/tests/test_arv_keepdocker.py
 create mode 100644 sdk/python/tests/test_arv_normalize.py
 create mode 100644 sdk/python/tests/test_arv_run.py
 create mode 100644 services/api/db/migrate/20161213172944_full_text_search_indexes.rb
 create mode 100644 services/api/lib/tasks/config_dump.rake
 delete mode 100644 services/api/test/websocket_runner.rb
 delete mode 100644 services/datamanager/collection/collection.go
 delete mode 100644 services/datamanager/collection/collection_test.go
 delete mode 100644 services/datamanager/collection/testing.go
 delete mode 100644 services/datamanager/datamanager.go
 delete mode 100644 services/datamanager/datamanager_test.go
 delete mode 100755 services/datamanager/experimental/datamanager.py
 delete mode 100755 services/datamanager/experimental/datamanager_test.py
 delete mode 100644 services/datamanager/keep/keep.go
 delete mode 100644 services/datamanager/keep/keep_test.go
 delete mode 100644 services/datamanager/loggerutil/loggerutil.go
 delete mode 100644 services/datamanager/summary/canonical_string.go
 delete mode 100644 services/datamanager/summary/file.go
 delete mode 100644 services/datamanager/summary/pull_list.go
 delete mode 100644 services/datamanager/summary/pull_list_test.go
 delete mode 100644 services/datamanager/summary/summary.go
 delete mode 100644 services/datamanager/summary/summary_test.go
 delete mode 100644 services/datamanager/summary/trash_list.go
 delete mode 100644 services/datamanager/summary/trash_list_test.go
 create mode 100644 services/fuse/arvados_fuse/_version.py
 create mode 100644 services/nodemanager/arvnodeman/_version.py
 create mode 100644 services/nodemanager/tests/test_arguments.py
 copy services/{keepproxy/keepproxy.service => ws/arvados-ws.service} (55%)
 create mode 100644 services/ws/config.go
 create mode 100644 services/ws/doc.go
 create mode 100644 services/ws/event.go
 create mode 100644 services/ws/event_source.go
 create mode 100644 services/ws/handler.go
 create mode 100644 services/ws/main.go
 create mode 100644 services/ws/permission.go
 create mode 100644 services/ws/router.go
 create mode 100644 services/ws/session.go
 create mode 100644 services/ws/session_v0.go
 create mode 100644 services/ws/session_v1.go
 create mode 100755 tools/arvbash/arvbash.sh

  discards  ba798321b74ea633893262c7277411b1c45a806d (commit)
  discards  d283cf433c7155668cd9b4917ad6ec2c7fafef10 (commit)
  discards  932367f5d40de7ea1c633049b8c53204108f43af (commit)
  discards  3f0a5eec2e07139762df154295ca3feb39334bf4 (commit)
  discards  c19f150ac2f8bea28c8978ad5b4deb93b6d0812b (commit)
  discards  2bb65744082ca0009eddac602e463e9358ddfa84 (commit)
  discards  8d837347f1d03322ba69726f381b0d9fa6da34c1 (commit)
  discards  5426beed4dc6111f327ea6c9d4b652fdfad39342 (commit)
  discards  8b6b63339e17f1836621c477143eba4d9d8f6042 (commit)
  discards  3297f77cbaf9c5312e5be0db1d440627d276a2fe (commit)
       via  25c212007d4c6ef14cf730526246bc8876700bb6 (commit)
       via  5627b1bf40d759cef1670afa6875005d9ca7e691 (commit)
       via  31d8056dbcaf236299729694b3e63882cb42dde2 (commit)
       via  42759ae4288f20646ae64bf7d09db26b713d531b (commit)
       via  31084ffe95eddee3469674b6f719e00e94de9b5d (commit)
       via  ea9d53175a0e7670ceb9bbeaf66cd6c89baa09dd (commit)
       via  a166056578bc02193e1a83f79b2477c9ccd98cc2 (commit)
       via  b3f306edf87bf1fe406f11b5c99947d73599f84f (commit)
       via  f82d2a3731310b55420f7dcfe9a7ad28c3b338f1 (commit)
       via  4030410ea30f122acb7e67844b1adcd7ed7107fa (commit)
       via  fabbab6fb71b4733260687cd58a455b16c00948a (commit)
       via  997479d1408139e96ecdb42a60b4f727f814f6c9 (commit)
       via  da2a4d9c13b80066400161cb7638425828de18d3 (commit)
       via  1847f3a94d355eed42e0d6ba7b5f929b7af7d143 (commit)
       via  af967503ee1c446ebed6451462f5ba725bcbbdf7 (commit)
       via  1e19bc12a83dacf4a40d1c0d358aae48b6588a58 (commit)
       via  0b3b1e9d91f06966cbeecd3d4a11e1fb7e8d8434 (commit)
       via  5c7c672a4cd0d8c5bd0e6c5218062214eb5751f3 (commit)
       via  e675daba8125b20e45e0c121f1fdcac85fb4b360 (commit)
       via  91b824a77fe19242de50e838f9f8c4fb30907fa3 (commit)
       via  2ecd4749bc9b3f8be8cf41864948108068e187d8 (commit)
       via  8d4ec10fc26d93d282845c789cd61da79e4b2836 (commit)
       via  692127b79071f419ef39fb4594a4193f8e4a7a37 (commit)
       via  b27f1106beb0fb321ee123501afb5ccf2354a363 (commit)
       via  fe060158c380fe92635cae24a12eb43680021169 (commit)
       via  f6e68adfecb95e42e984951794c96f54166b7f13 (commit)
       via  90633a9dd56502566731991dd4084a57e0366064 (commit)
       via  ec600fb1b5ab89d923e6e19529d568964c4f4137 (commit)
       via  9754971aff036b3532f2e4e4ee88b902f387d69a (commit)
       via  924b783e07028b17cd5403205361e4715f7a212f (commit)
       via  603de36ec435145259feea701acbc6a3cc46f115 (commit)
       via  5bdbbbf5137c6ef12d12362715dfc7ee6568dc93 (commit)
       via  8dc951d7f9a21a2429c38cbb3e119bb382618b95 (commit)
       via  b2cf2b9b857507effb31ec147e378558b5cf17bd (commit)
       via  cc94954f69ed2d26451bae6610b38de260d2252f (commit)
       via  96d90c859cede094d83cbaf5409418e9ab0c2c19 (commit)
       via  4f03b29b3efb42a48c3f397942d5b618b89390eb (commit)
       via  2eb7a28fa7900a005bf48dc40dd1af16d0bc455d (commit)
       via  cafa08eae78c6e29898164f8b5b2fc0127d69f48 (commit)
       via  b96bff759bb71ebb80d7ea33a7b7944eb7c0269f (commit)
       via  ebb2559b3a09636ff687316bbe512e0e8a86b168 (commit)
       via  3beb006fd2c533a192379c9730a3a730c5493b90 (commit)
       via  4115524460e89f36b99f2fb5de1adebd86daaf4a (commit)
       via  680bc629dc473d877218b1ed9351fac4020d4657 (commit)
       via  c1a8e01539932e2f0153cfb2ffc4eaa2c3dc00f1 (commit)
       via  53468cf5e609c4456d1bfd24aeb74c326ff6a8b7 (commit)
       via  5fe2a0ab78c82b67b92434596d554bedda1d4259 (commit)
       via  a092ab09fab941057e5cc44d93886676d542bdd6 (commit)
       via  ad0712ccdb7ad3d01ab4fc0d4f1a15dc7443b18a (commit)
       via  965565ddc62635928a6b043158fd683738961c8c (commit)
       via  697e73b0605b6c182f1051e97ed370d5afa7d954 (commit)
       via  fc390927833d14b6c439db8ea72d3d52b60a5e6d (commit)
       via  ffd4738242c61fa5acd423f927339f836dfb0ffb (commit)
       via  a619c2ce3c6d5bc00b9898dd084ac0e2efc2ee76 (commit)
       via  005cb811d937fe52cee11d76484252ed7167f9a8 (commit)
       via  6a370a002d008dffaf9f47b7db3da47b40e57254 (commit)
       via  dcca309415bc0683f57f38ad65c30b539d80e191 (commit)
       via  28db15c830a8f129283f43682727b470862572d8 (commit)
       via  409d130ddcc4b76def5fa8d61d2584725c61152a (commit)
       via  f987de07f96595851187ed2a4e0212fa0e10e999 (commit)
       via  ba57b6537679889b42693ecd839a94d59c716aaf (commit)
       via  57170c25230cf56c99c5b2cbc795f4599cbda87f (commit)
       via  d0dc273718a2f657643a2b2800d984c7a3a62f78 (commit)
       via  9676ee85d8f8fc64dfd4149cea5999de54e827a7 (commit)
       via  c856cb5095e454c1733bd6f0053e59e2b884d644 (commit)
       via  f3e02106cfc33ffe333af9e303a9e68f3ecfb2e4 (commit)
       via  08e03489e053779f7bbc168677deeebd86d6249c (commit)
       via  7e931b4355800f1715b614e7a01212a1b1791a30 (commit)
       via  cc1dbda8f559ab43f326c77595d4af87e8ca7a33 (commit)
       via  55e9587e140e1621dcd374afcf30ee0aec2c6d24 (commit)
       via  738ecb0cd43e2ae728b04534697198d11d6bd85f (commit)
       via  80d4b6ebb20393507be7ecd0dcf888ebda623a35 (commit)
       via  7df118ca0c58dd65f3ec83e94941976d5073ff45 (commit)
       via  386248b68c309b890f9cb257360a62d28cb8706b (commit)
       via  b94b54c25a57a26925eaf739dcf59a4ff94238ae (commit)
       via  18c3e601c065e5afd526b29e214b497fad04ce32 (commit)
       via  0b898bf7c9337ac0f2385159329d2f3e6a1694ec (commit)
       via  aa94204c3e88f5386d14cb90e3e13a5e9caaf251 (commit)
       via  e1fb30fb49c337c7711e51fa3f6c3c81650b228c (commit)
       via  efb3422f119be36e133ffbd14519c5d6c74addc8 (commit)
       via  c668e7499c3b2a1561389a06910e33112e7d171d (commit)
       via  23cdaa559272388135e1a5c3d1cc64cfe6e422d5 (commit)
       via  49a647b963d16c7035d514ea6a09a11afe3a5d19 (commit)
       via  3da0fb0eef35b665c9c427fa9acf9b932dd45062 (commit)
       via  83a4e42fb15030a9108e76dcf01a1a7d6c14cda5 (commit)
       via  e54cce12bbda235dcaebf3b7565804cd8c296100 (commit)
       via  f2e2487ddba3944d3acd46fae3424a87fc624be9 (commit)
       via  ae9c556899557f64acaa54b339a62c9f5c5966c9 (commit)
       via  d13cc16ebbe287fe81d06c5faa1d15fe588bcf16 (commit)
       via  474ed0b55fcf7f8c9d6c195df829ef9b2ecac798 (commit)
       via  62d8f575a93374a235097b88499fa65eef2f56ec (commit)
       via  ccc1201e103e168b04801b135b662577d7ea475b (commit)
       via  190e6d0b21800dcaec1c5d0b2346d2c2bf43eeea (commit)
       via  50a3cf5df8624618cc00308159fde643dd8d6f28 (commit)
       via  b5af6347690934f0a0fba10b79b6d8dcf2c84243 (commit)
       via  9f2fccd1c01823a762044c8a73e6fa0f7ed9086b (commit)
       via  8e8b3d8dd81e4fd9c910e6739c74998f3b6ed288 (commit)
       via  d070d1e50551b9c84e4705406a435b1b50f84a08 (commit)
       via  3265a76b23fc57ae22ddce95a589c019abce503c (commit)
       via  20d7a8b075490d434b6513eea24e99ff257601e6 (commit)
       via  5646f9476220ef151d1811acb4eff88ebe8ef530 (commit)
       via  ba1ec0f0b59ab871b6e4faf5e8ae87809fdb85b6 (commit)
       via  b9f0177e6a477a518fd5a89156fafde57f2dddf8 (commit)
       via  bdb92619b5f6d920119b8c32c3027cf4b751ed16 (commit)
       via  5d843ab702bd516257dda1a872d45755e5170678 (commit)
       via  c86fec0e51f30b2771c9ae95152f76b438db6542 (commit)
       via  2e104941dbf1e4bf92e0632cadeb946be0595d67 (commit)
       via  8be35986ae62ce39691c4c6d491601012255b1ba (commit)
       via  1c96d4eb740dc4285d9f30ba0ce73499f7b7d59e (commit)
       via  4a71cc82448046d28600d9788f523ece07649e2f (commit)
       via  199da9e541e23ed6648ae0abd0cbd38866d3e85f (commit)
       via  a62e41101a75e01f9b0dd7124eef81714443d8a1 (commit)
       via  47a5c66948792602f657e5e1157bfd172d23c546 (commit)
       via  05f0eefbaa31ef430a6ac71e4b8eb066f195d9df (commit)
       via  0d62edcb9d25bf4dcdb20d8872ea7b438e12fc59 (commit)
       via  13f7a114f9c03b1efa0d6f696a7f6034b6cc2677 (commit)
       via  0514b290f5ff9a2700b599bf6fb19a468a73c3fb (commit)
       via  ae61fc4e1e7c1cbd4695bb3cc715eba5492c2b20 (commit)
       via  e336e28f4ce9c13aad98d059d2befb505bff365b (commit)
       via  6e4f0a8e8cfe7154fe88653c48e1d4980efbdeeb (commit)
       via  feb463839301b0b596089e48a981660365d2c4a7 (commit)
       via  08271aa69aafdc92e2e8f8f25ed7fab078deb993 (commit)
       via  a175a62538e4db86296e49e5412be41e026e73b6 (commit)
       via  b8e3dea8979a7dbbdb62b8ecd47f7094a7f0863c (commit)
       via  177873e861d0f6975832a17cfbb9d1e21acc5cce (commit)
       via  9b0654adfffaac018395de29f6e441b843d46e85 (commit)
       via  8303a85b6c3fed92710a590fa5653557b73439cf (commit)
       via  90de410ff977f3669d33f532adf0cb71ac8ac261 (commit)
       via  ba94fb47b5553b85dad8544a3d8d02dcadc90c91 (commit)
       via  088314afe2987920628b9e921e7de18a2bdd5745 (commit)
       via  9c1a28719df89a68b83cee07e3e0ab87c1712f69 (commit)
       via  3e6ad647c3da4cb77299249d1fa25767dc66b281 (commit)
       via  b0f9d8dcc4cee11e4faed5a6bba593819209d7e2 (commit)
       via  3d30e1a5c2b4edac70628a551ed0a34f7cf3be68 (commit)
       via  ceae525c9b247a5c66094c0a733b62b3038c8fea (commit)
       via  0479c53c53a4a458b2759b067ae2cb928cbbf051 (commit)
       via  f88d5e28703e3de0e02a05df6d472effb03fc6a8 (commit)
       via  4876169ec54cdfe24edd3b17475b6984274b086f (commit)
       via  de78c0abbfdd23deebd1bc6b57a63c745c1cee12 (commit)
       via  bdbcc4024e4320e17634fdfbdeb48a6051b0fccd (commit)
       via  2a1978f10b7dff4f239eb868648f404f070fccc3 (commit)
       via  ed9be4cc10c12051bdb1a65210726ab1d688108c (commit)
       via  24f455da9cb2bf7a3c519912abbc15292a414655 (commit)
       via  cf6a9fc619a6c65d2bccb563c61b8a448334213c (commit)
       via  fee8873d0c5eeec1bd838161357679de1a3fe0cb (commit)
       via  9a9850ac59958f1aa1b5f97ff8479c29d073e964 (commit)
       via  9e06ce4eff850ee428f235501cede643f094cf6d (commit)
       via  b4422bbdb475f689cc46cfc12f037db1e888f521 (commit)
       via  b67039fa8eb94e80482767eb1f8e8f54ac31823e (commit)
       via  0fb93082a34a92699c9be9ed4b1c991dd4003ea1 (commit)
       via  d6d38552e0b39683e76060dba924b1c77c1c5b4d (commit)
       via  2a62b82e96a6f56357e913117e04c36b1ccf7585 (commit)
       via  2ec950c960fa8e95de9593fdf09f40833861c36e (commit)
       via  324ffadbac85457cba901c7c195b8a20a32a8c4d (commit)
       via  2d4b14cf28c71d3aa7e0417a2951806c15e29fb1 (commit)
       via  c494f4c398457c5edbd9b2c3f1a439bf041c7ed2 (commit)
       via  0f361d9a0748e2b470ed5bc73351cb2eaf3e02e3 (commit)
       via  0936c2e7630c0e4316684c5b79965ad7dfaf9fa4 (commit)
       via  0398eff55902b779e8d78434873a4ed846c67b5f (commit)
       via  e49ad3dfe5092d2a5f2371aba4d6005a54af36a0 (commit)
       via  9d1f08198723f64d23473bb0ef1d6e30df1f4a1f (commit)
       via  aaa964ac44f923985d6a6eb40c179f62c13ca8ce (commit)
       via  83ec78f608d67622ccc87b67cc16276a48a0430a (commit)
       via  7ef471d9d0513b0b06cf0007e575f16eda93ec29 (commit)
       via  45dd8543ac140a3326e6a8063bd43bd6c4ad05c8 (commit)
       via  d63601c63f651ab9fe4fefb5a7e8d76bf0495da3 (commit)
       via  8595030d0314e6f88a245e66f90cce0a306b6867 (commit)
       via  df747077737cbcd62d6cfaedf17b1eaa18c1cbf8 (commit)
       via  deac6ece295b9c2049f8c91e1492324a97bf1b01 (commit)
       via  dd2320c6877939365caf79767b5244d86a288437 (commit)
       via  fd717a88835be62ae1b5c4b1ecd74c21cab0e744 (commit)
       via  ebf7f34bfd6d20273f8a5f8fded07c3f0387b39f (commit)
       via  9f0854e394baf712f1fbcf3ebd21af215276c0fb (commit)
       via  131be7089c317f4259d4645f7c1516972b3c5015 (commit)
       via  b9381df7b730762ee7e32a9ab58c6cbf3dcaed89 (commit)
       via  21c1d7b918eb4019a8341f433979333da876218d (commit)
       via  b64a5695c0ec262d02a6e67099d5d076033ca584 (commit)
       via  beeab71df7bda32524c6afe5bf19f435ee3e0ade (commit)
       via  252047244ba1c285a689e13ea0d59effa9d837ee (commit)
       via  85f965a266837c9a2637c1180d8789c7d6dd0944 (commit)
       via  cb6baf8dc12be24ae664335dce29529252ac35df (commit)
       via  49d18afe093301bbb48892e05b2c9c732e038abe (commit)
       via  9f1ce358ac564abf62965cccf2bf3afa3bcfef95 (commit)
       via  d25dedaec8ea386c18b7f61c08a3097ba3c4f26c (commit)
       via  bd6b334c80cea328a51a8612d40ef16bdd6ab2e2 (commit)
       via  6b2481ad7e565cf173c4eeb2df4f13cd095d23ff (commit)
       via  84861876fd077f1892c6419fecfd348d7588747c (commit)
       via  d645da6a5744ad5dc76079d5d630c426a9ce1b8c (commit)
       via  03f812007d8a28d7023dddb6f1fafb72e65ec525 (commit)
       via  9e9190af52e4fc448f623aa2f4dd1fee803d99cd (commit)
       via  2a4fbc88b7a16a059b5eb62bf0a3f1b13ebfc72d (commit)
       via  163fc733dbe7bd13212d7df6a1563edd6d8798f4 (commit)
       via  6448d08b2ebc1d54b05d50c6f27810c6722e81a4 (commit)
       via  2993bc9aea20c2295d1b2b3cbecf3b1f7e06bb17 (commit)
       via  87d84e41215333729a436726ee28068eb430ff38 (commit)
       via  9be8a468534acaf324e9c18b831677f0ae067e60 (commit)
       via  b0cbc39917df391c0f0e7f31d9d46c5cc9070520 (commit)
       via  0250713cc4e6d7fdf41fd7c0a99c6307e2eac72e (commit)
       via  0d2bed2452f0840612be0b1bc792ffeff576d065 (commit)
       via  4d164d025cd1e8c5c719b1e0f670e6cb10a6fe5e (commit)
       via  66622dea0bb8725d0cbec0976175d11162b17815 (commit)
       via  87143451d4c6535576fe7232729ae9ce93a26d30 (commit)
       via  e1b133b13f9ac50a87051d07c36a3904d6f01028 (commit)
       via  0f1fca27f3b4b40ff8f6be729e12f2feeba05f8f (commit)
       via  cc0cd658d3db6820fba9daf380da4fa177b38f5c (commit)
       via  44702d2cdc6f6f76c16d9d5da9ae3225ab07de2f (commit)
       via  15aca78766bda903480e327340d67d3d882ee69f (commit)
       via  5f38e62616773fcc97d795d1dd707c7fce801f2a (commit)
       via  128766dfc5826eafb5768d49461019dee980baa4 (commit)
       via  1a8d456e6e8b7026dfe1c1b1176e8d46f9f374e7 (commit)
       via  e64e03d71d1ad9c4ed9354fce55be7af17b4a56e (commit)
       via  2b3af1807efa6bc4b3aaa298c1e24998d8ddd1c5 (commit)
       via  79e63a733c48b04d7c9b6bcc6120af72b3f14641 (commit)
       via  8cd17455f6cd86df7d9f9e66a24437aab25f0380 (commit)
       via  b29cc280e5220c7de3d24c3acc687be88bbcb29b (commit)
       via  f198e6126e38a30288763e8720f3dee1b4805677 (commit)
       via  2eaa77dc327c024f2faa3fbd322e7054454b6442 (commit)
       via  277ad30ef4824ab6363ba24f10f62d9fb6544ad7 (commit)
       via  515e3f5c3dac3076217bd59545d01604008c01e6 (commit)
       via  5646a899f667ee14efc32e9db84c72c0938ac6dc (commit)
       via  b9e5c8b32858338850da3e12ce27570b828898b3 (commit)
       via  bde488e7eff0e9a94cbf9709d28de13603857a3d (commit)
       via  dfd9492ee371ce86f7b4543106eb5060bc98928c (commit)
       via  dcc80dc5b02e46170400d42ca72672cceff03ba2 (commit)
       via  b5d3273b5aa503b22fdbeab7f8979e720e30c119 (commit)
       via  7a76d3b2fc40c41e2d028daa0ee150b47421f0c5 (commit)
       via  8735f2aa77b9e3c51449738e429399e4501ec94e (commit)
       via  03406083ed63e5a0c118216e3e33fc8823c808a7 (commit)
       via  7bf6588ce6589a194df2c7f45b9a443025c2ff67 (commit)
       via  d71a3ed8a91b7491df1f675389e1038d1a781e8e (commit)
       via  e675118bd2b28ec40833d06ea384b6f1c78f3039 (commit)
       via  267898c1b23b78d433ef01ddd2da8a444616e088 (commit)
       via  a12d68dd2e2646beb4ae68e4dd0825272e279508 (commit)
       via  b738c7e7357a143dade94dc5a1bad2b69bac2b27 (commit)
       via  a8eec5a3443447ad7a31bd286ae7beabb8ca9e9d (commit)
       via  8f39c027e4895a8d872093c3dd16aa51b26a3731 (commit)
       via  e4664336c420836bf26f423faf2af9316302da93 (commit)
       via  16942303133cb4e6be76d4d33a211d1e0ce2ea38 (commit)
       via  52f9f7b3cf35efb7e8d1189b80f9b0f7afe0e111 (commit)
       via  1bb30a981efa038bf07f139f996eb9d77749fced (commit)
       via  1d45a45d1a1ebb0c02b4a9dd7ece73a55a6b24db (commit)
       via  92fbda579013213b6f0d101f4fee71d149f3cb02 (commit)
       via  f17da3a5f54ccaad3ec4f38dedac8b6c50a5cb0a (commit)
       via  86f04235021d84afa0d28d105111422e0dd15738 (commit)
       via  7c2b38632ae2af8a2f0f5c8fa2e55523220a3335 (commit)
       via  8c014223e42683d308798475c021bad7a794e998 (commit)
       via  13341931986ffc0cef740f0422fe482e14437b48 (commit)
       via  4f678d4c1a5aa2aec73e0145e81c2629dee6689f (commit)
       via  239115f5ff0bc2c82fe7d7be78cab1752cfba372 (commit)
       via  d13a369065b4e72047c8c267d6ceaa5c84d50c3d (commit)
       via  064d34b61f3c3102ec7bc66d7d40867acfc6464c (commit)
       via  a983bbeec3db12156cc96741034ffe8d4053866b (commit)
       via  adda93976055fde37e92fa3fde7c08f529687132 (commit)
       via  65ab86d8af08548d0f264dfc7f462fba0880ea7e (commit)
       via  15635ff9fa2c964fb45467c9846ed92f7f6388b9 (commit)
       via  e2598332f9ecd40ab0dfd025bd1e5eba02ad8673 (commit)
       via  0e1522f8e0cbe5d1626a7f66dc4c28b7b1bf0efc (commit)
       via  2f6b00cc2a8765e9f8e07f98239f8f1f06887e2e (commit)
       via  e4a51416586f73593ac68bf0d2a74c53a4875f7e (commit)
       via  81ccd9264d0742ba1bf0b9dfbc31ff4f15929f3e (commit)
       via  6f461f4d0a996da85140982846a5d5c10ccfaae4 (commit)
       via  9c3cc0f61751720cfdea62717934746d1aa32b72 (commit)
       via  09a2e88c51e5432e607f2a38466e55b4ba15e887 (commit)
       via  2225be2cb92613495450528ba24a9ca14f232748 (commit)
       via  726becee14c0f4aaa1b0f72fe33a16ee1de7ccd4 (commit)
       via  e41abf0cefe61a69a5dac27647066116eba5af96 (commit)
       via  50128b53da4003912635b03fb27b5be2c5beaca1 (commit)
       via  0d2d039368f65490e9479bd7500a1f8bdf30849c (commit)
       via  fd7db907627aac75dae62430b6f2fa948719a3af (commit)
       via  f3c31e7c71f076f5feafbb3f14e210f4d0de9012 (commit)
       via  372a67d4364d4776aaa8a5ae9a4dd0ac16a0c524 (commit)
       via  185bc33b57a164463a7b67fca84b7596f6f79ad3 (commit)
       via  29356d0c02566aa33b3dbb9513dc701bad8fd16b (commit)
       via  161a519439dcad4d77ca400ec48bb58cb685b54a (commit)
       via  b0ba939812720869fca0a75b07d42518d4953345 (commit)
       via  05666b170533c79800bea1d472c284e23c9ec5e0 (commit)
       via  88ab51c83676a75efbb7b83e7d17927816ecaac4 (commit)
       via  74d5bfb293b2acf76d639df12ff8769bc333a5f2 (commit)
       via  3c1b51391b320539eb4cfbc02ea9e9363df1b370 (commit)
       via  53d8d85b53e445ffb8c16eed86145adee2ff9e37 (commit)
       via  261b9d42a367704e4815f3d59565467b98853787 (commit)
       via  c52c3788fbbf161db40118261c4cfff52ebf8ceb (commit)
       via  5413abe433a089f11f7ea595073a6a20ffa371de (commit)
       via  bfabb2a8fd5fc3914035a7e2be6bd29d14fc7850 (commit)
       via  a6d6a57a908b1cac8ebcc5bc4261b7c906d249a4 (commit)
       via  259252b7b9418c931e59d67257e50632c83261c5 (commit)
       via  1a17734f7264bc74463e1e6fe115cdad6ec4c521 (commit)
       via  9f53e085c98249ba79d85ba59e6f1ca624fede10 (commit)
       via  d3a6d626ab4534865a14e8a34295a65e92036f37 (commit)
       via  c40265a873d73f03a9ca077f18fe305d883fb4a5 (commit)
       via  ec5ec8c10756217482930b0ad763ff174b7843fd (commit)
       via  f675fb2c202516021b961b5aa2de4528ba9f0d1f (commit)
       via  d53262e8e07785a9d2566966ee41ab8949ef1962 (commit)
       via  a4762b52738e12c39d93c14501a2f62463b05d07 (commit)
       via  5fe0d5e7496fad7bd1c4bab0e5ca5f348c0eec63 (commit)
       via  a9a677e1655c461e742e46cc3c239f8605f4fc6b (commit)
       via  8668135855b400e7f6047ecacd9cfa27fed723f7 (commit)
       via  17b7582b6116a4891a27769ee06f9a604bbabdd7 (commit)
       via  dfb995ab9ea0f1d8808c812870db717164ac95f4 (commit)
       via  567269bca35ce82045643f86d38992f45d75f435 (commit)
       via  8e37378b2955346c2b4a3c1e38fcdfb2e74b7e07 (commit)
       via  bc4dd2d01cda24a71f95b62ae1fa72aa9fb1226d (commit)
       via  5ffb79040668114c58bf35c3e18a8302b8d94445 (commit)
       via  d6b6b39bfe67926490506125c88f3567e45e7dcc (commit)
       via  7ae5533a074d80882171b33f7b659c9bcace1bd3 (commit)
       via  0c6cbd8a07e31decd703ef7fd9eca591e5661c32 (commit)
       via  f6f8feeada332a55d1a966e9f4a240d99dc58b55 (commit)
       via  5a420beeb6c64efc3ca0ef13d4ab9ac6c654c3ab (commit)
       via  6361d996c7a2c7d7648abfcf1699aa989e552f22 (commit)
       via  3e39ed33427a0c3000ed41b4826fcfa182934f71 (commit)
       via  e12c0414039f7e818e31aa4765a5e69666333069 (commit)
       via  f224b7ff4c38027309292a01516cd1df9f158a3e (commit)
       via  53b116a7dac30b01f4080ea2832a68e7b885db51 (commit)
       via  2a4aae5d6b865e959b97386b84386358e56ebd50 (commit)
       via  bbf8780255b9c04d0aaa95ef055cb8e777df11be (commit)
       via  87363153b74c9137b6113a5c62da475e02908d9a (commit)
       via  54aa46e52ff46fa667ec333e6bbaa00e0382f6f4 (commit)
       via  0f2a62815c97a47b610b76a748a7d092c89e3e7b (commit)
       via  83f085a0c405695d9840a0542eb9746e7b5d3f6f (commit)
       via  f1c316086c32a0c19cfbf4ac7bb122d3e8cd049b (commit)
       via  0040a5a5b2e82f20641278584ecae835c1c537d3 (commit)
       via  da44904bb64303db2ae01aa9978188c20d453445 (commit)
       via  f517492fccb7cec138621cd0e710668877be57ce (commit)
       via  104b2b5a46844e94a37c332b4ddd5a861dd8d63d (commit)
       via  dcb82d1101219a76df671a4f61738b764841d8dd (commit)
       via  f9eb135e4420352198729534f115f233cda8c261 (commit)
       via  39b1824cff7cae632a19dbe9c011b8b5d8fb9375 (commit)
       via  219daa3b227f147cb628a27b823b9b4e1f8d32b1 (commit)
       via  6e2b2d15e8c3b7926cd7b300660698fa23644efc (commit)
       via  7cb536fa58d8cc837b4cb59680c7355a1687648b (commit)
       via  1e094e23db422cabe013ecbf7a0b465c4b096e12 (commit)
       via  2dec79b036796df75885abf4e1a977958f9c541d (commit)
       via  a3d45597b1f4ea9443d35370ebfa7925fdd5ce90 (commit)
       via  3885bc2e043ce123929acceaaa8dbbf20dbb8c12 (commit)
       via  3dec7045b24acdd53dc054bddcfd4c7f77739f00 (commit)
       via  845d6e6521b284a111534447919a6bc594573ee1 (commit)
       via  391a1d8378b4bc6b17b71904b3d6494160b51627 (commit)
       via  72912c6b25fcb10c0acc540daf4f8a25d802784b (commit)
       via  8886788e82b7e45c9211f6bf3a23c601ed0b88c1 (commit)
       via  279db7d614a25c5e81c6efda5c8950988682974a (commit)
       via  0b228d13b944b4b94165bf22a8f796070bd711bf (commit)
       via  014f72fcdac2b26f9f2bbf257707eb59c676eebb (commit)
       via  1671eb078bc4d254ebdfe5ac8dd40c83b371e8ac (commit)
       via  554350245276ee082417cdcfcb8fd3f4f593e00f (commit)
       via  c2f6922a1997ca73d46866f03474a23c76c7afa5 (commit)
       via  450cf2524ff41b2a0fcea09e2e6ccbf3bdbf78ed (commit)
       via  c632b87902785c4bbc5242b095e53bcf657f6aae (commit)
       via  61925eaac13ef601879178d6343de9f9714f3da1 (commit)
       via  c6b3743bae761b8802cf7e016e54833d833ba9f7 (commit)
       via  722670d1113e1af551d8470841a38d8d9218b4e8 (commit)
       via  2bb3fb59369abd48211a872ca1a8e49cb70be5f3 (commit)
       via  e34688e4a78595aaabe7307f0184df84ff703c6f (commit)
       via  b8a539e3a0803083b1fcbb23755fc12cffff6f31 (commit)
       via  2e9514e54e31bb37c438cf5d611d49a7c15235b4 (commit)
       via  fd308c814745d9c4eed5c3f79b44b9f9142df28a (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (ba798321b74ea633893262c7277411b1c45a806d)
            \
             N -- N -- N (25c212007d4c6ef14cf730526246bc8876700bb6)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 25c212007d4c6ef14cf730526246bc8876700bb6
Author: Tom Clegg <tom at curoverse.com>
Date:   Thu Dec 29 02:47:40 2016 -0500

    8345: Build python27-python-contextlib2 for centos6.

diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh
index c007da9..c95df60 100755
--- a/build/run-build-packages.sh
+++ b/build/run-build-packages.sh
@@ -157,7 +157,7 @@ case "$TARGET" in
             oauth2client==1.5.2 pyasn1==0.1.7 pyasn1-modules==0.0.5 \
             rsa uritemplate httplib2 ws4py pykka six  \
             ciso8601 pycrypto backports.ssl_match_hostname 'pycurl<7.21.5' \
-            python-daemon 'llfuse>=1.0' 'pbr<1.0' pyyaml \
+            python-daemon 'llfuse>=1.0' 'pbr<1.0' pyyaml contextlib2 \
             'rdflib>=4.2.0' shellescape mistune typing avro requests \
             isodate pyparsing sparqlwrapper html5lib==0.9999999 keepalive \
             ruamel.ordereddict cachecontrol 'pathlib2>=2.1.0')

commit 5627b1bf40d759cef1670afa6875005d9ca7e691
Author: Tom Clegg <tom at curoverse.com>
Date:   Mon Apr 18 12:40:21 2016 -0400

    8345: Upgrade to llfuse 1.0

diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh
index 08b7e21..c007da9 100755
--- a/build/run-build-packages.sh
+++ b/build/run-build-packages.sh
@@ -105,8 +105,8 @@ case "$TARGET" in
         FORMAT=deb
         PYTHON_BACKPORTS=(python-gflags==2.0 google-api-python-client==1.4.2 \
             oauth2client==1.5.2 pyasn1==0.1.7 pyasn1-modules==0.0.5 \
-            rsa uritemplate httplib2 ws4py pykka six  \
-            ciso8601 pycrypto backports.ssl_match_hostname llfuse==0.41.1 \
+            rsa uritemplate httplib2 ws4py pykka six \
+            ciso8601 pycrypto backports.ssl_match_hostname 'llfuse>=1.0' \
             'pycurl<7.21.5' contextlib2 pyyaml 'rdflib>=4.2.0' \
             shellescape mistune typing avro ruamel.ordereddict
             cachecontrol requests 'pathlib2>=2.1.0')
@@ -116,8 +116,8 @@ case "$TARGET" in
         FORMAT=deb
         PYTHON_BACKPORTS=(python-gflags==2.0 google-api-python-client==1.4.2 \
             oauth2client==1.5.2 pyasn1==0.1.7 pyasn1-modules==0.0.5 \
-            rsa uritemplate httplib2 ws4py pykka six  \
-            ciso8601 pycrypto backports.ssl_match_hostname llfuse==0.41.1 \
+            rsa uritemplate httplib2 ws4py pykka six \
+            ciso8601 pycrypto backports.ssl_match_hostname 'llfuse>=1.0' \
             'pycurl<7.21.5' pyyaml 'rdflib>=4.2.0' \
             shellescape mistune typing avro ruamel.ordereddict
             cachecontrol 'pathlib2>=2.1.0')
@@ -127,8 +127,8 @@ case "$TARGET" in
         FORMAT=deb
         PYTHON_BACKPORTS=(python-gflags==2.0 google-api-python-client==1.4.2 \
             oauth2client==1.5.2 pyasn1==0.1.7 pyasn1-modules==0.0.5 \
-            rsa uritemplate httplib2 ws4py pykka six  \
-            ciso8601 pycrypto backports.ssl_match_hostname llfuse==0.41.1 \
+            rsa uritemplate httplib2 ws4py pykka six \
+            ciso8601 pycrypto backports.ssl_match_hostname 'llfuse>=1.0' \
             contextlib2 'pycurl<7.21.5' pyyaml 'rdflib>=4.2.0' \
             shellescape mistune typing avro isodate ruamel.ordereddict
             cachecontrol requests 'pathlib2>=2.1.0')
@@ -136,7 +136,7 @@ case "$TARGET" in
         ;;
     ubuntu1404)
         FORMAT=deb
-        PYTHON_BACKPORTS=(pyasn1==0.1.7 pyasn1-modules==0.0.5 llfuse==0.41.1 ciso8601 \
+        PYTHON_BACKPORTS=(pyasn1==0.1.7 pyasn1-modules==0.0.5 'llfuse>=1.0' ciso8601 \
             google-api-python-client==1.4.2 six uritemplate oauth2client==1.5.2 httplib2 \
             rsa 'pycurl<7.21.5' backports.ssl_match_hostname pyyaml 'rdflib>=4.2.0' \
             shellescape mistune typing avro ruamel.ordereddict
@@ -157,7 +157,7 @@ case "$TARGET" in
             oauth2client==1.5.2 pyasn1==0.1.7 pyasn1-modules==0.0.5 \
             rsa uritemplate httplib2 ws4py pykka six  \
             ciso8601 pycrypto backports.ssl_match_hostname 'pycurl<7.21.5' \
-            python-daemon llfuse==0.41.1 'pbr<1.0' pyyaml \
+            python-daemon 'llfuse>=1.0' 'pbr<1.0' pyyaml \
             'rdflib>=4.2.0' shellescape mistune typing avro requests \
             isodate pyparsing sparqlwrapper html5lib==0.9999999 keepalive \
             ruamel.ordereddict cachecontrol 'pathlib2>=2.1.0')
diff --git a/build/run-library.sh b/build/run-library.sh
index 541e684..01b7c2c 100755
--- a/build/run-library.sh
+++ b/build/run-library.sh
@@ -306,7 +306,7 @@ fpm_build () {
   declare -a fpm_dirs=(
       # source dir part of 'dir' package ("/source=/dest" => "/source"):
       "${PACKAGE%%=/*}"
-      # backports ("llfuse==0.41.1" => "backports/python-llfuse")
+      # backports ("llfuse>=1.0" => "backports/python-llfuse")
       "${WORKSPACE}/backports/${PACKAGE_TYPE}-${PACKAGE%%[<=>]*}")
   if [[ -n "$PACKAGE_NAME" ]]; then
       fpm_dirs+=("${WORKSPACE}/backports/${PACKAGE_NAME}")
diff --git a/build/run-tests.sh b/build/run-tests.sh
index e0e1ce2..2831cf9 100755
--- a/build/run-tests.sh
+++ b/build/run-tests.sh
@@ -457,13 +457,10 @@ pip freeze 2>/dev/null | egrep ^apache-libcloud==$LIBCLOUD_PIN \
     || pip install --pre --ignore-installed https://github.com/curoverse/libcloud/archive/apache-libcloud-$LIBCLOUD_PIN.zip >/dev/null \
     || fatal "pip install apache-libcloud failed"
 
-# This will help people who reuse --temp dirs when we upgrade to llfuse 0.42
-if egrep -q 'llfuse.*>= *0\.42' "$WORKSPACE/services/fuse/setup.py"; then
-    # Uninstall old llfuse, because services/fuse "pip install" won't
-    # upgrade it by default.
-    if pip freeze | egrep '^llfuse==0\.41\.'; then
-        yes | pip uninstall 'llfuse<0.42'
-    fi
+# Uninstall old llfuse (<1.0), because services/fuse "pip install"
+# won't upgrade it by default.
+if pip freeze | egrep '^llfuse==0'; then
+    yes | pip uninstall 'llfuse<1.0'
 fi
 
 # Deactivate Python 2 virtualenv
diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 4c09f7e..289966f 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -355,13 +355,12 @@ class Operations(llfuse.Operations):
 
     @catch_exceptions
     def destroy(self):
-        with llfuse.lock:
-            self._shutdown_started.set()
-            if self.events:
-                self.events.close()
-                self.events = None
+        self._shutdown_started.set()
+        if self.events:
+            self.events.close()
+            self.events = None
 
-            self.inodes.clear()
+        self.inodes.clear()
 
     def access(self, inode, mode, ctx):
         return True
diff --git a/services/fuse/setup.py b/services/fuse/setup.py
index 2c519b7..0e0ed4b 100644
--- a/services/fuse/setup.py
+++ b/services/fuse/setup.py
@@ -38,7 +38,7 @@ setup(name='arvados_fuse',
       ],
       install_requires=[
         'arvados-python-client >= 0.1.20151118035730',
-        'llfuse >= 0.42.1, < 1.0',
+        'llfuse >= 1.0',
         'python-daemon',
         'ciso8601',
         'setuptools'

commit 31d8056dbcaf236299729694b3e63882cb42dde2
Author: Tom Clegg <tom at curoverse.com>
Date:   Thu Mar 10 15:04:10 2016 -0500

    8345: Revert change to getattr() @catch_exceptions setup.

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 77dbb0b..4c09f7e 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -400,10 +400,7 @@ class Operations(llfuse.Operations):
                 parent.update()
 
     @catch_exceptions
-    def getattr(self, inode, ctx):
-        return self._getattr(inode)
-
-    def _getattr(self, inode):
+    def getattr(self, inode, ctx=None):
         if inode not in self.inodes:
             raise llfuse.FUSEError(errno.ENOENT)
 
@@ -443,7 +440,7 @@ class Operations(llfuse.Operations):
 
     @catch_exceptions
     def setattr(self, inode, attr, fields, fh, ctx):
-        entry = self._getattr(inode)
+        entry = self.getattr(inode)
 
         if fh is not None and fh in self._filehandles:
             handle = self._filehandles[fh]
@@ -478,7 +475,7 @@ class Operations(llfuse.Operations):
             _logger.debug("arv-mount lookup: parent_inode %i name '%s' inode %i",
                       parent_inode, name, inode)
             self.inodes[inode].inc_ref()
-            return self._getattr(inode)
+            return self.getattr(inode)
         else:
             _logger.debug("arv-mount lookup: parent_inode %i name '%s' not found",
                       parent_inode, name)
@@ -617,7 +614,7 @@ class Operations(llfuse.Operations):
         e = off
         while e < len(handle.entries):
             if handle.entries[e][1].inode in self.inodes:
-                yield (handle.entries[e][0].encode(self.inodes.encoding), self._getattr(handle.entries[e][1].inode), e+1)
+                yield (handle.entries[e][0].encode(self.inodes.encoding), self.getattr(handle.entries[e][1].inode), e+1)
             e += 1
 
     @catch_exceptions
@@ -667,7 +664,7 @@ class Operations(llfuse.Operations):
         self.inodes.touch(p)
 
         f.inc_ref()
-        return (fh, self._getattr(f.inode))
+        return (fh, self.getattr(f.inode))
 
     @catch_exceptions
     def mkdir(self, inode_parent, name, mode, ctx):
@@ -680,7 +677,7 @@ class Operations(llfuse.Operations):
         d = p[name]
 
         d.inc_ref()
-        return self._getattr(d.inode)
+        return self.getattr(d.inode)
 
     @catch_exceptions
     def unlink(self, inode_parent, name, ctx):

commit 42759ae4288f20646ae64bf7d09db26b713d531b
Author: Tom Clegg <tom at curoverse.com>
Date:   Wed Mar 9 13:50:41 2016 -0500

    8345: Fix dirent timestamps.

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index e125459..77dbb0b 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -435,9 +435,9 @@ class Operations(llfuse.Operations):
 
         entry.st_blksize = 512
         entry.st_blocks = (entry.st_size/512)+1
-        entry.st_atime_ns = int(e.atime())
-        entry.st_mtime_ns = int(e.mtime())
-        entry.st_ctime_ns = int(e.mtime())
+        entry.st_atime_ns = int(e.atime() * 1000000000)
+        entry.st_mtime_ns = int(e.mtime() * 1000000000)
+        entry.st_ctime_ns = int(e.mtime() * 1000000000)
 
         return entry
 
diff --git a/services/fuse/tests/test_mount.py b/services/fuse/tests/test_mount.py
index c68a28d..f623ae5 100644
--- a/services/fuse/tests/test_mount.py
+++ b/services/fuse/tests/test_mount.py
@@ -267,14 +267,22 @@ class FuseSharedTest(MountTestBase):
 
         # check mtime on template
         st = os.stat(pipeline_template_path)
-        self.assertEqual(st.st_mtime_ns, 1397493304)
+        try:
+            mtime = st.st_mtime_ns / 1000000000
+        except AttributeError:
+            mtime = st.st_mtime
+        self.assertEqual(mtime, 1397493304)
 
         # check mtime on collection
         st = os.stat(os.path.join(
                 self.mounttmp,
                 'FUSE User',
                 'collection #1 owned by FUSE'))
-        self.assertEqual(st.st_mtime_ns, 1391448174)
+        try:
+            mtime = st.st_mtime_ns / 1000000000
+        except AttributeError:
+            mtime = st.st_mtime
+        self.assertEqual(mtime, 1391448174)
 
 
 class FuseHomeTest(MountTestBase):

commit 31084ffe95eddee3469674b6f719e00e94de9b5d
Author: Tom Clegg <tom at curoverse.com>
Date:   Tue Mar 8 16:40:22 2016 -0500

    8345: Pin llfuse to <1.0

diff --git a/services/fuse/setup.py b/services/fuse/setup.py
index 4718c30..2c519b7 100644
--- a/services/fuse/setup.py
+++ b/services/fuse/setup.py
@@ -38,7 +38,7 @@ setup(name='arvados_fuse',
       ],
       install_requires=[
         'arvados-python-client >= 0.1.20151118035730',
-        'llfuse>=0.42.1',
+        'llfuse >= 0.42.1, < 1.0',
         'python-daemon',
         'ciso8601',
         'setuptools'

commit ea9d53175a0e7670ceb9bbeaf66cd6c89baa09dd
Author: Tom Clegg <tom at curoverse.com>
Date:   Mon Mar 7 15:26:14 2016 -0500

    8345: fix whitespace

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 8470c66..e125459 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -709,5 +709,5 @@ class Operations(llfuse.Operations):
     def fsync(self, fh, datasync):
         self.flush(fh)
 
-    def fsyncdir(self, fh, datasync): 
+    def fsyncdir(self, fh, datasync):
         self.flush(fh)

commit a166056578bc02193e1a83f79b2477c9ccd98cc2
Author: Joshua Randall <joshua.randall at sanger.ac.uk>
Date:   Wed Feb 10 12:04:25 2016 +0000

    updates test_mount to use st_mtime_ns instead of st_mtime

diff --git a/services/fuse/tests/test_mount.py b/services/fuse/tests/test_mount.py
index 4c70ce9..c68a28d 100644
--- a/services/fuse/tests/test_mount.py
+++ b/services/fuse/tests/test_mount.py
@@ -267,14 +267,14 @@ class FuseSharedTest(MountTestBase):
 
         # check mtime on template
         st = os.stat(pipeline_template_path)
-        self.assertEqual(st.st_mtime, 1397493304)
+        self.assertEqual(st.st_mtime_ns, 1397493304)
 
         # check mtime on collection
         st = os.stat(os.path.join(
                 self.mounttmp,
                 'FUSE User',
                 'collection #1 owned by FUSE'))
-        self.assertEqual(st.st_mtime, 1391448174)
+        self.assertEqual(st.st_mtime_ns, 1391448174)
 
 
 class FuseHomeTest(MountTestBase):

commit b3f306edf87bf1fe406f11b5c99947d73599f84f
Author: Joshua Randall <joshua.randall at sanger.ac.uk>
Date:   Tue Feb 9 21:41:40 2016 +0000

    updates setattr for llfuse-python 0.42

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 2d72af1..8470c66 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -442,12 +442,16 @@ class Operations(llfuse.Operations):
         return entry
 
     @catch_exceptions
-    def setattr(self, inode, attr, ctx):
+    def setattr(self, inode, attr, fields, fh, ctx):
         entry = self._getattr(inode)
 
-        e = self.inodes[inode]
+        if fh is not None and fh in self._filehandles:
+            handle = self._filehandles[fh]
+            e = handle.obj
+        else:
+            e = self.inodes[inode]
 
-        if attr.st_size is not None and isinstance(e, FuseArvadosFile):
+        if fields.update_size and isinstance(e, FuseArvadosFile):
             with llfuse.lock_released:
                 e.arvfile.truncate(attr.st_size)
                 entry.st_size = e.arvfile.size()

commit f82d2a3731310b55420f7dcfe9a7ad28c3b338f1
Author: Joshua Randall <joshua.randall at sanger.ac.uk>
Date:   Fri Feb 5 18:37:17 2016 +0000

    adds backports specific to centos6

diff --git a/backports/python-llfuse/fpm-info.sh b/backports/python-llfuse/fpm-info.sh
index 5573dab..401a836 100644
--- a/backports/python-llfuse/fpm-info.sh
+++ b/backports/python-llfuse/fpm-info.sh
@@ -1,4 +1,8 @@
 case "$TARGET" in
+    centos6)
+        build_depends+=('fuse-libs' 'fuse-devel')
+        fpm_depends+=(glibc 'fuse-libs = 2.9.2-5' 'fuse = 2.9.2-5')
+        ;;
     centos*)
         build_depends+=('fuse-devel')
         fpm_depends+=(glibc fuse-libs)
diff --git a/backports/rpm-fuse-devel/fpm-info.sh b/backports/rpm-fuse-devel/fpm-info.sh
new file mode 100644
index 0000000..89cdebe
--- /dev/null
+++ b/backports/rpm-fuse-devel/fpm-info.sh
@@ -0,0 +1,5 @@
+case "$TARGET" in
+    centos6)
+        fpm_depends+=('fuse-libs = 2.9.2-5')
+        ;;
+esac
diff --git a/backports/rpm-fuse/fpm-info.sh b/backports/rpm-fuse/fpm-info.sh
new file mode 100644
index 0000000..89cdebe
--- /dev/null
+++ b/backports/rpm-fuse/fpm-info.sh
@@ -0,0 +1,5 @@
+case "$TARGET" in
+    centos6)
+        fpm_depends+=('fuse-libs = 2.9.2-5')
+        ;;
+esac

commit 4030410ea30f122acb7e67844b1adcd7ed7107fa
Author: Joshua Randall <joshua.randall at sanger.ac.uk>
Date:   Fri Feb 5 11:45:10 2016 +0000

    adds missing fix for llfuse 0.42+
    
    llfuse.capi._notify_queue => llfuse._notify_queue

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 8a80950..2d72af1 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -74,7 +74,7 @@ import Queue
 # unlimited to avoid deadlocks, see https://arvados.org/issues/3198#note-43 for
 # details.
 
-llfuse.capi._notify_queue = Queue.Queue()
+llfuse._notify_queue = Queue.Queue()
 
 from fusedir import sanitize_filename, Directory, CollectionDirectory, TmpCollectionDirectory, MagicDirectory, TagsDirectory, ProjectDirectory, SharedDirectory, CollectionDirectoryBase
 from fusefile import StringFile, FuseArvadosFile

commit fabbab6fb71b4733260687cd58a455b16c00948a
Author: Joshua Randall <joshua.randall at sanger.ac.uk>
Date:   Wed Feb 3 11:48:55 2016 +0000

    updates llfuse requirement and API to >=0.42

diff --git a/backports/deb-fuse/fpm-info.sh b/backports/deb-fuse/fpm-info.sh
new file mode 100644
index 0000000..6f2b022
--- /dev/null
+++ b/backports/deb-fuse/fpm-info.sh
@@ -0,0 +1,5 @@
+case "$TARGET" in
+    ubuntu1204)
+        fpm_depends+=('libfuse2 = 2.9.2-5')
+        ;;
+esac
diff --git a/backports/deb-libfuse-dev/fpm-info.sh b/backports/deb-libfuse-dev/fpm-info.sh
new file mode 100644
index 0000000..6f2b022
--- /dev/null
+++ b/backports/deb-libfuse-dev/fpm-info.sh
@@ -0,0 +1,5 @@
+case "$TARGET" in
+    ubuntu1204)
+        fpm_depends+=('libfuse2 = 2.9.2-5')
+        ;;
+esac
diff --git a/backports/python-llfuse/fpm-info.sh b/backports/python-llfuse/fpm-info.sh
index 9fc0098..5573dab 100644
--- a/backports/python-llfuse/fpm-info.sh
+++ b/backports/python-llfuse/fpm-info.sh
@@ -3,9 +3,13 @@ case "$TARGET" in
         build_depends+=('fuse-devel')
         fpm_depends+=(glibc fuse-libs)
         ;;
+    ubuntu1204)
+        build_depends+=(libfuse2 libfuse-dev)
+        fpm_depends+=(libc6 python-contextlib2 'libfuse2 = 2.9.2-5' 'fuse = 2.9.2-5')
+        ;;
     debian* | ubuntu*)
         build_depends+=('libfuse-dev')
-        fpm_depends+=(libc6 libfuse2)
+        fpm_depends+=(libc6 'libfuse2 > 2.9.0' 'fuse > 2.9.0')
         ;;
 esac
 
diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 51b0a57..8a80950 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -400,7 +400,10 @@ class Operations(llfuse.Operations):
                 parent.update()
 
     @catch_exceptions
-    def getattr(self, inode):
+    def getattr(self, inode, ctx):
+        return self._getattr(inode)
+
+    def _getattr(self, inode):
         if inode not in self.inodes:
             raise llfuse.FUSEError(errno.ENOENT)
 
@@ -432,15 +435,15 @@ class Operations(llfuse.Operations):
 
         entry.st_blksize = 512
         entry.st_blocks = (entry.st_size/512)+1
-        entry.st_atime = int(e.atime())
-        entry.st_mtime = int(e.mtime())
-        entry.st_ctime = int(e.mtime())
+        entry.st_atime_ns = int(e.atime())
+        entry.st_mtime_ns = int(e.mtime())
+        entry.st_ctime_ns = int(e.mtime())
 
         return entry
 
     @catch_exceptions
-    def setattr(self, inode, attr):
-        entry = self.getattr(inode)
+    def setattr(self, inode, attr, ctx):
+        entry = self._getattr(inode)
 
         e = self.inodes[inode]
 
@@ -452,7 +455,7 @@ class Operations(llfuse.Operations):
         return entry
 
     @catch_exceptions
-    def lookup(self, parent_inode, name):
+    def lookup(self, parent_inode, name, ctx):
         name = unicode(name, self.inodes.encoding)
         inode = None
 
@@ -471,7 +474,7 @@ class Operations(llfuse.Operations):
             _logger.debug("arv-mount lookup: parent_inode %i name '%s' inode %i",
                       parent_inode, name, inode)
             self.inodes[inode].inc_ref()
-            return self.getattr(inode)
+            return self._getattr(inode)
         else:
             _logger.debug("arv-mount lookup: parent_inode %i name '%s' not found",
                       parent_inode, name)
@@ -488,7 +491,7 @@ class Operations(llfuse.Operations):
                 self.inodes.del_entry(ent)
 
     @catch_exceptions
-    def open(self, inode, flags):
+    def open(self, inode, flags, ctx):
         if inode in self.inodes:
             p = self.inodes[inode]
         else:
@@ -575,7 +578,7 @@ class Operations(llfuse.Operations):
         self.release(fh)
 
     @catch_exceptions
-    def opendir(self, inode):
+    def opendir(self, inode, ctx):
         _logger.debug("arv-mount opendir: inode %i", inode)
 
         if inode in self.inodes:
@@ -610,11 +613,11 @@ class Operations(llfuse.Operations):
         e = off
         while e < len(handle.entries):
             if handle.entries[e][1].inode in self.inodes:
-                yield (handle.entries[e][0].encode(self.inodes.encoding), self.getattr(handle.entries[e][1].inode), e+1)
+                yield (handle.entries[e][0].encode(self.inodes.encoding), self._getattr(handle.entries[e][1].inode), e+1)
             e += 1
 
     @catch_exceptions
-    def statfs(self):
+    def statfs(self, ctx):
         st = llfuse.StatvfsData()
         st.f_bsize = 128 * 1024
         st.f_blocks = 0
@@ -660,7 +663,7 @@ class Operations(llfuse.Operations):
         self.inodes.touch(p)
 
         f.inc_ref()
-        return (fh, self.getattr(f.inode))
+        return (fh, self._getattr(f.inode))
 
     @catch_exceptions
     def mkdir(self, inode_parent, name, mode, ctx):
@@ -673,22 +676,22 @@ class Operations(llfuse.Operations):
         d = p[name]
 
         d.inc_ref()
-        return self.getattr(d.inode)
+        return self._getattr(d.inode)
 
     @catch_exceptions
-    def unlink(self, inode_parent, name):
+    def unlink(self, inode_parent, name, ctx):
         _logger.debug("arv-mount unlink: parent_inode %i '%s'", inode_parent, name)
         p = self._check_writable(inode_parent)
         p.unlink(name)
 
     @catch_exceptions
-    def rmdir(self, inode_parent, name):
+    def rmdir(self, inode_parent, name, ctx):
         _logger.debug("arv-mount rmdir: parent_inode %i '%s'", inode_parent, name)
         p = self._check_writable(inode_parent)
         p.rmdir(name)
 
     @catch_exceptions
-    def rename(self, inode_parent_old, name_old, inode_parent_new, name_new):
+    def rename(self, inode_parent_old, name_old, inode_parent_new, name_new, ctx):
         _logger.debug("arv-mount rename: old_parent_inode %i '%s' new_parent_inode %i '%s'", inode_parent_old, name_old, inode_parent_new, name_new)
         src = self._check_writable(inode_parent_old)
         dest = self._check_writable(inode_parent_new)
@@ -702,5 +705,5 @@ class Operations(llfuse.Operations):
     def fsync(self, fh, datasync):
         self.flush(fh)
 
-    def fsyncdir(self, fh, datasync):
+    def fsyncdir(self, fh, datasync): 
         self.flush(fh)
diff --git a/services/fuse/setup.py b/services/fuse/setup.py
index 9e282ca..4718c30 100644
--- a/services/fuse/setup.py
+++ b/services/fuse/setup.py
@@ -38,7 +38,7 @@ setup(name='arvados_fuse',
       ],
       install_requires=[
         'arvados-python-client >= 0.1.20151118035730',
-        'llfuse==0.41.1',
+        'llfuse>=0.42.1',
         'python-daemon',
         'ciso8601',
         'setuptools'

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list