chiark / gitweb /
fdroidserver.git
7 years agoMerge branch 'make-Build-App-act-like-dicts' into 'master'
Torsten Grote [Fri, 24 Feb 2017 11:11:11 +0000 (11:11 +0000)]
Merge branch 'make-Build-App-act-like-dicts' into 'master'

make Build and App classes act like dicts

See merge request !210

7 years agoprovide warning if config items will not preserve order
Hans-Christoph Steiner [Fri, 24 Feb 2017 09:28:00 +0000 (10:28 +0100)]
provide warning if config items will not preserve order

If a group of items are enclosed in {}, then that will be a Python set,
which does not preserve order.  To preserve order, the data must be either
a tuple () or list [].

7 years agobuild: ensure test is running on git commit that this code works with
Hans-Christoph Steiner [Thu, 23 Feb 2017 21:32:08 +0000 (22:32 +0100)]
build: ensure test is running on git commit that this code works with

Since https://gitlab.com/fdroid/ci-test-app is a separate git repo, things
with incompatible changes could get out of sync.  Therefore, this test
should specify which git commit is runs against.

For example, the .fdroid.yml file is still a moving target.  Just now, the
keys had the spaces removed as part of this MR.

7 years agonormalize Build TYPE_STRING data based on .txt
Hans-Christoph Steiner [Thu, 23 Feb 2017 21:25:33 +0000 (22:25 +0100)]
normalize Build TYPE_STRING data based on .txt

Unfortunately, things like versionCode must be strings.  That should be
converted to be ints throughout.

7 years agonormalize Build TYPE_LIST data based on .txt
Hans-Christoph Steiner [Thu, 23 Feb 2017 17:54:33 +0000 (18:54 +0100)]
normalize Build TYPE_LIST data based on .txt

In the future, we should have better internal datatypes for this stuff,
i.e. instead of gradle: ['yes'] for True, actually use a boolean.  For now,
make the YAML and JSON metadata produce the same internal data as .txt.

7 years agoadd script for mass testing metadata parsing after changes
Hans-Christoph Steiner [Thu, 23 Feb 2017 17:33:39 +0000 (18:33 +0100)]
add script for mass testing metadata parsing after changes

This requires manually running it.  I suppose it would be possible to
include a snapshot of the dumped internal representation for each release,
then make the tests run automatically against that.  Right now, the dump is
17megs of YAML.  Seems large to include in this git repo.

7 years agorename Build fields: version -> versionName, vercode -> versionCode
Hans-Christoph Steiner [Wed, 23 Nov 2016 16:52:04 +0000 (17:52 +0100)]
rename Build fields: version -> versionName, vercode -> versionCode

Since the YAML/JSON/etc. field names are now exactly the same as the field
names used in the internal dict in the Build class, this is a global rename

This keeps with the standard names used in Android:
https://developer.android.com/guide/topics/manifest/manifest-element.html

7 years agoconvert metadata.Build to a subclass of dict
Hans-Christoph Steiner [Tue, 29 Nov 2016 12:26:32 +0000 (13:26 +0100)]
convert metadata.Build to a subclass of dict

Like with the App class in the commit before, this makes it a lot
easier to work with this data when converting between the internal
formats and external formats like YAML, JSON, MsgPack, protobuf, etc.

The one unfortunate thing here is Build.update. It becomes
dict.update(), which is a method not an attribute.
build.get('update') or build['update'] could be used, but that would
be oddly inconsistent. So instead the field is renamed to
'androidupdate', except for in the .txt v0 metadata files. This better
describes what field does anyway, since it runs `android update`.

Build.update is only referenced in two places right next to each other
for the ant builds, so this change still seems worthwhile.

7 years agoconvert App to subclass of dict to support parsing/dumping libs
Hans-Christoph Steiner [Wed, 23 Nov 2016 16:25:59 +0000 (17:25 +0100)]
convert App to subclass of dict to support parsing/dumping libs

Python is heavily based on its core data types, and dict is one of the more
important ones.  Even classes are basically a wrapper around a dict. This
converts metadata.App to be a subclass of dict so it can behave like a dict
when being dumped and loaded.  This makes its drastically easier to use
different data formats for build metadata and for sending data to the
client.  This approach will ultimately mean we no longer have to maintain
custom parsing and dumping code.

This also means then that the YAML/JSON field names will not have spaces in
them, and they will match exactly what it used as the dict keys once the
data is parsed, as well as matching exactly the instance attribute names:

* CurrentVersion: 1.2.6
* app['CurrentVersion'] == '1.2.6'
* app.CurrentVersion == '1.2.6'

