Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 8938
  • 8978
  • benchmark-all-commits
  • benchmark_elasticsearch
  • bug/remove-unicode-conversion
  • buildpackage
  • debian/experimental
  • debian/experimental-0.9
  • debian/platform-0.5
  • debian/platform-0.6
  • debian/platform-0.7
  • debian/platform-0.8
  • debian/platform-0.9
  • debian_package
  • feature/enc-sync-transitional-db
  • feature/streaming-transfer
  • master
  • onepython
  • release/0.6.x
  • release/0.7.x
  • release/0.8.x
  • release/0.9.x
  • release/bitmask-0.9.x-alpha
  • 0.10.0
  • 0.10.1
  • 0.10.2
  • 0.10.3
  • 0.10.4
  • 0.10.5
  • 0.2.1
  • 0.2.2
  • 0.2.3
  • 0.3.0
  • 0.3.1
  • 0.3.2
  • 0.4.0
  • 0.4.1
  • 0.4.2
  • 0.4.3
  • 0.4.4
  • 0.4.5
  • 0.5.0
  • 0.5.1
  • 0.5.2
  • 0.6.0
  • 0.6.1
  • 0.6.2
  • 0.6.3
  • 0.6.4
  • 0.6.5
  • 0.7.0
  • 0.7.1
  • 0.7.2
  • 0.7.3
  • 0.7.4
  • 0.8.0
  • 0.8.1
  • 0.9.0
  • 0.9.0rc1
  • 0.9.1
  • 0.9.2
  • 0.9.3
  • 0.9.3post3
  • 0.9.5
  • 0.9.6
  • 0.9.6post1
  • 0.9.6post2
  • 0.9.6post3
68 results

Target

Select target project
  • drebs/soledad
  • shyba/soledad
  • kali/soledad
  • micah/soledad
  • efkin/soledad
  • vdegou/soledad
  • cyberdrudge/soledad
  • jrabbit/soledad
8 results
Select Git revision
  • 8420
  • 8813_refactor_doc_id_rev
  • 8908
  • 8942
  • 8944
  • 8948
  • 8979
  • 8995-8996-8997
  • 9004
  • 9006
  • 9010
  • 9023
  • 9028
  • allow-offline
  • attachments-api
  • blobs-upload-download
  • feature/add-host-hostname-to-benchmarking-machine-info
  • feature/avoid-starting-up-if-not-migrated
  • feature/encrypt-doc-id
  • feature/gen-perf-stats
  • feature/improve-missing-couch-config-doc-error-logging
  • feature/migrate-cleans-up-transactions-from-documents
  • fix-db-copying
  • fix-fs-backend-benchmarks
  • fix-logging
  • improve-server-startup
  • master
  • move-sphinx-up
  • tests/perf-stats
  • 0.2.1
  • 0.2.2
  • 0.2.3
  • 0.3.0
  • 0.3.1
  • 0.3.2
  • 0.4.0
  • 0.4.1
  • 0.4.2
  • 0.4.3
  • 0.4.4
  • 0.4.5
  • 0.5.0
  • 0.5.1
  • 0.5.2
  • 0.6.0
  • 0.6.1
  • 0.6.2
  • 0.6.3
  • 0.6.4
  • 0.6.5
  • 0.7.0
  • 0.7.1
  • 0.7.2
  • 0.7.3
  • 0.7.4
  • 0.8.0
  • 0.8.1
  • 0.9.0
  • 0.9.0rc1
  • 0.9.1
  • 0.9.2
  • 0.9.3
  • 0.9.5
  • 0.9.6
  • 0.9.6post1
  • 0.9.6post2
