.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