2b6d692f06
.java .gradle and XML files all can use any encoding. Most code is ASCII, but authors' names, etc. can easily be non-ASCII. UTF-8 is by far the most common file encoding. While UTF-8 is the default encoding inside the code in Python 3, it still has to deal with the real world, so the encoding needs to be explicitly set when reading and writing files. So this switches fdroidserver to expect UTF-8 instead of ASCII when parsing these files. For now, this commit means that we only support UTF-8 encoded *.java, pom.xml or *.gradle files. Ideally, the code would detect the encoding and use the actual one, but that's a lot more work, and its something that will not happen often. We can cross that bridge when we come to it. One approach, which is taken in the commit when possible, is to keep the data as `bytes`, in which case the encoding doesn't matter. This also fixes this crash when parsing gradle and maven files with non-ASCII chars: ERROR: test_adapt_gradle (__main__.BuildTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/var/lib/jenkins/workspace/fdroidserver-eighthave/tests/build.TestCase", line 59, in test_adapt_gradle fdroidserver.build.adapt_gradle(testsdir) File "/var/lib/jenkins/workspace/fdroidserver-eighthave/fdroidserver/build.py", line 445, in adapt_gradle path) File "/var/lib/jenkins/workspace/fdroidserver-eighthave/fdroidserver/common.py", line 188, in regsub_file text = f.read() File "/usr/lib/python3.4/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 9460: ordinal not in range(128) |
||
---|---|---|
.pylint-plugins | ||
buildserver | ||
completion | ||
docs | ||
examples | ||
fdroidserver | ||
hooks | ||
tests | ||
wp-fdroid | ||
.gitignore | ||
.gitlab-ci.yml | ||
.travis.yml | ||
fd-commit | ||
fdroid | ||
jenkins-build | ||
jenkins-build-makebuildserver | ||
LICENSE | ||
makebuildserver | ||
MANIFEST.in | ||
README.md | ||
setup.cfg | ||
setup.py |
F-Droid Server
Server for F-Droid, 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. 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.
Alternatively, visit https://f-droid.org/manual/.
What is F-Droid?
F-Droid is an installable catalogue of FOSS (Free and Open Source Software) 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.
The easiest way to install the fdroidserver
tools is on Ubuntu, Mint or other
Ubuntu based distributions, you can install using:
sudo apt-get install fdroidserver
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
On OSX, fdroidserver
is available from third party package managers,
like Homebrew, MacPorts, and Fink:
brew install fdroidserver
For Arch-Linux is a package in the AUR available. If you have installed
yaourt
or something similiar, you can do:
yaourt -S fdroidserver
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:
sudo pip3 install fdroidserver
The combination of pyvenv
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, venv 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.
For Debian based distributions:
apt-get install python3-dev python3-pip python3-venv libjpeg-dev zlib1g-dev
Then here's how to install:
git clone https://gitlab.com/fdroid/fdroidserver.git
cd fdroidserver
pyvenv env/
source env/bin/activate
pip3 install -e .
python3 setup.py install