Inspired by:
https://goodcode.io/articles/python-dict-object/

7 years agomake Build class act more like a dict
Hans-Christoph Steiner [Fri, 18 Nov 2016 08:56:37 +0000 (09:56 +0100)]
make Build class act more like a dict

This makes it a lot easier to work with Build instances with parsing and
dumping libraries, since they expect only core Python types (dict, list,
tuple, str, etc)

7 years agosort repo index data to make index.xml generation reproducible
Hans-Christoph Steiner [Tue, 29 Nov 2016 14:55:07 +0000 (15:55 +0100)]
sort repo index data to make index.xml generation reproducible

This makes it easy to test that the code is still generating the exact same
index.xml.  It also might help the ZIP compression work better in index.jar

7 years agotest for original "v0" index XML compatibility
Hans-Christoph Steiner [Thu, 23 Feb 2017 20:23:45 +0000 (21:23 +0100)]
test for original "v0" index XML compatibility

The original index.xml format needs to stay around for backwards
compatibility, but we shouldn't touch it anymore once the new format is in
place.  This is a test to make sure `fdroid update` can still generate the
correct XML.

install_list and uninstall_list should be tuples or lists in order to
ensure that the order is preserved.

These tests also check that the added and lastupdated dates are
working correct, based on the dates in tests/stats/known_apks.txt. I
could see no useful way to test the timestamp, it is just hardcoded
using a regexp search-and-replace.  Running these tests manually might
require deleting tmp/apkcache.

7 years agoMerge branch 'support-v44' into 'master'
Hans-Christoph Steiner [Thu, 23 Feb 2017 11:48:01 +0000 (11:48 +0000)]
Merge branch 'support-v44' into 'master'

makebs: update support repo to r44, closes fdroid/rfp#49

Closes rfp#49

See merge request !213

7 years agoMerge branch 'firebase' into 'master'
Hans-Christoph Steiner [Thu, 23 Feb 2017 11:46:56 +0000 (11:46 +0000)]
Merge branch 'firebase' into 'master'

scanner: add firebase to usual suspect list, closes #259

Closes #259

See merge request !212

7 years agomakebs: update support repo to r43, closes fdroid/rfp#49
Boris Kraut [Thu, 23 Feb 2017 00:27:10 +0000 (01:27 +0100)]
makebs: update support repo to r43, closes fdroid/rfp#49

7 years agoscanner: add firebase to usual suspect list, closes #259
Boris Kraut [Wed, 22 Feb 2017 23:40:55 +0000 (00:40 +0100)]
scanner: add firebase to usual suspect list, closes #259

7 years agoMerge branch 'name' into 'master'
Hans-Christoph Steiner [Tue, 21 Feb 2017 14:08:47 +0000 (14:08 +0000)]
Merge branch 'name' into 'master'

update: add name to skeleton, closes #258

See merge request !211

7 years agoupdate: add name to skeleton
Boris Kraut [Sun, 19 Feb 2017 15:25:49 +0000 (16:25 +0100)]
update: add name to skeleton

7 years agoMerge branch 'feature/git-mirroring' into 'master'
Hans-Christoph Steiner [Fri, 17 Feb 2017 15:26:15 +0000 (15:26 +0000)]
Merge branch 'feature/git-mirroring' into 'master'

Add git repo mirroring

Closes #235

See merge request !206

7 years agoadd git repo mirroring
thez3ro [Fri, 10 Feb 2017 17:38:25 +0000 (18:38 +0100)]
add git repo mirroring

7 years agoMerge branch 'ossjfrog' into 'master'
Hans-Christoph Steiner [Mon, 13 Feb 2017 21:06:18 +0000 (21:06 +0000)]
Merge branch 'ossjfrog' into 'master'

scanner: allow oss.jfrog.org/artifactory/oss-snapshot-local

See merge request !208

7 years agoMerge branch 'build-publish-staging-test' into 'master'
Hans-Christoph Steiner [Mon, 13 Feb 2017 19:42:21 +0000 (19:42 +0000)]
Merge branch 'build-publish-staging-test' into 'master'

build/publish staging test

See merge request !207

7 years agoscanner: allow oss.jfrog.org/artifactory/oss-snapshot-local
Boris Kraut [Mon, 13 Feb 2017 19:24:35 +0000 (20:24 +0100)]
scanner: allow oss.jfrog.org/artifactory/oss-snapshot-local

7 years agojenkins-build-makebuildserver: remove VLC as test, its too flaky
Hans-Christoph Steiner [Tue, 7 Feb 2017 10:05:18 +0000 (11:05 +0100)]
jenkins-build-makebuildserver: remove VLC as test, its too flaky

