-# F-Droid Server
-[![build status](https://gitlab.com/fdroid/fdroidserver/badges/HEAD/build.svg)](https://gitlab.com/fdroid/fdroidserver/builds)
+<a name="build-status"></a>
+
+| CI Builds | fdroidserver | buildserver | fdroid build --all | publishing tools |
+|--------------------------|:-------------:|:-----------:|:------------------:|:----------------:|
+| Debian | [![fdroidserver status on Debian](https://gitlab.com/fdroid/fdroidserver/badges/master/build.svg)](https://gitlab.com/fdroid/fdroidserver/builds) | [![buildserver status](https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment/badge/icon)](https://jenkins.debian.net/job/reproducible_setup_fdroid_build_environment) | [![fdroid build all status](https://jenkins.debian.net/job/reproducible_fdroid_build_apps/badge/icon)](https://jenkins.debian.net/job/reproducible_fdroid_build_apps/) | [![fdroid build all status](https://jenkins.debian.net/job/reproducible_fdroid_test/badge/icon)](https://jenkins.debian.net/job/reproducible_fdroid_test/) |
+| macOS & Ubuntu/LTS | [![fdroidserver status on macOS & Ubuntu/LTS](https://travis-ci.org/f-droid/fdroidserver.svg?branch=master)](https://travis-ci.org/f-droid/fdroidserver) | | | |
+
+
+# F-Droid Server
Server for [F-Droid](https://f-droid.org), the Free Software repository system
for Android.
-The F-Droid server tools provide various scripts and tools that are used to
-maintain the main [F-Droid application repository](https://f-droid.org/repository/browse).
-You can use these same tools to create your own additional or alternative
-repository for publishing, or to assist in creating, testing and submitting
-metadata to the main repository.
+The F-Droid server tools provide various scripts and tools that are
+used to maintain the main
+[F-Droid application repository](https://f-droid.org/packages). You
+can use these same tools to create your own additional or alternative
+repository for publishing, or to assist in creating, testing and
+submitting metadata to the main repository.
-For documentation, please see the docs directory.
+For documentation, please see <https://f-droid.org/docs/>, or you can
+find the source for the documentation in
+[fdroid/fdroid-website](https://gitlab.com/fdroid/fdroid-website).
-Alternatively, visit [https://f-droid.org/manual/](https://f-droid.org/manual/).
### What is F-Droid?
applications for the Android platform. The client makes it easy to browse,
install, and keep track of updates on your device.
+
### Installing
-Note that only Python 3 is supported. We recommend version 3.4 or later.
+There are many was to install _fdroidserver_, they are documented on
+the website:
+https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools
+
+All sorts of other documentation lives there as well.
+
+
+### Tests
+
+There are many components to all of the tests for the components in
+this git repo. The most commonly used parts of well tested, while
+some parts still lack tests. This test suite has built over time a
+bit haphazardly, so it is not as clean, organized, or complete as it
+could be. We welcome contributions. Before rearchitecting any parts
+of it, be sure to [contact us](https://f-droid.org/about) to discuss
+the changes beforehand.
+
+
+#### `fdroid` commands
-The easiest way to install the `fdroidserver` tools is on Ubuntu, Mint or other
-Ubuntu based distributions, you can install using:
+The test suite for all of the `fdroid` commands is in the _tests/_
+subdir. _.gitlab-ci.yml_ and _.travis.yml_ run this test suite on
+various configurations.
- sudo apt-get install fdroidserver
+* _tests/complete-ci-tests_ runs _pylint_ and all tests on two
+ different pyvenvs
+* _tests/run-tests_ runs the whole test suite
+* _tests/*.TestCase_ are individual unit tests for all of the `fdroid`
+ commands, which can be run separately, e.g. `./update.TestCase`.
-For older Ubuntu releases or to get the latest version, you can get
-`fdroidserver` from the Guardian Project PPA (the signing key
-fingerprint is `6B80 A842 07B3 0AC9 DEE2 35FE F50E ADDD 2234 F563`)
- sudo add-apt-repository ppa:guardianproject/ppa
- sudo apt-get update
- sudo apt-get install fdroidserver
+#### Additional tests for different linux distributions
-On OSX, `fdroidserver` is available from third party package managers,
-like Homebrew, MacPorts, and Fink:
+These tests are also run on various distributions through GitLab CI. This is
+only enabled for `master@fdroid/fdroidserver` because it'll take longer to
+complete than the regular CI tests. Most of the time you won't need to worry
+about them but sometimes it might make sense to also run them for your merge
+request. In that case you need to remove [these lines from
+.gitlab-ci.yml](https://gitlab.com/fdroid/fdroidserver/blob/master/.gitlab-ci.yml#L34-35)
+and push this to a new branch of your fork.
- brew install fdroidserver
+Alternatively [run them
+locally](https://docs.gitlab.com/runner/commands/README.html#gitlab-runner-exec)
+like this: `gitlab-runner exec docker ubuntu_lts`
-For Arch-Linux is a package in the AUR available. If you have installed
-`yaourt` or something similiar, you can do:
+#### buildserver
- yaourt -S fdroidserver
+The tests for the whole build server setup are entirely separate
+because they require at least 200GB of disk space, and 8GB of
+RAM. These test scripts are in the root of the project, all starting
+with _jenkins-_ since they are run on https://jenkins.debian.net.
-For any platform where Python's `easy_install` is an option (e.g. OSX
-or Cygwin, you can use it:
- sudo easy_install fdroidserver
-Python's `pip` also works:
+### Drozer Scanner
- sudo pip3 install fdroidserver
+There is a new feature under development that can scan any APK in a
+repo, or any build, using Drozer. Drozer is a dynamic exploit
+scanner, it runs an app in the emulator and runs known exploits on it.
-The combination of `virtualenv` and `pip` is great for testing out the
-latest versions of `fdroidserver`. Using `pip`, `fdroidserver` can
-even be installed straight from git. First, make sure you have
-installed the python header files, virtualenv and pip. They should be
-included in your OS's default package manager or you can install them
-via other mechanisms like Brew/dnf/pacman/emerge/Fink/MacPorts.
+This setup requires specific versions of two Python modules:
+_docker-py_ 1.9.0 and _requests_ older than 2.11. Other versions
+might cause the docker-py connection to break with the containers.
+Newer versions of docker-py might have this fixed already.
For Debian based distributions:
- apt-get install python3-dev python3-pip libjpeg-dev zlib1g-dev virtualenv
+ apt-get install libffi-dev libssl-dev python-docker
-Then here's how to install:
+## Translation
- git clone https://gitlab.com/fdroid/fdroidserver.git
- cd fdroidserver
- virtualenv env/
- source env/bin/activate
- pip3 install -e .
- python3 setup.py install
+Everything can be translated. See
+[Translation and Localization](https://f-droid.org/docs/Translation_and_Localization)
+for more info.
+[![translation status](https://hosted.weblate.org/widgets/f-droid/-/fdroidserver/multi-auto.svg)](https://hosted.weblate.org/engage/f-droid/?utm_source=widget)