66 results
Show changes
Commits on Source (972)
Showing with 591 additions and 385 deletions
src/leap/soledad/_version.py export-subst
......@@ -9,6 +9,7 @@ MANIFEST
*.swp
*.swo
*.pyc
*.pyo
*.log
*.*~
*.csv
......@@ -18,3 +19,12 @@ MANIFEST
_trial_temp
.DS_Store
scripts/profiling/sync/profiles
tags
.pybuild
debian/debhelper-build-stamp
debian/python-leap.soledad
testing/htmlcov
testing/.coverage
testing/test-env
testing/.benchmarks
---
stages:
- code-check
- build
- tests
- package
variables:
DOCKER_DRIVER: overlay
# Cache a folder between builds.
# Tox sets it to be our pip cache.
cache:
untracked: true
key: soledad-shared-pip-cache
paths:
- .cache/
before_script:
- echo "Running on ${HOST_HOSTNAME:=$(hostname)}"
#
# "code-check" stage
#
code-check:
stage: code-check
except:
- schedules
image: 0xacab.org:4567/leap/soledad:latest
script:
- tox -e code-check
#
# "build" stage
#
build_docker_image:
stage: build
except:
- schedules
image: 0xacab.org:4567/leap/soledad:latest
services:
- docker:dind
tags:
- docker-in-docker
script:
- scripts/docker/build-docker-image.sh
#
# "tests" stage
#
tests:
image: leap/soledad:1.0
stage: tests
except:
- schedules
image: 0xacab.org:4567/leap/soledad:latest
services:
- couchdb
script:
- cd testing; tox -- --couch-url http://couchdb:5984
- tox -- --couch-url http://couchdb:5984
#e2e:
# stage: tests
# except:
# - schedules
# image: 0xacab.org:4567/leap/soledad:latest
# script:
# - tox -e e2e
#
# "package" stage
#
.job_template: &package
stage: package
except:
- schedules
image: "0xacab.org:4567/leap/gitlab-buildpackage:build_${DIST}_${ARCH}"
script:
- /usr/bin/unbuffer scripts/packaging/run-packaging-ci-job.sh | /usr/bin/ts -s
# sleep 1h to allow debugging of running container
# - sleep 3600
artifacts:
expire_in: 1w
paths:
- '*_*.xz'
- '*_*.dsc'
- '*_amd64.changes'
- '*.deb'
- 'results/*'
cache:
policy: pull
package:amd64_stretch:
variables:
ARCH: "amd64"
DIST: "stretch"
REPONAMES: "platform,client"
# Default is to fail on warnings, we disable it here
# unless a manpage is included (see #8895)
LINTIAN_OPTS: "--fail-on-warnings -X filename-length,manpages,standards-version"
<<: *package
package:amd64_buster:
variables:
ARCH: "amd64"
DIST: "buster"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless a manpage is included (see #8895)
# Also, ignore the `build-depends-on-obsolete-package` tag
# until we can deprecate jessie and take out the dh-systemd
# build-depends (see #8963)
LINTIAN_OPTS: "--fail-on-warnings -X filename-length,manpages --suppress-tags build-depends-on-obsolete-package"
<<: *package
package:amd64_sid:
variables:
ARCH: "amd64"
DIST: "sid"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless a manpage is included (see #8895)
LINTIAN_OPTS: "--fail-on-warnings -X filename-length,manpages --suppress-tags build-depends-on-obsolete-package"
<<: *package
package:amd64_artful:
variables:
ARCH: "amd64"
DIST: "artful"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless a manpage is included (see #8895)
LINTIAN_OPTS: "--fail-on-warnings -X filename-length,manpages --suppress-tags build-depends-on-obsolete-package"
<<: *package
package:amd64_bionic:
variables:
ARCH: "amd64"
DIST: "bionic"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless a manpage is included (see #8895)
LINTIAN_OPTS: "--fail-on-warnings -X filename-length,manpages --suppress-tags build-depends-on-obsolete-package"
<<: *package
......@@ -8,3 +8,6 @@ Bruno Wagner <bwgpro@gmail.com>
Ruben Pollan <meskio@sindominio.net>
Duda Dornelles <ddornell@thoughtworks.com>
antialias <antialias@leap.se>
Tulio Casagrande <tcasagra@thoughtworks.com>
efkin <efkin@riseup.net>
Anike Arni <aarni@thoughtworks.com>
0.8.1 - 14 July, 2016
+++++++++++++++++++++
Changelog
=========
0.10.8 - `master`_
-------------------
.. note:: This version is not yet released and is under active development.
0.10.7 - Tue 3 Jul, 2018
-------------------------
Misc
~~~~
- Fix errors in setup.py avoiding the package from being uploaded to pypi
- Fix author in debian changelog
0.10.6 - Fri 29 Jun, 2018
-------------------------
Server
~~~~~~
- [feature] Improvements to the Blobs Filesystem backend
Client
======
~~~~~~
- [feature] Add bandwidth throttling to the blobs client
- [docs] Clarify offline use for tests
0.10.5 - Wed 22 Nov, 2017
-------------------------------
Server
~~~~~~
- [feature] add the SOLEDAD_COUCH_URL environment variable on server side
- [bug] properly shutdown server if startup checks fail
- [bug] fix and improve logging of server startup checks
0.10.4 - Wed 15 Nov, 2017
-------------------------------
Server
~~~~~~
- [feature] improve server entrypoint (several refactors and introduction of
binary in debian package)
- [feature] improve speed of server startup
- [bug] wait for couch schema, configuration and environment checks before
running servers.
- [bug] debian package now reports the correct version
- [pkg] improve user db creation script (fixes and man page)
- [bug] limit concurrent blob writes in server
Client
~~~~~~
- [feature] support unsynced local only blobs
- [feature] add/fix blob deletion
- [feature] add and control concurrency of blobs local and remote operations
- [feature] add retries for blob transfers
- [bug] fixes in blob download/upload pipeline
- [bug] improve resilience of blobs concurrent access to sqlcipher
- [bug] fix blobs preamble flakiness
- [refactor] split blobs backend in many modules
Misc
~~~~
- [doc] many documentation improvements
- [doc] documentation was mirrored in https://leap.se/en/docs/design/soledad
- [benchmarks] add server scalability tests
- [benchmarks] add outlier detection
- [test] add e2e test for incoming mail pipeline
- [pkg] Add packages for debian buster.
- [pkg] deb: Make soledad-client depend on soledad-common
0.10.3 - Mon 11 Sep, 2017
----------------------------------
Server
~~~~~~
- [feat] Finished adding support for Incoming API
- [feat] Get config file name from environment variable.
- [bug] Add DELETE method to url mapper.
- [bug] Use correct keyword argument for server state initialization.
- `#8924 <https://0xacab.org/leap/soledad/issues/8924>`_: [bug] FileBodyProducer consumer usage wasn't closing the file
Client
~~~~~~
- [feat] Add columns for sync state of blobs inside sqlcipher
- [bug] Several bugfixes for BlobManager initialization.
- [bug] Fix usage of StringIO class in gzip middleware.
- `#8924 <https://0xacab.org/leap/soledad/issues/8924>`_: [bug] FileBodyProducer consumer usage wasn't closing the file
Misc
~~~~
- Use latest version of pytest-benchmark.
- Find correct twistd when outside tox envs
- Build packages for zesty and stretch.
- Add benchmark comparing legacy vs blobs sync.
- Add reactor responsiveness tests.
0.10.2 - Mon 21 Aug, 2017
----------------------------------
Server
~~~~~~
- Enforce namespace to default on server
- Add path partitioning to namespaces
Client
~~~~~~
- Add namespace to local blobs db table
- Track namespace information on blobs client
0.10.1 - Mon 07 Aug, 2017
---------------------------------
Server
~~~~~~
- Fixes IncomingBox missing preamble separator (space) which causes client to
fail parsing.
Client
~~~~~~
- Adds IncomingBoxProcessLoop and implement the process flow for IncominBox
specification.
- Adds IIncomingBoxConsumer interface, which can be used by Soledad apps to
implement consumers for IncomingBox feature.
0.10.0 - 18 July, 2017
-------------------------------
Server
~~~~~~
- Add an incoming API for email delivery. In the future, this may be used by
external applications for message delivery.
- Add namespace capability.
- List incoming blobs in chronological order.
- Finish minimal filesystem backend for blobs.
- Update BlobManager to support new server features, such as: namespaces,
incoming and listing.
- Make the backend configurable for incoming API, so it can use CouchDB now and
Blobs later.
Client
~~~~~~
- Use OpenSSL backend for scrypt if OpenSSL >= 1.1
Misc
~~~~
- Refactor preamble to account for PGP encryption scheme
- Removes scrypt dependency
- Unification of Client, Server and Common in a Single python package.
- Build soledad debian package with git-buildpackage.
- Document deprecation policy.
- Documentation is automatically uploaded to: https://soledad.readthedocs.io/
- Launch benchmarks website: https://benchmarks.leap.se/
0.9.6 - 31 May, 2017
-------------------------------
Server
~~~~~~
- Minimal Filesystem BlobsBackend implementation, disabled by default.
Client
~~~~~~
- Minimal Blobs manager implementation
- Blobs API
- Ability to generate recovery code.
- Fix deprecated multibackend call (cryptography).
Misc
~~~~~~
- Post benchmark results to elasticsearch
- Build docker image and push it to registry every time the dockerfile used for
tests is changed
- Fix flaky tests
- Cleanup old documentation.
- Added dependency on treq.
- Improve cpu/memory profiling.
- Bumped version to upload wheels to pypi, to workaround for dbschema.sql not
found after installation in virtualenv.
0.9.5 - 17 March, 2017
-------------------------------
Server
~~~~~~
- Make database creation appear in logs
Client
~~~~~~
- `#8721 <https://0xacab.org/leap/soledad/issues/8721>`_: Remove offline flag
- Fix raising of invalid auth token error
- Add default version when decrypting secrets
- Secrets version defaults to v1
Misc
~~~~
- First steps porting soledad to python3
0.9.3 - 06 March, 2017
-------------------------------
Server
~~~~~~
- Refactor authentication code to use twisted credential system.
- Announce server blobs capabilities
- `#8764 <https://0xacab.org/leap/soledad/issues/8764>`_: Allow unauthenticated users to retrieve the capabilties banner.
- `#6178 <https://0xacab.org/leap/soledad/issues/6178>`_: Add robots.txt
- #8762: Add a systemd service file
- Add script to deploy from git
Client
~~~~~~~~
- `#8758 <https://0xacab.org/leap/soledad/issues/8758>`_: Add blob size to the crypto preamble
- Improve secrets generation and storage code
- Add offline status to soledad client api.
- Remove syncable property
Misc
~~~~
- Improvements in performance benchmarks.
0.9.2 - 22 December, 2016
-------------------------
Performance improvements
~~~~~~~~~~~~~~~~~~~~~~~~
- use AES 256 GCM mode instead of CTR-HMAC.
- streaming encryption/decryption and data transfer.
Server
~~~~~~
- move server to a twisted resource entrypoint.
Client
~~~~~~
- use twisted http agent in the client.
- maintain backwards compatibility with old crypto scheme (AES 256 CTR-HMAC).
No migration for now, only in 0.10.
- remove the encryption/decryption pools, replace for inline streaming crypto.
- use sqlcipher transactions on sync.
0.9.1 - 27 November, 2016
-------------------------
Server side bug fixes
~~~~~~~~~~~~~~~~~~~~~
- fix import on create-user-db script
- patch twisted logger so it works with twistd --syslog
- delay couch state initialization
- improve missing couch config doc error logging
- separate server application into another file
0.9.0 - 11 November, 2016
-------------------------
Main features
~~~~~~~~~~~~~
- Server-side changes in couch backend schema.
- Use of tox and pytest to run tests.
- Performance tests.
Server
~~~~~~
*** Attention: Migration needed! ***
This version of soledad uses a different database schema in the server couch
backend. The difference from the old schema is that the use of design documents
for storing and accessing soledad db metadata was removed because incurred in
too much memory and time overhead for passing data to the javascript
interpreter.
Because of that, you need to run a migration script on your database. Check the
`scripts/migration/0.9.0/` diretctory for instructions on how to run the
migration script on your database. Don't forget to backup before running the
script!
Bugfixes
~~~~~~~~
- Fix order of multipart serialization when writing to couch.
Features
~~~~~~~~
- Log to syslog.
- Remove usage of design documents in couch backend.
- Use _local couch docs for metadata storage.
- Other small improvements in couch backend.
0.8.1 - 14 July, 2016
---------------------
Client
~~~~~~
Features
++++++++
- Add recovery document format version for future migrations.
- Use DeferredLock instead of its locking cousin.
- Use DeferredSemaphore instead of its locking cousin.
Bugfixes
~~~~~~~~
++++++++
- `#8180 <https://leap.se/code/issues/8180>`_: Initialize OpenSSL context just once.
- Remove document content conversion to unicode. Users of API are responsible
for only passing valid JSON to Soledad for storage.
Misc
~~~~
++++
- Add ability to get information about sync phases for profiling purposes.
- Add script for setting up develop environment.
- Refactor bootstrap to remove shared db lock.
......@@ -25,46 +344,46 @@ Misc
- Remove user_id argument from Soledad init.
Common
======
~~~~~~
Features
~~~~~~~~
++++++++
- Embed l2db, forking u1db.
Misc
~~~~
++++
- Toxify tests.
0.8.0 - 18 Apr, 2016
++++++++++++++++++++
--------------------
Client
======
~~~~~~
Features
~~~~~~~~
++++++++
- `#7656 <https://leap.se/code/issues/7656>`_: Emit multi-user aware events.
- Client will now send documents at a limited size batch due to changes on SyncTarget. The default limit is 500kB. Disabled by default.
Bugfixes
~~~~~~~~
++++++++
- `#7503 <https://leap.se/code/issues/7503>`_: Do not signal sync completion if sync failed.
- Handle missing design doc at GET (get_sync_info). Soledad server can handle this during sync.
Misc
~~~~
++++
- `#7195 <https://leap.se/code/issues/7195>`_: Use cryptography instead of pycryptopp.
Known Issues
~~~~~~~~~~~~
++++++++++++
- Upload phase of client syncs is still quite slow. Enabling size limited batching
can help, but you have to make sure that your server is compatible.
Server
======
~~~~~~
Features
~~~~~~~~
++++++++
- General performance improvements.
- `#7509 <https://leap.se/code/issues/7509>`_: Moves config directory from /etc/leap to /etc/soledad.
- Adds a new config parameter 'create_cmd', which allows sysadmin to specify
......@@ -80,13 +399,16 @@ Features
change database behaviour, allowing batch operations to be optimized.
Common
======
~~~~~~
Features
~~~~~~~~
++++++++
- Add a sanitized command executor for database creation and re-enable user
database creation on CouchServerState via command line.
Bugfixes
~~~~~~~~
++++++++
- `#7626 <https://leap.se/code/issues/7626>`_: Subclass a leaky leap.common.couch exception to avoid depending on couch.
.. _`master`: https://0xacab.org/leap/soledad
File moved
include pkg/*
include pkg/common/*
include pkg/client/*
include pkg/server/*
include versioneer.py
include LICENSE
include CHANGELOG
include src/leap/soledad/server/_version.py
include src/leap/soledad/_version.py
default:
.PHONY : upload_packages
upload_packages:
python setup.py sdist bdist_wheel --universal upload --sign -i $(MAINTAINER) -r pypi
docs:
(cd docs && make html)
docs-using-virtualenv:
./scripts/docs/build-soledad-doc.sh
Soledad
==================================================================
*Synchronization Of Locally Encrypted Data Among Devices*
.. image:: https://badge.fury.io/py/leap.soledad.svg
:target: http://badge.fury.io/py/leap.soledad
.. image:: https://0xacab.org/leap/soledad/badges/master/pipeline.svg
:target: https://0xacab.org/leap/soledad/commits/master
Soledad is the part of LEAP that allows application data to be
securely shared among devices. It provides, to other parts of the
LEAP project, an API for data storage and sync.
This software is under development.
There are currently three python packages maintained under this
repository:
Installing
----------
Soledad is distributed as a single package, with extra dependencies for the
client and the server backends. To install the main package from `pypi
<https://pypi.python.org/pypi/leap.soledad>`_, do the following::
pip install leap.soledad
**leap.soledad.common** common pieces.
To use Soledad Client, make sure to install client-specific dependencies::
.. image:: https://badge.fury.io/py/leap.soledad.common.svg
:target: http://badge.fury.io/py/leap.soledad.common
.. image:: https://img.shields.io/pypi/dm/leap.soledad.common.svg
:target: http://badge.fury.io/py/leap.soledad.common
pip install "leap.soledad[client]"
**leap.soledad.client** where the soledad client lives.
To use Soledad Server, also install server-specific dependencies::
.. image:: https://badge.fury.io/py/leap.soledad.client.svg
:target: http://badge.fury.io/py/leap.soledad.client
.. image:: https://img.shields.io/pypi/dm/leap.soledad.client.svg
:target: http://badge.fury.io/py/leap.soledad.client
pip install "leap.soledad[server]"
**leap.soledad.server** oh surprise! bits needed for the soledad server.
If you want to install from the repository, you can do so like this::
.. image:: https://badge.fury.io/py/leap.soledad.server.svg
:target: http://badge.fury.io/py/leap.soledad.server
.. image:: https://img.shields.io/pypi/dm/leap.soledad.server.svg
:target: http://badge.fury.io/py/leap.soledad.server
git clone https://0xacab.org/leap/soledad
cd soledad/
pip install .
pip install ".[client]"
pip install ".[server]"
Compatibility
-------------
* Soledad Server >= 0.7.0 is incompatible with client < 0.7.0 because of
modifications on encrypted document MAC calculation.
* Soledad Server >= 0.7.0 is incompatible with LEAP Platform < 0.6.1 because
that platform version implements ephemeral tokens databases and Soledad
Server needs to act accordingly.
See the documentation page about `compatibility
<http://soledad.readthedocs.io/en/latest/development/compatibility.html>`_
for information about compatibility between different versions of Soledad
Server and Client and with the LEAP Plaform.
Tests
-----
Soledad tests use tox, and they live in the testing folder::
Soledad's test suite depends on `tox <https://tox.readthedocs.io/en/latest/>`_,
which creates virtual environments and installs all needed dependencies to run
tests. Currently, some tests also depend on availability of a `CouchDB`_ server
(see :ref:`dependency-on-couchdb` for more information).
Once you have both *tox* and *CouchDB* installed in your system, just run the
``tox`` command in the root of the repository to get started running tests.
See the `documentation pages about tests
<https://soledad.readthedocs.io/en/latest/development/tests.html>`_ for more details.
.. _dependency-on-couchdb:
cd testing
tox
---------------------
Dependency on CouchDB
---------------------
Note that to run CouchDB tests, be sure you have `CouchDB`_ installed on your
system.
Currently, some tests depend on availability of a CouchDB server. This will
change in the future and only integration tests will depend on CouchDB.
By default, tests will try to access couch at ``http://127.0.0.1:5984/``. If
you have a CouchDB server running elsewhere, you can pass a custom url to
*pytest* by using the ``--couch-url`` option after two dashes (``--``) when
running tox::
tox -- --couch-url http://couch_host:5984
Tests that depend on couchdb are marked as such with the ``needs_couch`` pytest
marker. You can skip them by avoiding tests with that marker::
tox -- -m 'not needs_couch'
.. _`CouchDB`: https://couchdb.apache.org/
Privileges
-----
----------
In order to prevent privilege escalation, Soledad should not be run as a
database administrator. This implies the following side effects:
-----------------
Database creation:
Database creation
-----------------
Can be done via a script located in ``server/pkg/create-user-db``
Can be done via a script located in ``pkg/server/soledad-create-userdb``
It reads a netrc file that should be placed on
``/etc/couchdb/couchdb-admin.netrc``.
That file holds the admin credentials in netrc format and should be accessible
......@@ -74,7 +105,7 @@ only by 'soledad-admin' user.
The debian package will do the following in order to automate this:
* create a user ``soledad-admin``
* make this script available as ``create-user-db`` in ``/usr/bin``
* make this script available as ``soledad-create-userdb`` in ``/usr/bin``
* grant restricted sudo access, that only enables user ``soledad`` to call this
exact command via ``soledad-admin`` user.
......@@ -83,8 +114,9 @@ then use a parameter called 'create_cmd' to know which command is used to
allocate new databases. All steps of creation process is then handled
automatically by the server, following the same logic as u1db server.
------------------
Database deletion:
------------------
-----------------
Database deletion
-----------------
No code at all handles this and privilege to do so needs to be removed as
explained before. This can be automated via a simple cron job.
src/leap/soledad/client/_version.py export-subst
drebs <drebs@leap.se>
Tomás Touceda <chiiph@leap.se>
Kali Kaneko <kali@leap.se>
Ivan Alejandro <ivanalejandro0@gmail.com>
Micah Anderson <micah@riseup.net>
Victor Shyba <victor.shyba@gmail.com>
Bruno Wagner <bwgpro@gmail.com>
Ruben Pollan <meskio@sindominio.net>
Duda Dornelles <ddornell@thoughtworks.com>
antialias <antialias@leap.se>
include pkg/*
include versioneer.py
include LICENSE
include CHANGELOG
include src/leap/soledad/client/_version.py
#################################################
# This file keeps track of the recent changes
# introduced in internal leap dependencies.
# Add your changes here so we can properly update
# requirements.pip during the release process.
# (leave header when resetting)
#################################################
#
# BEGIN DEPENDENCY LIST -------------------------
# leap.foo.bar>=x.y.z
#
0.8.2 - ...
++++++++++++++++++++
Please add lines to this file, they will be moved to the CHANGELOG.rst during
the next release.
There are two template lines for each category, use them as reference.
I've added a new category `Misc` so we can track doc/style/packaging stuff.
Features
~~~~~~~~
- `#1234 <https://leap.se/code/issues/1234>`_: Description of the new feature corresponding with issue #1234.
Bugfixes
~~~~~~~~
- `#1235 <https://leap.se/code/issues/1235>`_: Description for the fixed stuff corresponding with issue #1235.
Misc
~~~~
- `#1236 <https://leap.se/code/issues/1236>`_: Description of the new feature corresponding with issue #1236.
Known Issues
~~~~~~~~~~~~
- `#1236 <https://leap.se/code/issues/1236>`_: Description of the known issue corresponding with issue #1236.
pep8
pysqlcipher>2.6.3
scrypt
zope.proxy
twisted
# -*- coding: utf-8 -*-
# utils.py
# Copyright (C) 2013 LEAP
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
Utils to help in the setup process
"""
import os
import re
import sys
def is_develop_mode():
"""
Returns True if we're calling the setup script using the argument for
setuptools development mode.
This avoids messing up with dependency pinning and order, the
responsibility of installing the leap dependencies is left to the
developer.
"""
args = sys.argv
devflags = "setup.py", "develop"
if (args[0], args[1]) == devflags:
return True
return False
def get_reqs_from_files(reqfiles):
"""
Returns the contents of the top requirement file listed as a
string list with the lines
@param reqfiles: requirement files to parse
@type reqfiles: list of str
"""
for reqfile in reqfiles:
if os.path.isfile(reqfile):
return open(reqfile, 'r').read().split('\n')
def parse_requirements(reqfiles=['requirements.txt',
'requirements.pip',
'pkg/requirements.pip']):
"""
Parses the requirement files provided.
Checks the value of LEAP_VENV_SKIP_PYSIDE to see if it should
return PySide as a dep or not. Don't set, or set to 0 if you want
to install it through pip.
@param reqfiles: requirement files to parse
@type reqfiles: list of str
"""
requirements = []
skip_pyside = os.getenv("LEAP_VENV_SKIP_PYSIDE", "0") != "0"
for line in get_reqs_from_files(reqfiles):
# -e git://foo.bar/baz/master#egg=foobar
if re.match(r'\s*-e\s+', line):
pass
# do not try to do anything with externals on vcs
# requirements.append(re.sub(r'\s*-e\s+.*#egg=(.*)$', r'\1',
# line))
# http://foo.bar/baz/foobar/zipball/master#egg=foobar
elif re.match(r'\s*https?:', line):
requirements.append(re.sub(r'\s*https?:.*#egg=(.*)$', r'\1',
line))
# -f lines are for index locations, and don't get used here
elif re.match(r'\s*-f\s+', line):
pass
# argparse is part of the standard library starting with 2.7
# adding it to the requirements list screws distro installs
elif line == 'argparse' and sys.version_info >= (2, 7):
pass
elif line == 'PySide' and skip_pyside:
pass
# do not include comments
elif line.lstrip().startswith('#'):
pass
else:
if line != '':
requirements.append(line)
return requirements
[pep8]
exclude = versioneer.py,_version.py,ddocs.py,*.egg,build
ignore = E731
[flake8]
exclude = versioneer.py,_version.py,ddocs.py,*.egg,build
ignore = E731
[versioneer]
VCS = git
style = pep440
versionfile_source = src/leap/soledad/client/_version.py
versionfile_build = leap/soledad/client/_version.py
tag_prefix =
# -*- coding: utf-8 -*-
# setup.py
# Copyright (C) 2013 LEAP
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
setup file for leap.soledad.client
"""
import re
from setuptools import setup
from setuptools import find_packages
from setuptools import Command
import versioneer
from pkg import utils
trove_classifiers = (
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: "
"GNU General Public License v3 or later (GPLv3+)",
"Environment :: Console",
"Operating System :: OS Independent",
"Operating System :: POSIX",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Topic :: Database :: Front-Ends",
"Topic :: Software Development :: Libraries :: Python Modules"
)
DOWNLOAD_BASE = ('https://github.com/leapcode/bitmask_client/'
'archive/%s.tar.gz')
_versions = versioneer.get_versions()
VERSION = _versions['version']
VERSION_REVISION = _versions['full-revisionid']
DOWNLOAD_URL = ""
# get the short version for the download url
_version_short = re.findall('\d+\.\d+\.\d+', VERSION)
if len(_version_short) > 0:
VERSION_SHORT = _version_short[0]
DOWNLOAD_URL = DOWNLOAD_BASE % VERSION_SHORT
class freeze_debianver(Command):
"""
Freezes the version in a debian branch.
To be used after merging the development branch onto the debian one.
"""
user_options = []
template = r"""
# This file was generated by the `freeze_debianver` command in setup.py
# Using 'versioneer.py' (0.16) from
# revision-control system data, or from the parent directory name of an
# unpacked source archive. Distribution tarballs contain a pre-generated copy
# of this file.
import json
import sys
version_json = '''
{
"dirty": false,
"error": null,
"full-revisionid": "FULL_REVISIONID",
"version": "VERSION_STRING"
}
''' # END VERSION_JSON
def get_versions():
return json.loads(version_json)
"""
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
proceed = str(raw_input(
"This will overwrite the file _version.py. Continue? [y/N] "))
if proceed != "y":
print("He. You scared. Aborting.")
return
subst_template = self.template.replace(
'VERSION_STRING', VERSION_SHORT).replace(
'FULL_REVISIONID', VERSION_REVISION)
versioneer_cfg = versioneer.get_config_from_root('.')
with open(versioneer_cfg.versionfile_source, 'w') as f:
f.write(subst_template)
cmdclass = versioneer.get_cmdclass()
cmdclass["freeze_debianver"] = freeze_debianver
# XXX add ref to docs
requirements = utils.parse_requirements()
if utils.is_develop_mode():
print
print ("[WARNING] Skipping leap-specific dependencies "
"because development mode is detected.")
print ("[WARNING] You can install "
"the latest published versions with "
"'pip install -r pkg/requirements-leap.pip'")
print ("[WARNING] Or you can instead do 'python setup.py develop' "
"from the parent folder of each one of them.")
print
else:
requirements += utils.parse_requirements(
reqfiles=["pkg/requirements-leap.pip"])
setup(
name='leap.soledad.client',
version=VERSION,
cmdclass=cmdclass,
url='https://leap.se/',
download_url=DOWNLOAD_URL,
license='GPLv3+',
description='Synchronization of locally encrypted data among devices '
'(client components).',
author='The LEAP Encryption Access Project',
author_email='info@leap.se',
maintainer='Kali Kaneko',
maintainer_email='kali@leap.se',
long_description=(
"Soledad is the part of LEAP that allows application data to be "
"securely shared among devices. It provides, to other parts of the "
"LEAP project, an API for data storage and sync."
),
classifiers=trove_classifiers,
namespace_packages=["leap", "leap.soledad"],
packages=find_packages('src'),
package_dir={'': 'src'},
install_requires=requirements,
extras_require={'signaling': ['leap.common>=0.3.0']},
)
# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)