Revert "jenkins-build-makebuildserver: include VLC as a test build"

This reverts commit 6debb3ebbf0fdbfeb49f80891fd8ba38cea72cd7.

7 years agobuildserver: update to latest tools and m2repository
Hans-Christoph Steiner [Fri, 10 Feb 2017 14:53:52 +0000 (15:53 +0100)]
buildserver: update to latest tools and m2repository

7 years agojenkins-build-makebuildserver: handle git update of fdroiddata better
Hans-Christoph Steiner [Fri, 10 Feb 2017 11:45:04 +0000 (12:45 +0100)]
jenkins-build-makebuildserver: handle git update of fdroiddata better

This prevents attempts to merge when there was rebasing, which can fail.

7 years agobuild: include buildserverid in build log for wiki
Hans-Christoph Steiner [Thu, 9 Feb 2017 22:49:42 +0000 (23:49 +0100)]
build: include buildserverid in build log for wiki

7 years agolog Android SDK/NDK component versions on buildserver
Hans-Christoph Steiner [Thu, 9 Feb 2017 22:48:40 +0000 (23:48 +0100)]
log Android SDK/NDK component versions on buildserver

ad2b9b99c2a7084e1ef4df06d635c7b63bee89e3 put this in the wrong place, it
was running it on the buildserver host rather than in the buildserver VM
itself, where the builds actually run.

refs #148

7 years agobuild: fix fdroidserverid in build log post on wiki
Hans-Christoph Steiner [Thu, 9 Feb 2017 15:26:57 +0000 (16:26 +0100)]
build: fix fdroidserverid in build log post on wiki

The carriage return in the fdroidserverid file messes up the wiki format.
This was forgotten in 69d39bb30101e8fdca1d4369cd2fd3b0d8a6fbc1

7 years agojenkins-build-makebuildserver: test the whole build/publish workflow
Hans-Christoph Steiner [Thu, 9 Feb 2017 14:50:58 +0000 (15:50 +0100)]
jenkins-build-makebuildserver: test the whole build/publish workflow

For full deployments like f-droid.org, the building happens on a separate
machine from the signing.  This adds a basic test of that kind of setup.

7 years agoMerge branch 'supportlib' into 'master'
Hans-Christoph Steiner [Mon, 13 Feb 2017 19:05:44 +0000 (19:05 +0000)]
Merge branch 'supportlib' into 'master'

makebs: bump support repo to r43

See merge request !205

7 years agomakebs: bump support repo to r43
Boris Kraut [Sat, 11 Feb 2017 13:40:40 +0000 (14:40 +0100)]
makebs: bump support repo to r43

7 years agoMerge branch 'fix-build-and-vlc' into 'master'
Ciaran Gultnieks [Tue, 7 Feb 2017 13:27:56 +0000 (13:27 +0000)]
Merge branch 'fix-build-and-vlc' into 'master'

fix CI, makebuildserver, and VLC build

See merge request !204

7 years agojenkins-build-makebuildserver: include VLC as a test build
Hans-Christoph Steiner [Tue, 7 Feb 2017 10:05:18 +0000 (11:05 +0100)]
jenkins-build-makebuildserver: include VLC as a test build

7 years agobuildserver: use automake and cmake from jessie-backports
Hans-Christoph Steiner [Tue, 7 Feb 2017 09:47:20 +0000 (10:47 +0100)]
buildserver: use automake and cmake from jessie-backports

These should be reasonably backwards compatible, and there is already
automake1.11 for those that need a version that old.  As for cmake, there
are five apps that seem to it:

com.amaze.filemanager
org.dolphinemu.dolphinemu
org.navitproject.navit
org.yabause.android
org.videolan.vlc

It looks like VLC is the only app that is currently building and using
cmake in the most recent releases.  Some of them used to use cmake, but no
longer.

7 years agogitlab-ci: workaround "ImportError: No module named 'packaging'"
Hans-Christoph Steiner [Mon, 6 Feb 2017 16:28:07 +0000 (17:28 +0100)]
gitlab-ci: workaround "ImportError: No module named 'packaging'"

https://github.com/pypa/setuptools/issues/937

fdroid/ci-images#1

7 years agobuildserver: add openjdk-8-jdk-headless depends from backports
Hans-Christoph Steiner [Mon, 6 Feb 2017 13:59:15 +0000 (14:59 +0100)]
buildserver: add openjdk-8-jdk-headless depends from backports

7 years agoMerge branch 'supportlib' into 'master'
Ciaran Gultnieks [Sat, 4 Feb 2017 17:34:49 +0000 (17:34 +0000)]
Merge branch 'supportlib' into 'master'

makebs: upgrade support repo to r42

See merge request !203

7 years agomakebs: upgrade support repo to r42
Boris Kraut [Sat, 4 Feb 2017 14:01:15 +0000 (15:01 +0100)]
makebs: upgrade support repo to r42

7 years agoMerge branch 'collection-of-fixes' into 'master'
Hans-Christoph Steiner [Sat, 21 Jan 2017 21:34:33 +0000 (21:34 +0000)]
Merge branch 'collection-of-fixes' into 'master'

include fdroidserverid in build log post on wiki

See merge request !201

7 years agobuild: include fdroidserverid in build log post on wiki
Hans-Christoph Steiner [Fri, 20 Jan 2017 11:10:35 +0000 (12:10 +0100)]
build: include fdroidserverid in build log post on wiki

7 years agoupdate URL for git repo of test app
Hans-Christoph Steiner [Mon, 9 Jan 2017 14:12:27 +0000 (15:12 +0100)]
update URL for git repo of test app

7 years agobreak out categories.txt generation to standalone method
Hans-Christoph Steiner [Mon, 28 Nov 2016 14:23:59 +0000 (15:23 +0100)]
break out categories.txt generation to standalone method

This is to clean up the code for the introduction of a new index format.
This also makes it so that only repo/categories.txt is generated, and not
archive/categories.txt.

Currently, the only thing that I can find that reads categories.txt is the
wordpress plugin, e.g. wp-fdroid.  And it only reads repo/categories.txt
not archive/categories.txt.

7 years agofix bad caching of non-APK files in the repo
Hans-Christoph Steiner [Mon, 28 Nov 2016 20:18:17 +0000 (21:18 +0100)]
fix bad caching of non-APK files in the repo

Silly mistake in 07ce9488097c1361c1cc1a515773fb73199550bf

7 years agoMerge branch 'fdroid-publish-ota-zip' into 'master'
Hans-Christoph Steiner [Thu, 12 Jan 2017 13:03:51 +0000 (13:03 +0000)]
Merge branch 'fdroid-publish-ota-zip' into 'master'

`fdroid publish` now includes OTA ZIPs and related source

See merge request !193

7 years agoMerge branch 'libtool-from-testing' into 'master'
Hans-Christoph Steiner [Thu, 12 Jan 2017 12:59:57 +0000 (12:59 +0000)]
Merge branch 'libtool-from-testing' into 'master'

buildserver: support installing packages from Debian/testing

Closes #224

See merge request !200

7 years agobuildserver: update android_m2repository to latest (r41)
Hans-Christoph Steiner [Thu, 12 Jan 2017 09:19:38 +0000 (10:19 +0100)]
buildserver: update android_m2repository to latest (r41)

7 years agoensure fdroiddata metadata file overrides .fdroid.yml in source
Hans-Christoph Steiner [Wed, 11 Jan 2017 21:42:41 +0000 (22:42 +0100)]
ensure fdroiddata metadata file overrides .fdroid.yml in source

If the already parsed App instance from metadata/*.* has a field, then the
value coming from .fdroid.yml should not override it.

7 years agobuildserver: support installing packages from Debian/testing
Hans-Christoph Steiner [Tue, 10 Jan 2017 09:54:21 +0000 (10:54 +0100)]
buildserver: support installing packages from Debian/testing

Sometimes, a build process requires newer versions of build tools than are
available in Debian/stable.  Oftentimes, using the package straight from
Debian/testing works fine when a package is not available as a backport.
libtool 2.4.6 is needed for building VLC, so it is one example of this.

The preferences file sets up the apt "pinning" so that all updates are not
installed from testing, only the packages that are requested by adding
"/testing" after then package name.

closes #224

7 years ago`fdroid publish` now includes OTA ZIPs and related source
Hans-Christoph Steiner [Wed, 7 Dec 2016 10:48:05 +0000 (11:48 +0100)]
`fdroid publish` now includes OTA ZIPs and related source

This adds support for publishing ZIP files which were built with
`fdroid build`.  This is for "Over-The-Air" (OTA) update ZIP files for
flashing to ROMs.  The first example of this is the Privileged Extension,
which must be installed by flashing an OTA ZIP on Android > 5.0.

!181
https://gitlab.com/fdroid/privileged-extension/issues/9
https://gitlab.com/fdroid/privileged-extension/issues/10
https://gitlab.com/fdroid/fdroiddata/merge_requests/1804

Also, "if app.Binaries:" is the same as "if app.Binaries is not None:", but
is the standard Python style.

7 years agoMerge branch 'gradle33' into 'master'
Hans-Christoph Steiner [Mon, 9 Jan 2017 10:31:57 +0000 (10:31 +0000)]
Merge branch 'gradle33' into 'master'

makebs: install gradle 3.3

See merge request !199

7 years agomakebs: install gradle 3.3
Boris Kraut [Sun, 8 Jan 2017 20:13:24 +0000 (21:13 +0100)]
makebs: install gradle 3.3

7 years agoMerge branch 'gettext-backport' into 'master'
Ciaran Gultnieks [Sat, 7 Jan 2017 19:05:08 +0000 (19:05 +0000)]
Merge branch 'gettext-backport' into 'master'

buildserver: install gettext from jessie-backports

Closes #224

See merge request !198

7 years agobuildserver: install gettext from jessie-backports
Hans-Christoph Steiner [Tue, 3 Jan 2017 21:23:38 +0000 (22:23 +0100)]
buildserver: install gettext from jessie-backports

In order to install a package from jessie-backports, apt-get has to be told
to get it from there rather than the main archive.  It will not use
jessie-backports by default even if it is added as an apt source.

closes #224

7 years agoMerge branch 'import' into 'master'
Daniel Martí [Sun, 1 Jan 2017 23:25:30 +0000 (23:25 +0000)]
Merge branch 'import' into 'master'

import: fix raw git-over-https urls

See merge request !196

7 years agoMerge branch 'spdx' into 'master'
Daniel Martí [Sun, 1 Jan 2017 23:24:37 +0000 (23:24 +0000)]
Merge branch 'spdx' into 'master'

docs: switch to spdx license list

See merge request !194

7 years agoMerge branch 'ci-update' into 'master'
Daniel Martí [Fri, 23 Dec 2016 17:22:35 +0000 (17:22 +0000)]
Merge branch 'ci-update' into 'master'

Bump CI image, now with build-tools 25.0.2

See merge request !197

7 years agoBump CI image, now with build-tools 25.0.2
Daniel Martí [Fri, 23 Dec 2016 16:46:09 +0000 (17:46 +0100)]
Bump CI image, now with build-tools 25.0.2

7 years agoimport: fix raw git-over-https urls
Boris Kraut [Wed, 21 Dec 2016 09:12:20 +0000 (10:12 +0100)]
import: fix raw git-over-https urls

7 years agoMerge branch 'master' into 'master'
Daniel Martí [Sat, 17 Dec 2016 23:19:50 +0000 (23:19 +0000)]
Merge branch 'master' into 'master'

Makebs: add build tools 25.0.2

See merge request !195

7 years agoMakebs: add build tools 25.0.2
est31 [Sat, 17 Dec 2016 22:36:48 +0000 (23:36 +0100)]
Makebs: add build tools 25.0.2

7 years agodocs: switch to spdx license list
Boris Kraut [Sat, 17 Dec 2016 08:57:38 +0000 (09:57 +0100)]
docs: switch to spdx license list

7 years agoMerge branch 'feature/dscanner' into master
Hans-Christoph Steiner [Tue, 6 Dec 2016 13:03:34 +0000 (14:03 +0100)]
Merge branch 'feature/dscanner' into master

dscanner - drozer scanner work.

closes !187

7 years agodscanner - Drozer based post-build dynamic vulnerability scanner command
Kevin C. Krinke [Tue, 6 Dec 2016 12:57:04 +0000 (13:57 +0100)]
dscanner - Drozer based post-build dynamic vulnerability scanner command

 * New command `dscanner`, enables one to scan signed APKs with Drozer
 * Drozer is a dynamic vulnerability scanner for Android
 * Drozer runs in a emulator or on-device, this new `dscanner` command...
  * starts a docker image with Drozer and the Android Emulator pre-installed,
  * loads the signed APK into the emulator
  * activates Drozer automated tests for the APK
  * gathers the report output and places it next to the original APK
 * The Drozer docker image can be:
  * cached locally for re-use (just don't run --clean*)
  * retrieved from dockerhub.com for more efficient runtime
  * or be built from scratch (in the new "./docker" directory)
 * New "Vulnerability Scanning" documentation section (run gendocs.sh)

7 years agoMerge branch 'collection-fixes-and-KnownVuln' into 'master'
Hans-Christoph Steiner [Tue, 6 Dec 2016 12:37:11 +0000 (12:37 +0000)]
Merge branch 'collection-fixes-and-KnownVuln' into 'master'

add KnownVuln anti-feature, and other fixes

This is a bit of a random collection of things that I have added in the process of working on the drozer/scanner support, YAML support, etc.  The only new things are:

* adding new AntiFeature for security issues: `KnownVuln`
* removing broken, incomplete XML metadata support

Everything else included are just code improvements.  This also includes the first check for `KnownVuln`, which is a scanner to check whether custom OpenSSL binaries in apps are not old with known vulnerabilities.  `KnownVuln` will then ultimately be used for things like the drozer scanner !187

See merge request !189

7 years agofix `fdroid build` with non-git repos
Hans-Christoph Steiner [Thu, 1 Dec 2016 22:29:38 +0000 (23:29 +0100)]
fix `fdroid build` with non-git repos

HEAD is really only in git.  This was introduced in
a4e4310803a463433eb7515c2038a8d3ea44edc4

7 years agoconvert metadata test dumps to YAML for easy comparison
Hans-Christoph Steiner [Wed, 23 Nov 2016 14:14:44 +0000 (15:14 +0100)]
convert metadata test dumps to YAML for easy comparison

When making code changes related to the metadata parsing, it is useful to
see how the internal format has changed by seeing the differences in the
dump files.  Those files are currently in the binary .pickle format.  This
just straight converts them to YAML, which is a text format, so that normal
diff tools work to see changes.

The dump files are named .yaml instead of .yml since .yml is used for hand-
edited YAML files for fdroiddata/metadata, while these dump files here are
a human readable form of a Python pickle.

7 years agoremove support for XML app metadata, its broken
Hans-Christoph Steiner [Wed, 23 Nov 2016 14:01:23 +0000 (15:01 +0100)]
remove support for XML app metadata, its broken

JSON and YAML are very closely related, so supporting both of them is
basically almost no extra work.  Both are also closely related to how
Python works with dicts and pickles. XML is a very different beast, and its
not popular for this kind of thing anyway, so just purge it.

7 years agoApp.get_last_build() method to replace duplicated code
Hans-Christoph Steiner [Fri, 18 Nov 2016 22:17:19 +0000 (23:17 +0100)]
App.get_last_build() method to replace duplicated code

Look @mvdan, I added a method to the App class!

7 years agodo proper checking of versionCode value
Hans-Christoph Steiner [Fri, 18 Nov 2016 21:40:29 +0000 (22:40 +0100)]
do proper checking of versionCode value

versionCode is defined as a Java Integer, so any value between -2147483648
(Integer.MIN_VALUE) and 2147483647 (Integer.MIN_VALUE) is valid, including
0.

https://developer.android.com/guide/topics/manifest/manifest-element.html#vcode

7 years agocheck all APKs for old versions of OpenSSL
Hans-Christoph Steiner [Thu, 3 Nov 2016 13:14:08 +0000 (14:14 +0100)]
check all APKs for old versions of OpenSSL

This scans all APKs for old versions of OpenSSL libraries that are known to
be vulnerable to issues, or fully unsupported.

This really should be implemented as a per-APK AntiFeature, so that it can
apply to any version that is vulnerable.  Since AntiFeatures are currently
only per-App, this instead sets the AntiFeature only if the latest APK is
vulnerable.

Google also enforces this:
https://support.google.com/faqs/answer/6376725?hl=en

apk['antiFeatures'] has the first letter small, since all build fields
start with a lowercase letter.  app.AntiFeatures has the first
uppercase since all App fields are that way.

7 years agocheck aapt version to make sure its new enough #236
Hans-Christoph Steiner [Tue, 15 Nov 2016 13:56:11 +0000 (14:56 +0100)]
check aapt version to make sure its new enough #236

Since `fdroid update` parses the output of aapt, and since aapt's output
format changes in non-compatible ways, test to make sure that the version
of aapt is new enough to prevent mystery stacktraces.  This only prints a
warning since in many cases, the old version will work just fine.

7 years agoMerge branch 'master' into 'master'
Ciaran Gultnieks [Fri, 2 Dec 2016 16:09:22 +0000 (16:09 +0000)]
Merge branch 'master' into 'master'

Add gradle 3.2.1

See merge request !192

7 years agoAdd gradle 3.2.1
est31 [Fri, 2 Dec 2016 05:51:38 +0000 (06:51 +0100)]
Add gradle 3.2.1

7 years agoMerge branch 'buildtools-25.0.1' into 'master'
Daniel Martí [Thu, 1 Dec 2016 12:40:25 +0000 (12:40 +0000)]
Merge branch 'buildtools-25.0.1' into 'master'

makebs: add buildtools 25.0.1

Please verify hash before merging.

See merge request !191

7 years agomakebs: add buildtools 25.0.1
Boris Kraut [Thu, 1 Dec 2016 07:38:31 +0000 (08:38 +0100)]
makebs: add buildtools 25.0.1

7 years agoMerge branch 'master' into 'master'
Hans-Christoph Steiner [Sat, 26 Nov 2016 08:02:42 +0000 (08:02 +0000)]
Merge branch 'master' into 'master'

Add ndk 13b

See merge request !190

7 years agoAdd ndk 13b
est31 [Fri, 25 Nov 2016 20:10:44 +0000 (21:10 +0100)]
Add ndk 13b

7 years agoMerge branch 'fdroid-yml-builds' into 'master'
Hans-Christoph Steiner [Thu, 24 Nov 2016 14:04:09 +0000 (14:04 +0000)]
Merge branch 'fdroid-yml-builds' into 'master'

builds straight from source repo using .fdroid.yml

The overarching theme of the merge request is allowing _.fdroid.yml_ to be included in an app's source repo, then letting `fdroid build` build the app straight out of the git repo without requiring a setup like _fdroiddata_ (e.g. _config.py_, _metadata/packagename.txt_, etc.).  _fdroiddata_ repos can then include source repos with a _.fdroid.yml_ by having _metadata/packagename.txt_ that includes just:

```
Repo Type:git
Repo:https://gitlab.com/upstream/app.git
```

Any other metadata fields that are included in _metadata/packagename.txt_ will override what is in _.fdroid.yml_, giving the repo manager the final say about what is included in their repo.  This setup provides a number of benefits:

* CI systems like jenkins, travis, gitlab-ci can build from _.fdroid.yml_
* very easy to start building apps using `fdroid build`, no separate repo needed
* some maintenance can be offloaded to the upstream dev

See merge request !184

7 years agoMerge branch 'patch-1' into 'master'
Hans-Christoph Steiner [Thu, 24 Nov 2016 08:38:04 +0000 (08:38 +0000)]
Merge branch 'patch-1' into 'master'

docs: remove one-line requirement for links

See merge request !188

7 years agodocs: remove one-line requirement for links
Boris Kraut [Thu, 24 Nov 2016 07:30:03 +0000 (07:30 +0000)]
docs: remove one-line requirement for links

7 years agoif building directly in git repo, use file path for remote
Hans-Christoph Steiner [Tue, 8 Nov 2016 15:26:22 +0000 (16:26 +0100)]
if building directly in git repo, use file path for remote

When a git repo has a .fdroid.yml file in it, and `fdroid build` is run
directly in that git repo, then this uses the file path as the remote for
the git repo in build/appid that is actually built.  That makes it possible
to run builds of commits that are only local, and makes things a whole lot
faster.

7 years agoignore files created by tests
Hans-Christoph Steiner [Tue, 8 Nov 2016 08:35:45 +0000 (09:35 +0100)]
ignore files created by tests

7 years agoallow metadata to be embedded in source repos via .fdroid.yml
Hans-Christoph Steiner [Mon, 7 Nov 2016 20:47:53 +0000 (21:47 +0100)]
allow metadata to be embedded in source repos via .fdroid.yml

This allows a source repo to include a complete metadata file so that it
can be built directly in place using `fdroid build`.  If that app is then
included in fdroiddata, it will first load the source repo type and URL
from fdroiddata, then read .fdroid.yml if it exists, then include the rest
of the metadata as specified in fdroiddata, so that fdroiddata has
precedence over the metadata in the source code.

This lets `fdroid build` apps without having a whole fdroiddata setup, but
instead just directly in place in the source code.  This also lets devs
optionallu maintain the fdroid metadata as part of their app, rather than
in fdroiddata without loosing any control.  This should make it easier to
spread around the maintenance load.

7 years agoswitch import test to custom, small test app
Hans-Christoph Steiner [Mon, 7 Nov 2016 22:24:52 +0000 (23:24 +0100)]
switch import test to custom, small test app

The test project should be moved to https://gitlab.com/fdroid/ci-test-app

7 years agoconvert comments above functions to python docstrings
Hans-Christoph Steiner [Mon, 7 Nov 2016 20:27:21 +0000 (21:27 +0100)]
convert comments above functions to python docstrings

This is how to write per-function comments.
https://www.python.org/dev/peps/pep-0257/

7 years agoproperly parse build metadata list types like gradle=
Hans-Christoph Steiner [Mon, 7 Nov 2016 20:21:32 +0000 (21:21 +0100)]
properly parse build metadata list types like gradle=

Something like `gradle: yes` in YAML will be parsed as a boolean, since
'yes' is officially defined as a boolean true in YAML.  For metadata fields
that need to be lists, this needs to be converted.  Same goes for a single
string like `gradle: customFlavor`.

7 years agoinclude version, commit, and android tools versions in local log
Hans-Christoph Steiner [Mon, 7 Nov 2016 14:36:16 +0000 (15:36 +0100)]
include version, commit, and android tools versions in local log

This includes more info to help track down problems with reproducible
builds, like the specific version being built, and which exact versions of
the Android SDK and NDK were used.

7 years agolog versions of all installed Android SDK/NDK components
Hans-Christoph Steiner [Mon, 7 Nov 2016 10:39:33 +0000 (11:39 +0100)]
log versions of all installed Android SDK/NDK components

Any variation in the Android tools used to build an APK can cause the build
to be unreproducible.  To help troubleshoot these times, this posts the
installed versions of the Android SDK and NDK components to the lastbuild
log, for the long term record.

refs #148

7 years agoMerge branch 'makebs' into 'master'
Hans-Christoph Steiner [Wed, 16 Nov 2016 21:09:17 +0000 (21:09 +0000)]
Merge branch 'makebs' into 'master'

makebs updates

See merge request !185

7 years agomakebs: add gradle 3.2
Daniel Martí [Tue, 15 Nov 2016 20:56:15 +0000 (20:56 +0000)]
makebs: add gradle 3.2

7 years agomakebs: update to support repo r40
Daniel Martí [Tue, 15 Nov 2016 20:56:04 +0000 (20:56 +0000)]
makebs: update to support repo r40

7 years agoall: make newer pycodestyle happy
Daniel Martí [Tue, 15 Nov 2016 20:55:06 +0000 (20:55 +0000)]
all: make newer pycodestyle happy

Apparently the "two empty lines" rule is now stricter.

7 years agoMerge branch 'node' into 'master'
Daniel Martí [Tue, 8 Nov 2016 21:33:38 +0000 (21:33 +0000)]
Merge branch 'node' into 'master'

buildserver: install nodejs

Install nodejs to allow webapps to be build (in the future...).

Ref: https://gitlab.com/fdroid/fdroidserver/issues/60

See merge request !183

7 years agobuildserver: install nodejs
Boris Kraut [Mon, 7 Nov 2016 21:54:47 +0000 (22:54 +0100)]
buildserver: install nodejs

7 years agoMerge branch 'build-FPE-update-zip' into 'master'
Daniel Martí [Mon, 7 Nov 2016 15:11:14 +0000 (15:11 +0000)]
Merge branch 'build-FPE-update-zip' into 'master'

Build Privileged Extension OTA update.zip using `fdroid build`

This allows `fdroid build` to build the OTA update ZIP file for F-Droid Privileged Extension, so that the official releases can be built and distributed via the normal F-Droid channels.   This is related to #233

Ultimately the client will also have to be updated to allow it to handle the non-APK files.

See merge request !181

7 years agowp-fdroid: show GPG Signature link for source tarballs
Hans-Christoph Steiner [Thu, 3 Nov 2016 09:38:22 +0000 (10:38 +0100)]
wp-fdroid: show GPG Signature link for source tarballs

Now that source tarballs can be GPG-signed, the website should also display
a link to fetch them.

7 years agogpg-sign all valid files in the repo, including source tarballs
Hans-Christoph Steiner [Thu, 3 Nov 2016 09:26:38 +0000 (10:26 +0100)]
gpg-sign all valid files in the repo, including source tarballs

This makes sure there is a GPG signature on any file that is included in
the repo, including APKs, OBB, source tarballs, media files, OTA update
ZIPs, etc.  Having a GPG signature is more important on non-APK files since
they mostly do not have any signature mechanism of their own.

This also adds basic tests of adding non-APK/OBB files to a repo with
`fdroid update`.

closes #232

7 years agoallow arbitrary build products, not only APKs
Hans-Christoph Steiner [Mon, 31 Oct 2016 18:53:55 +0000 (19:53 +0100)]
allow arbitrary build products, not only APKs

This makes it so that the final build product can be specified in output=
and it'll work no matter if its an APK or not.  This was developed around
the case of building the OTA update.zip for the Privileged Extension. It
should work for any build process in theory but it has not yet been tested.

https://gitlab.com/fdroid/privileged-extension/issues/9

7 years agoget_release_filename() to handle any file type, not just APKs
Hans-Christoph Steiner [Mon, 31 Oct 2016 15:51:34 +0000 (16:51 +0100)]
get_release_filename() to handle any file type, not just APKs

In order to support non-APK files that are built by `fdroid build`, this
function that names the file releases needs to be generic.