mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
Remove trailing spaces and tabs
This commit is contained in:
parent
c113371297
commit
0765f14c9d
@ -40,7 +40,7 @@ repo_url = "https://f-droid.org/repo"
|
|||||||
repo_name = "F-Droid"
|
repo_name = "F-Droid"
|
||||||
repo_icon = "fdroid-icon.png"
|
repo_icon = "fdroid-icon.png"
|
||||||
repo_description = """
|
repo_description = """
|
||||||
The official repository of the F-Droid client. Applications in this repository
|
The official repository of the F-Droid client. Applications in this repository
|
||||||
are either official binaries built by the original application developers, or
|
are either official binaries built by the original application developers, or
|
||||||
are binaries built from source by the admin of f-droid.org using the tools on
|
are binaries built from source by the admin of f-droid.org using the tools on
|
||||||
https://gitorious.org/f-droid.
|
https://gitorious.org/f-droid.
|
||||||
|
214
docs/fdroid.texi
214
docs/fdroid.texi
@ -81,11 +81,11 @@ GNU/Linux
|
|||||||
@item
|
@item
|
||||||
Python 2.x
|
Python 2.x
|
||||||
@item
|
@item
|
||||||
The Android SDK Tools and Build-tools.
|
The Android SDK Tools and Build-tools.
|
||||||
Note that F-Droid does not assume that you have the Android SDK in your
|
Note that F-Droid does not assume that you have the Android SDK in your
|
||||||
@code{PATH}: these directories will be specified in your repository
|
@code{PATH}: these directories will be specified in your repository
|
||||||
configuration. Recent revisions of the SDK have @code{aapt} located in
|
configuration. Recent revisions of the SDK have @code{aapt} located in
|
||||||
android-sdk/build-tools/ and it may be necessary to make a symlink to it in
|
android-sdk/build-tools/ and it may be necessary to make a symlink to it in
|
||||||
android-sdk/platform-tools/
|
android-sdk/platform-tools/
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
@ -127,9 +127,9 @@ without the 'Build Server' system, you may need:
|
|||||||
@item
|
@item
|
||||||
All SDK platforms requested by the apps you want to build
|
All SDK platforms requested by the apps you want to build
|
||||||
(The Android SDK is made available by Google under a proprietary license but
|
(The Android SDK is made available by Google under a proprietary license but
|
||||||
within that, the SDK platforms, support library and some other components are
|
within that, the SDK platforms, support library and some other components are
|
||||||
under the Apache license and source code is provided.
|
under the Apache license and source code is provided.
|
||||||
Google APIs, used for building apps using Google Maps, are free to the extent
|
Google APIs, used for building apps using Google Maps, are free to the extent
|
||||||
that the library comes pre-installed on the device.
|
that the library comes pre-installed on the device.
|
||||||
Google Play Services, Google Admob and others are proprietary and shouldn't be
|
Google Play Services, Google Admob and others are proprietary and shouldn't be
|
||||||
included in the main F-Droid repository.)
|
included in the main F-Droid repository.)
|
||||||
@ -142,7 +142,7 @@ Maven (Debian package maven)
|
|||||||
@item
|
@item
|
||||||
JavaCC (Debian package javacc)
|
JavaCC (Debian package javacc)
|
||||||
@item
|
@item
|
||||||
Miscellaneous packages listed in
|
Miscellaneous packages listed in
|
||||||
buildserver/cookbooks/fdroidbuild-general/recipes/default.rb
|
buildserver/cookbooks/fdroidbuild-general/recipes/default.rb
|
||||||
of the F-Droid server repository
|
of the F-Droid server repository
|
||||||
@end itemize
|
@end itemize
|
||||||
@ -347,18 +347,18 @@ A similar effect could by achieved by simply deleting the output files from
|
|||||||
@code{unsigned} after the build, but with the risk of forgetting to do so!
|
@code{unsigned} after the build, but with the risk of forgetting to do so!
|
||||||
|
|
||||||
Along similar lines (and only in conjunction with @code{--test}, you can use
|
Along similar lines (and only in conjunction with @code{--test}, you can use
|
||||||
@code{--force} to force a build of a Disabled application, where normally it
|
@code{--force} to force a build of a Disabled application, where normally it
|
||||||
would be completely ignored. Similarly a version that was found to contain
|
would be completely ignored. Similarly a version that was found to contain
|
||||||
ELFs or known non-free libraries can be forced to build. See also —
|
ELFs or known non-free libraries can be forced to build. See also —
|
||||||
scanignore= and scandelete= in the Build Version section.
|
scanignore= and scandelete= in the Build Version section.
|
||||||
|
|
||||||
If the build was unsuccessful, you can find out why by looking at the output
|
If the build was unsuccessful, you can find out why by looking at the output
|
||||||
in the logs/ directory. If that isn't illuminating, try building the app the
|
in the logs/ directory. If that isn't illuminating, try building the app the
|
||||||
regular way, step by step: android update project, ndk-build, ant debug.
|
regular way, step by step: android update project, ndk-build, ant debug.
|
||||||
|
|
||||||
Note that source code repositories often contain prebuilt libraries. If the
|
Note that source code repositories often contain prebuilt libraries. If the
|
||||||
app is being considered for the main F-Droid repository, it is important that
|
app is being considered for the main F-Droid repository, it is important that
|
||||||
all such prebuilts are built either via the metadata or by a reputable third
|
all such prebuilts are built either via the metadata or by a reputable third
|
||||||
party.
|
party.
|
||||||
|
|
||||||
|
|
||||||
@ -509,10 +509,10 @@ This is converted to (@code{<categories>}) in the public index file.
|
|||||||
|
|
||||||
@cindex license
|
@cindex license
|
||||||
|
|
||||||
The overall license for the application, or in certain cases, for the
|
The overall license for the application, or in certain cases, for the
|
||||||
source code only.
|
source code only.
|
||||||
|
|
||||||
Common values:
|
Common values:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
|
|
||||||
@ -534,8 +534,8 @@ GNU GPL version 3 or later
|
|||||||
|
|
||||||
@item
|
@item
|
||||||
@samp{GPL}
|
@samp{GPL}
|
||||||
An unspecified GPL version. Use this only as a last resort or if there is
|
An unspecified GPL version. Use this only as a last resort or if there is
|
||||||
some confusion over compatiblity of component licenses: particularly the use of
|
some confusion over compatiblity of component licenses: particularly the use of
|
||||||
Apache libraries with GPLv2 source code.
|
Apache libraries with GPLv2 source code.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
@ -578,10 +578,10 @@ checkupdates} is run.
|
|||||||
|
|
||||||
@cindex Name
|
@cindex Name
|
||||||
|
|
||||||
The name of the application. Normally, this field should not be present since
|
The name of the application. Normally, this field should not be present since
|
||||||
the application's correct name is retrieved from the APK file. However, in a
|
the application's correct name is retrieved from the APK file. However, in a
|
||||||
situation where an APK contains a bad or missing application name, it can be
|
situation where an APK contains a bad or missing application name, it can be
|
||||||
overridden using this. Note that this only overrides the name in the list of
|
overridden using this. Note that this only overrides the name in the list of
|
||||||
apps presented in the client; it doesn't changed the name or application label
|
apps presented in the client; it doesn't changed the name or application label
|
||||||
in the source code.
|
in the source code.
|
||||||
|
|
||||||
@ -664,8 +664,8 @@ A litecoin address for donating to the project.
|
|||||||
|
|
||||||
@cindex Summary
|
@cindex Summary
|
||||||
|
|
||||||
A brief summary of what the application is. Since the summary is only allowed
|
A brief summary of what the application is. Since the summary is only allowed
|
||||||
one line on the list of the F-Droid client, keeping it to within 32 characters
|
one line on the list of the F-Droid client, keeping it to within 32 characters
|
||||||
will ensure it fits even on the smallest screens.
|
will ensure it fits even on the smallest screens.
|
||||||
|
|
||||||
@node Description
|
@node Description
|
||||||
@ -673,8 +673,8 @@ will ensure it fits even on the smallest screens.
|
|||||||
|
|
||||||
@cindex Description
|
@cindex Description
|
||||||
|
|
||||||
A full description of the application, relevant to the latest version.
|
A full description of the application, relevant to the latest version.
|
||||||
This can span multiple lines (which should be kept to a maximum of 80
|
This can span multiple lines (which should be kept to a maximum of 80
|
||||||
characters), and is terminated by a line containing a single '.'.
|
characters), and is terminated by a line containing a single '.'.
|
||||||
|
|
||||||
Basic MediaWiki-style formatting can be used. Leaving a blank line starts a
|
Basic MediaWiki-style formatting can be used. Leaving a blank line starts a
|
||||||
@ -694,11 +694,11 @@ Bulletted lists are done by simply starting each item with a @code{*} on
|
|||||||
a new line, and numbered lists are the same but using @code{#}. There is
|
a new line, and numbered lists are the same but using @code{#}. There is
|
||||||
currently no support for nesting lists - you can have one level only.
|
currently no support for nesting lists - you can have one level only.
|
||||||
|
|
||||||
It can be helpful to note information pertaining to updating from an
|
It can be helpful to note information pertaining to updating from an
|
||||||
earlier version; whether the app contains any prebuilts built by the
|
earlier version; whether the app contains any prebuilts built by the
|
||||||
upstream developers or whether non-free elements were removed; whether the
|
upstream developers or whether non-free elements were removed; whether the
|
||||||
app is in rapid development or whether the latest version lags behind the
|
app is in rapid development or whether the latest version lags behind the
|
||||||
current version; whether the app supports multiple architectures or whether
|
current version; whether the app supports multiple architectures or whether
|
||||||
there is a maximum SDK specified (such info not being recorded in the index).
|
there is a maximum SDK specified (such info not being recorded in the index).
|
||||||
|
|
||||||
This is converted to (@code{<desc>}) in the public index file.
|
This is converted to (@code{<desc>}) in the public index file.
|
||||||
@ -795,8 +795,8 @@ can also be achieved by starting the commit ID with '!')
|
|||||||
The purpose of this feature is to allow non-buildable releases (e.g. the source
|
The purpose of this feature is to allow non-buildable releases (e.g. the source
|
||||||
is not published) to be flagged, so the scripts don't generate repeated
|
is not published) to be flagged, so the scripts don't generate repeated
|
||||||
messages about them. (And also to record the information for review later).
|
messages about them. (And also to record the information for review later).
|
||||||
If an apk has already been built, disabling causes it to be deleted once
|
If an apk has already been built, disabling causes it to be deleted once
|
||||||
@code{fdroid update} is run; this is the procedure if ever a version has to
|
@code{fdroid update} is run; this is the procedure if ever a version has to
|
||||||
be replaced.
|
be replaced.
|
||||||
|
|
||||||
@item subdir=<path>
|
@item subdir=<path>
|
||||||
@ -822,13 +822,13 @@ is sdk-location. Typically, if you get a message along the lines of:
|
|||||||
try enabling this option.
|
try enabling this option.
|
||||||
|
|
||||||
@item target=<target>
|
@item target=<target>
|
||||||
Specifies a particular SDK target for compilation, overriding the
|
Specifies a particular SDK target for compilation, overriding the
|
||||||
project.properties of the app and possibly sub-projects. Note that this does
|
project.properties of the app and possibly sub-projects. Note that this does
|
||||||
not change the target SDK in the AndroidManifest.xml — the level of features
|
not change the target SDK in the AndroidManifest.xml — the level of features
|
||||||
that can be included in the build. This is likely to cause the whole build.xml
|
that can be included in the build. This is likely to cause the whole build.xml
|
||||||
to be rewritten, which is fine if it's a 'standard' android file or doesn't
|
to be rewritten, which is fine if it's a 'standard' android file or doesn't
|
||||||
already exist, but not a good idea if it's heavily customised. If you get an
|
already exist, but not a good idea if it's heavily customised. If you get an
|
||||||
error about invalid target, first try @code{init=rm -rf bin/}; otherwise this
|
error about invalid target, first try @code{init=rm -rf bin/}; otherwise this
|
||||||
parameter should do the trick.
|
parameter should do the trick.
|
||||||
|
|
||||||
Please note that gradle builds should be using compilesdk=.
|
Please note that gradle builds should be using compilesdk=.
|
||||||
@ -867,8 +867,8 @@ If specified, the package version in AndroidManifest.xml is replaced
|
|||||||
with the version name for the build as specified in the metadata.
|
with the version name for the build as specified in the metadata.
|
||||||
|
|
||||||
This is useful for cases when upstream repo failed to update it for
|
This is useful for cases when upstream repo failed to update it for
|
||||||
specific tag; to build an arbitrary revision; to make it apparent that
|
specific tag; to build an arbitrary revision; to make it apparent that
|
||||||
the version differs significantly from upstream; or to make it apparent
|
the version differs significantly from upstream; or to make it apparent
|
||||||
which architecture or platform the apk is designed to run on.
|
which architecture or platform the apk is designed to run on.
|
||||||
|
|
||||||
@item forcevercode=yes
|
@item forcevercode=yes
|
||||||
@ -902,18 +902,18 @@ Specifies a list of external libraries (jar files) from the
|
|||||||
of the project. Separate items with semicolons.
|
of the project. Separate items with semicolons.
|
||||||
|
|
||||||
@item srclibs=a@@r;b@@r1;
|
@item srclibs=a@@r;b@@r1;
|
||||||
Specifies a list of source libraries or Android projects. Separate items with
|
Specifies a list of source libraries or Android projects. Separate items with
|
||||||
semicolons, and each item is of the form name@@rev where name is the predefined
|
semicolons, and each item is of the form name@@rev where name is the predefined
|
||||||
source library name and rev is the revision or tag in source control to use.
|
source library name and rev is the revision or tag in source control to use.
|
||||||
|
|
||||||
Each srclib has a metadata file under srclibs/ in the repository directory,
|
Each srclib has a metadata file under srclibs/ in the repository directory,
|
||||||
and the source code is stored in build/srclib/.
|
and the source code is stored in build/srclib/.
|
||||||
Repo Type: and Repo: are specified in the same way as for apps; Subdir: can be
|
Repo Type: and Repo: are specified in the same way as for apps; Subdir: can be
|
||||||
a comma separated list, for when directories are renamed by upstream; Update
|
a comma separated list, for when directories are renamed by upstream; Update
|
||||||
Project: updates the projects in the working directory and one level down;
|
Project: updates the projects in the working directory and one level down;
|
||||||
Prepare: can be used for any kind of preparation: in particular if you need to
|
Prepare: can be used for any kind of preparation: in particular if you need to
|
||||||
update the project with a particular target. You can then also use $$name$$ in
|
update the project with a particular target. You can then also use $$name$$ in
|
||||||
the init/prebuild/build command to substitute the relative path to the library
|
the init/prebuild/build command to substitute the relative path to the library
|
||||||
directory, but it could need tweaking if you've changed into another directory.
|
directory, but it could need tweaking if you've changed into another directory.
|
||||||
|
|
||||||
@item patch=x
|
@item patch=x
|
||||||
@ -940,7 +940,7 @@ You can use $$name$$ to substitute the path to a referenced srclib - see
|
|||||||
the @code{srclib} directory for details of this.
|
the @code{srclib} directory for details of this.
|
||||||
|
|
||||||
You can use $$SDK$$, $$NDK$$ and $$MVN3$$ to substitute the paths to the
|
You can use $$SDK$$, $$NDK$$ and $$MVN3$$ to substitute the paths to the
|
||||||
android SDK and NDK directories, and maven 3 executable respectively e.g.
|
android SDK and NDK directories, and maven 3 executable respectively e.g.
|
||||||
for when you need to run @code{android update project} explicitly.
|
for when you need to run @code{android update project} explicitly.
|
||||||
|
|
||||||
@item scanignore=path1;path2;...
|
@item scanignore=path1;path2;...
|
||||||
@ -1008,7 +1008,7 @@ of the checked out repo. Not yet implemented for gradle.
|
|||||||
Specify an alternate ant command (target) instead of the default
|
Specify an alternate ant command (target) instead of the default
|
||||||
'release'. It can't be given any flags, such as the path to a build.xml.
|
'release'. It can't be given any flags, such as the path to a build.xml.
|
||||||
|
|
||||||
@item novcheck=yes
|
@item novcheck=yes
|
||||||
Don't check that the version name and code in the resulting apk are
|
Don't check that the version name and code in the resulting apk are
|
||||||
correct by looking at the build output - assume the metadata is
|
correct by looking at the build output - assume the metadata is
|
||||||
correct. This takes away a useful level of sanity checking, and should
|
correct. This takes away a useful level of sanity checking, and should
|
||||||
@ -1026,9 +1026,9 @@ Another example, using extra parameters:
|
|||||||
@cindex AntiFeatures
|
@cindex AntiFeatures
|
||||||
|
|
||||||
This is optional - if present, it contains a comma-separated list of any of
|
This is optional - if present, it contains a comma-separated list of any of
|
||||||
the following values, describing an anti-feature the application has.
|
the following values, describing an anti-feature the application has.
|
||||||
Even though such apps won't be displayed unless a settings box is ticked,
|
Even though such apps won't be displayed unless a settings box is ticked,
|
||||||
it is a good idea to mention the reasons for the anti-feature(s) in the
|
it is a good idea to mention the reasons for the anti-feature(s) in the
|
||||||
description:
|
description:
|
||||||
|
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@ -1038,18 +1038,18 @@ description:
|
|||||||
|
|
||||||
@item
|
@item
|
||||||
@samp{Tracking} - the application tracks and reports your activity to
|
@samp{Tracking} - the application tracks and reports your activity to
|
||||||
somewhere without your consent. It's commonly used for when developers
|
somewhere without your consent. It's commonly used for when developers
|
||||||
obtain crash logs without the user's consent, or when an app is useless
|
obtain crash logs without the user's consent, or when an app is useless
|
||||||
without some kind of authentication.
|
without some kind of authentication.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
@samp{NonFreeNet} - the application relies on computational services that
|
@samp{NonFreeNet} - the application relies on computational services that
|
||||||
are impossible to replace or that the replacement cannot be connected to
|
are impossible to replace or that the replacement cannot be connected to
|
||||||
without major changes to the app.
|
without major changes to the app.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
@samp{NonFreeAdd} - the application promotes non-Free add-ons, such that the
|
@samp{NonFreeAdd} - the application promotes non-Free add-ons, such that the
|
||||||
app is effectively an advert for other non-free software and such software is
|
app is effectively an advert for other non-free software and such software is
|
||||||
not clearly labelled as such.
|
not clearly labelled as such.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
@ -1067,9 +1067,9 @@ include it.
|
|||||||
If this field is present, the application does not get put into the public
|
If this field is present, the application does not get put into the public
|
||||||
index. This allows metadata to be retained while an application is temporarily
|
index. This allows metadata to be retained while an application is temporarily
|
||||||
disabled from being published. The value should be a description of why the
|
disabled from being published. The value should be a description of why the
|
||||||
application is disabled. No apks or source code archives are deleted: to purge
|
application is disabled. No apks or source code archives are deleted: to purge
|
||||||
an apk see the Build Version section or delete manually for developer builds.
|
an apk see the Build Version section or delete manually for developer builds.
|
||||||
The field is therefore used when an app has outlived it's usefulness, because
|
The field is therefore used when an app has outlived it's usefulness, because
|
||||||
the source tarball is retained.
|
the source tarball is retained.
|
||||||
|
|
||||||
@node Requires Root
|
@node Requires Root
|
||||||
@ -1079,8 +1079,8 @@ the source tarball is retained.
|
|||||||
|
|
||||||
Set this optional field to "Yes" if the application requires root
|
Set this optional field to "Yes" if the application requires root
|
||||||
privileges to be usable. This lets the client filter it out if the
|
privileges to be usable. This lets the client filter it out if the
|
||||||
user so desires. Whether root is required or not, it is good to give
|
user so desires. Whether root is required or not, it is good to give
|
||||||
a paragraph in the description to the conditions on which root may be
|
a paragraph in the description to the conditions on which root may be
|
||||||
asked for and the reason for it.
|
asked for and the reason for it.
|
||||||
|
|
||||||
@node Update Check Mode
|
@node Update Check Mode
|
||||||
@ -1097,37 +1097,37 @@ Valid modes are:
|
|||||||
@itemize
|
@itemize
|
||||||
@item
|
@item
|
||||||
@code{None} - No checking is done because there's no appropriate automated way
|
@code{None} - No checking is done because there's no appropriate automated way
|
||||||
of doing so. Updates should be checked for manually. Use this, for example,
|
of doing so. Updates should be checked for manually. Use this, for example,
|
||||||
when deploying betas or patched versions; when builds are done in a directory
|
when deploying betas or patched versions; when builds are done in a directory
|
||||||
different to where the AndroidManifest.xml is; if the developers use the
|
different to where the AndroidManifest.xml is; if the developers use the
|
||||||
gradle build system and store version info in a separate file; if the
|
gradle build system and store version info in a separate file; if the
|
||||||
developers make a new branch for each release and don't make tags; or if you've
|
developers make a new branch for each release and don't make tags; or if you've
|
||||||
changed the package name or version code logic.
|
changed the package name or version code logic.
|
||||||
@item
|
@item
|
||||||
@code{Static} - No checking is done - either development has ceased or new versions
|
@code{Static} - No checking is done - either development has ceased or new versions
|
||||||
are not desired. This method is also used when there is no other checking method
|
are not desired. This method is also used when there is no other checking method
|
||||||
available and the upstream developer keeps us posted on new versions.
|
available and the upstream developer keeps us posted on new versions.
|
||||||
@item
|
@item
|
||||||
@code{RepoManifest} - At the most recent commit, the AndroidManifest.xml file
|
@code{RepoManifest} - At the most recent commit, the AndroidManifest.xml file
|
||||||
is looked for in the directory where it was found in the the most recent build.
|
is looked for in the directory where it was found in the the most recent build.
|
||||||
The appropriateness of this method depends on the development process used by
|
The appropriateness of this method depends on the development process used by
|
||||||
the application's developers. You should not specify this method unless you're
|
the application's developers. You should not specify this method unless you're
|
||||||
sure it's appropriate. For example, some developers bump the version when
|
sure it's appropriate. For example, some developers bump the version when
|
||||||
commencing development instead of when publishing.
|
commencing development instead of when publishing.
|
||||||
It will return an error if the AndroidManifest.xml has moved to a different
|
It will return an error if the AndroidManifest.xml has moved to a different
|
||||||
directory or if the package name has changed.
|
directory or if the package name has changed.
|
||||||
The current version that it gives may not be accurate, since not all
|
The current version that it gives may not be accurate, since not all
|
||||||
versions are fit to be published. Therefore, before building, it is often
|
versions are fit to be published. Therefore, before building, it is often
|
||||||
necessary to check if the current version has been published somewhere by the
|
necessary to check if the current version has been published somewhere by the
|
||||||
upstream developers, either by checking for apks that they distribute or for
|
upstream developers, either by checking for apks that they distribute or for
|
||||||
tags in the source code repository.
|
tags in the source code repository.
|
||||||
|
|
||||||
It currently works for every repository type to different extents, except
|
It currently works for every repository type to different extents, except
|
||||||
the srclib repo type. For git, git-svn and hg repo types, you may use
|
the srclib repo type. For git, git-svn and hg repo types, you may use
|
||||||
"RepoManifest/yourbranch" as UCM so that "yourbranch" would be the branch used
|
"RepoManifest/yourbranch" as UCM so that "yourbranch" would be the branch used
|
||||||
in place of the default one. The default values are "master" for git,
|
in place of the default one. The default values are "master" for git,
|
||||||
"default" for hg and none for git-svn (it stays in the same branch).
|
"default" for hg and none for git-svn (it stays in the same branch).
|
||||||
On the other hand, branch support hasn't been implemented yet in bzr and svn,
|
On the other hand, branch support hasn't been implemented yet in bzr and svn,
|
||||||
but RepoManifest may still be used without it.
|
but RepoManifest may still be used without it.
|
||||||
@item
|
@item
|
||||||
@code{RepoTrunk} - For svn and git-svn repositories, especially those who
|
@code{RepoTrunk} - For svn and git-svn repositories, especially those who
|
||||||
@ -1141,10 +1141,10 @@ that number.
|
|||||||
source repository is checked, looking for the highest version code. The
|
source repository is checked, looking for the highest version code. The
|
||||||
appropriateness of this method depends on the development process used by the
|
appropriateness of this method depends on the development process used by the
|
||||||
application's developers. You should not specify this method unless you're sure
|
application's developers. You should not specify this method unless you're sure
|
||||||
it's appropriate. It shouldn't be used if the developers like to tag betas or
|
it's appropriate. It shouldn't be used if the developers like to tag betas or
|
||||||
are known to forget to tag releases. Like RepoManifest, it will not return the
|
are known to forget to tag releases. Like RepoManifest, it will not return the
|
||||||
correct value if the directory containing the AndroidManifest.xml has moved.
|
correct value if the directory containing the AndroidManifest.xml has moved.
|
||||||
Despite these caveats, it is the often the favourite update check mode.
|
Despite these caveats, it is the often the favourite update check mode.
|
||||||
|
|
||||||
It currently only works for git, hg, bzr and git-svn repositories. In the case
|
It currently only works for git, hg, bzr and git-svn repositories. In the case
|
||||||
of the latter, the repo URL must encode the path to the trunk and tags or else
|
of the latter, the repo URL must encode the path to the trunk and tags or else
|
||||||
@ -1204,8 +1204,8 @@ of versions to keep.
|
|||||||
|
|
||||||
@cindex Auto Update Mode
|
@cindex Auto Update Mode
|
||||||
|
|
||||||
This determines the method using for auto-generating new builds when new
|
This determines the method using for auto-generating new builds when new
|
||||||
releases are available - in other words, adding a new Build Version line to the
|
releases are available - in other words, adding a new Build Version line to the
|
||||||
metadata.
|
metadata.
|
||||||
This happens in conjunction with the 'Update Check Mode' functionality - i.e.
|
This happens in conjunction with the 'Update Check Mode' functionality - i.e.
|
||||||
when an update is detected by that, it is also processed by this.
|
when an update is detected by that, it is also processed by this.
|
||||||
@ -1237,10 +1237,10 @@ above, you would specify that as "Version +-fdroid %v" - "-fdroid" is the suffix
|
|||||||
|
|
||||||
The name of the version that is current. There may be newer versions of the
|
The name of the version that is current. There may be newer versions of the
|
||||||
application than this (e.g. betas), and there will almost certainly be older
|
application than this (e.g. betas), and there will almost certainly be older
|
||||||
ones. This should be the one that is recommended for general use.
|
ones. This should be the one that is recommended for general use.
|
||||||
In the event that there is no source code for the current version, or that
|
In the event that there is no source code for the current version, or that
|
||||||
non-free libraries are being used, this would ideally be the latest
|
non-free libraries are being used, this would ideally be the latest
|
||||||
version that is still free, though it may still be expedient to
|
version that is still free, though it may still be expedient to
|
||||||
retain the automatic update check — see No Source Since.
|
retain the automatic update check — see No Source Since.
|
||||||
|
|
||||||
This field is normally automatically updated - see Update Check Mode.
|
This field is normally automatically updated - see Update Check Mode.
|
||||||
@ -1267,7 +1267,7 @@ This is converted to (@code{<marketvercode>}) in the public index file.
|
|||||||
@cindex No Source Since
|
@cindex No Source Since
|
||||||
|
|
||||||
In case we are missing the source code for the Current Version reported by
|
In case we are missing the source code for the Current Version reported by
|
||||||
Upstream, or that non-free elements have been introduced, this defines the
|
Upstream, or that non-free elements have been introduced, this defines the
|
||||||
first version that began to miss source code.
|
first version that began to miss source code.
|
||||||
Apps that are missing source code for just one or a few versions, but provide
|
Apps that are missing source code for just one or a few versions, but provide
|
||||||
source code for newer ones are not to be considered here - this field is
|
source code for newer ones are not to be considered here - this field is
|
||||||
@ -1374,7 +1374,7 @@ would fail.
|
|||||||
|
|
||||||
Unless you're very trusting. you should create one of these for yourself
|
Unless you're very trusting. you should create one of these for yourself
|
||||||
from verified standard Ubuntu installation media. However, you could skip
|
from verified standard Ubuntu installation media. However, you could skip
|
||||||
over the next few paragraphs (and sacrifice some security) by downloading
|
over the next few paragraphs (and sacrifice some security) by downloading
|
||||||
@url{https://f-droid.org/raring32.box} or @url{https://f-droid.org/raring64.box}.
|
@url{https://f-droid.org/raring32.box} or @url{https://f-droid.org/raring64.box}.
|
||||||
|
|
||||||
Documentation for creating a base box can be found at
|
Documentation for creating a base box can be found at
|
||||||
|
@ -11,7 +11,7 @@ fi
|
|||||||
while read line; do
|
while read line; do
|
||||||
if [[ "$line" == *M*metadata/*.txt ]]; then
|
if [[ "$line" == *M*metadata/*.txt ]]; then
|
||||||
file=${line##* }
|
file=${line##* }
|
||||||
|
|
||||||
id=${file##*/}
|
id=${file##*/}
|
||||||
id=${id%.txt*}
|
id=${id%.txt*}
|
||||||
if [ $# -gt 0 ]; then
|
if [ $# -gt 0 ]; then
|
||||||
|
@ -464,7 +464,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
|
|||||||
print "Running 'build' commands in %s" % root_dir
|
print "Running 'build' commands in %s" % root_dir
|
||||||
|
|
||||||
p = FDroidPopen(['bash', '-x', '-c', cmd], cwd=root_dir)
|
p = FDroidPopen(['bash', '-x', '-c', cmd], cwd=root_dir)
|
||||||
|
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
raise BuildException("Error running build command for %s:%s" %
|
raise BuildException("Error running build command for %s:%s" %
|
||||||
(app['id'], thisbuild['version']), p.stdout, p.stderr)
|
(app['id'], thisbuild['version']), p.stdout, p.stderr)
|
||||||
@ -533,7 +533,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
|
|||||||
raise BuildException("Expected to find buildozer-compatible spec at {0}"
|
raise BuildException("Expected to find buildozer-compatible spec at {0}"
|
||||||
.format(spec))
|
.format(spec))
|
||||||
|
|
||||||
defaults = {'orientation': 'landscape', 'icon': '',
|
defaults = {'orientation': 'landscape', 'icon': '',
|
||||||
'permissions': '', 'android.api': "18"}
|
'permissions': '', 'android.api': "18"}
|
||||||
bconfig = ConfigParser(defaults, allow_no_value=True)
|
bconfig = ConfigParser(defaults, allow_no_value=True)
|
||||||
bconfig.read(spec)
|
bconfig.read(spec)
|
||||||
@ -550,7 +550,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
|
|||||||
cmd += ' ANDROIDAPI=' + str(bconfig.get('app', 'android.api'))
|
cmd += ' ANDROIDAPI=' + str(bconfig.get('app', 'android.api'))
|
||||||
cmd += ' VIRTUALENV=virtualenv'
|
cmd += ' VIRTUALENV=virtualenv'
|
||||||
cmd += ' ./distribute.sh'
|
cmd += ' ./distribute.sh'
|
||||||
cmd += ' -m ' + "'" + ' '.join(modules) + "'"
|
cmd += ' -m ' + "'" + ' '.join(modules) + "'"
|
||||||
cmd += ' -d fdroid'
|
cmd += ' -d fdroid'
|
||||||
if subprocess.call(cmd, cwd='python-for-android', shell=True) != 0:
|
if subprocess.call(cmd, cwd='python-for-android', shell=True) != 0:
|
||||||
raise BuildException("Distribute build failed")
|
raise BuildException("Distribute build failed")
|
||||||
@ -614,7 +614,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
|
|||||||
|
|
||||||
if flavour in ['main', 'yes', '']:
|
if flavour in ['main', 'yes', '']:
|
||||||
flavour = ''
|
flavour = ''
|
||||||
|
|
||||||
commands = [config['gradle']]
|
commands = [config['gradle']]
|
||||||
if 'preassemble' in thisbuild:
|
if 'preassemble' in thisbuild:
|
||||||
for task in thisbuild['preassemble'].split():
|
for task in thisbuild['preassemble'].split():
|
||||||
|
@ -492,7 +492,7 @@ class vcs_svn(vcs):
|
|||||||
def userargs(self):
|
def userargs(self):
|
||||||
if self.username is None:
|
if self.username is None:
|
||||||
return ['--non-interactive']
|
return ['--non-interactive']
|
||||||
return ['--username', self.username,
|
return ['--username', self.username,
|
||||||
'--password', self.password,
|
'--password', self.password,
|
||||||
'--non-interactive']
|
'--non-interactive']
|
||||||
|
|
||||||
@ -615,7 +615,7 @@ def manifest_paths(app_dir, flavour):
|
|||||||
if flavour:
|
if flavour:
|
||||||
possible_manifests.append(
|
possible_manifests.append(
|
||||||
os.path.join(app_dir, 'src', flavour, 'AndroidManifest.xml'))
|
os.path.join(app_dir, 'src', flavour, 'AndroidManifest.xml'))
|
||||||
|
|
||||||
return [path for path in possible_manifests if os.path.isfile(path)]
|
return [path for path in possible_manifests if os.path.isfile(path)]
|
||||||
|
|
||||||
# Retrieve the package name
|
# Retrieve the package name
|
||||||
@ -839,7 +839,7 @@ def getsrclib(spec, srclib_dir, srclibpaths=[], subdir=None, target=None,
|
|||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
raise BuildException("Error running prepare command for srclib %s"
|
raise BuildException("Error running prepare command for srclib %s"
|
||||||
% name, p.stdout, p.stderr)
|
% name, p.stdout, p.stderr)
|
||||||
|
|
||||||
if srclib["Update Project"] == "Yes":
|
if srclib["Update Project"] == "Yes":
|
||||||
print "Updating srclib %s at path %s" % (name, libdir)
|
print "Updating srclib %s at path %s" % (name, libdir)
|
||||||
cmd = [os.path.join(config['sdk_path'], 'tools', 'android'),
|
cmd = [os.path.join(config['sdk_path'], 'tools', 'android'),
|
||||||
@ -1234,7 +1234,7 @@ def scan_source(build_dir, root_dir, thisbuild):
|
|||||||
def removeproblem(what, fd, fp):
|
def removeproblem(what, fd, fp):
|
||||||
print 'Removing %s at %s' % (what, fd)
|
print 'Removing %s at %s' % (what, fd)
|
||||||
os.remove(fp)
|
os.remove(fp)
|
||||||
|
|
||||||
def handleproblem(what, fd, fp):
|
def handleproblem(what, fd, fp):
|
||||||
if todelete(fd):
|
if todelete(fd):
|
||||||
removeproblem(what, fd, fp)
|
removeproblem(what, fd, fp)
|
||||||
@ -1285,7 +1285,7 @@ def scan_source(build_dir, root_dir, thisbuild):
|
|||||||
# Presence of a jni directory without buildjni=yes might
|
# Presence of a jni directory without buildjni=yes might
|
||||||
# indicate a problem... (if it's not a problem, explicitly use
|
# indicate a problem... (if it's not a problem, explicitly use
|
||||||
# buildjni=no to bypass this check)
|
# buildjni=no to bypass this check)
|
||||||
if (os.path.exists(os.path.join(root_dir, 'jni')) and
|
if (os.path.exists(os.path.join(root_dir, 'jni')) and
|
||||||
thisbuild.get('buildjni') is None):
|
thisbuild.get('buildjni') is None):
|
||||||
msg = 'Found jni directory, but buildjni is not enabled'
|
msg = 'Found jni directory, but buildjni is not enabled'
|
||||||
problems.append(msg)
|
problems.append(msg)
|
||||||
@ -1381,19 +1381,19 @@ class AsynchronousFileReader(threading.Thread):
|
|||||||
in a separate thread. Pushes read lines on a queue to
|
in a separate thread. Pushes read lines on a queue to
|
||||||
be consumed in another thread.
|
be consumed in another thread.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def __init__(self, fd, queue):
|
def __init__(self, fd, queue):
|
||||||
assert isinstance(queue, Queue.Queue)
|
assert isinstance(queue, Queue.Queue)
|
||||||
assert callable(fd.readline)
|
assert callable(fd.readline)
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self._fd = fd
|
self._fd = fd
|
||||||
self._queue = queue
|
self._queue = queue
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
'''The body of the tread: read lines and put them on the queue.'''
|
'''The body of the tread: read lines and put them on the queue.'''
|
||||||
for line in iter(self._fd.readline, ''):
|
for line in iter(self._fd.readline, ''):
|
||||||
self._queue.put(line)
|
self._queue.put(line)
|
||||||
|
|
||||||
def eof(self):
|
def eof(self):
|
||||||
'''Check whether there is no more content to expect.'''
|
'''Check whether there is no more content to expect.'''
|
||||||
return not self.is_alive() and self._queue.empty()
|
return not self.is_alive() and self._queue.empty()
|
||||||
@ -1419,14 +1419,14 @@ def FDroidPopen(commands, cwd=None):
|
|||||||
result = PopenResult()
|
result = PopenResult()
|
||||||
p = subprocess.Popen(commands, cwd=cwd,
|
p = subprocess.Popen(commands, cwd=cwd,
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
|
|
||||||
stdout_queue = Queue.Queue()
|
stdout_queue = Queue.Queue()
|
||||||
stdout_reader = AsynchronousFileReader(p.stdout, stdout_queue)
|
stdout_reader = AsynchronousFileReader(p.stdout, stdout_queue)
|
||||||
stdout_reader.start()
|
stdout_reader.start()
|
||||||
stderr_queue = Queue.Queue()
|
stderr_queue = Queue.Queue()
|
||||||
stderr_reader = AsynchronousFileReader(p.stderr, stderr_queue)
|
stderr_reader = AsynchronousFileReader(p.stderr, stderr_queue)
|
||||||
stderr_reader.start()
|
stderr_reader.start()
|
||||||
|
|
||||||
# Check the queues for output (until there is no more to get)
|
# Check the queues for output (until there is no more to get)
|
||||||
while not stdout_reader.eof() or not stderr_reader.eof():
|
while not stdout_reader.eof() or not stderr_reader.eof():
|
||||||
# Show what we received from standard output
|
# Show what we received from standard output
|
||||||
@ -1460,7 +1460,7 @@ def remove_signing_keys(build_dir):
|
|||||||
|
|
||||||
with open(path, "r") as o:
|
with open(path, "r") as o:
|
||||||
lines = o.readlines()
|
lines = o.readlines()
|
||||||
|
|
||||||
opened = 0
|
opened = 0
|
||||||
with open(path, "w") as o:
|
with open(path, "w") as o:
|
||||||
for line in lines:
|
for line in lines:
|
||||||
|
@ -10,7 +10,7 @@ import java.util.jar.JarEntry;
|
|||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
|
|
||||||
public class getsig {
|
public class getsig {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
String apkPath = null;
|
String apkPath = null;
|
||||||
@ -29,12 +29,12 @@ public class getsig {
|
|||||||
System.out.println("Specify the APK file to get the signature from!");
|
System.out.println("Specify the APK file to get the signature from!");
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
JarFile apk = new JarFile(apkPath);
|
JarFile apk = new JarFile(apkPath);
|
||||||
java.security.cert.Certificate[] certs = null;
|
java.security.cert.Certificate[] certs = null;
|
||||||
|
|
||||||
Enumeration entries = apk.entries();
|
Enumeration entries = apk.entries();
|
||||||
while (entries.hasMoreElements()) {
|
while (entries.hasMoreElements()) {
|
||||||
JarEntry je = (JarEntry) entries.nextElement();
|
JarEntry je = (JarEntry) entries.nextElement();
|
||||||
|
@ -244,7 +244,7 @@ def main():
|
|||||||
else:
|
else:
|
||||||
spec = os.path.join(root_dir, 'buildozer.spec')
|
spec = os.path.join(root_dir, 'buildozer.spec')
|
||||||
if os.path.exists(spec):
|
if os.path.exists(spec):
|
||||||
defaults = {'orientation': 'landscape', 'icon': '',
|
defaults = {'orientation': 'landscape', 'icon': '',
|
||||||
'permissions': '', 'android.api': "18"}
|
'permissions': '', 'android.api': "18"}
|
||||||
bconfig = ConfigParser(defaults, allow_no_value=True)
|
bconfig = ConfigParser(defaults, allow_no_value=True)
|
||||||
bconfig.read(spec)
|
bconfig.read(spec)
|
||||||
|
@ -85,7 +85,7 @@ def main():
|
|||||||
|
|
||||||
apks = { common.apknameinfo(apkfile)[0] : apkfile for apkfile in
|
apks = { common.apknameinfo(apkfile)[0] : apkfile for apkfile in
|
||||||
sorted(glob.glob(os.path.join(output_dir, '*.apk'))) }
|
sorted(glob.glob(os.path.join(output_dir, '*.apk'))) }
|
||||||
|
|
||||||
for appid, apk in apks.iteritems():
|
for appid, apk in apks.iteritems():
|
||||||
# Get device list each time to avoid device not found errors
|
# Get device list each time to avoid device not found errors
|
||||||
devs = devices()
|
devs = devices()
|
||||||
|
@ -27,7 +27,7 @@ class MetaDataException(Exception):
|
|||||||
def __str__(self):
|
def __str__(self):
|
||||||
return repr(self.value)
|
return repr(self.value)
|
||||||
|
|
||||||
# Designates a metadata field type and checks that it matches
|
# Designates a metadata field type and checks that it matches
|
||||||
#
|
#
|
||||||
# 'name' - The long name of the field type
|
# 'name' - The long name of the field type
|
||||||
# 'matching' - List of possible values or regex expression
|
# 'matching' - List of possible values or regex expression
|
||||||
|
@ -89,7 +89,7 @@ def main():
|
|||||||
# Do the scan...
|
# Do the scan...
|
||||||
buildprobs = common.scan_source(build_dir, root_dir, thisbuild)
|
buildprobs = common.scan_source(build_dir, root_dir, thisbuild)
|
||||||
for problem in buildprobs:
|
for problem in buildprobs:
|
||||||
problems.append(problem +
|
problems.append(problem +
|
||||||
' in ' + app['id'] + ' ' + thisbuild['version'])
|
' in ' + app['id'] + ' ' + thisbuild['version'])
|
||||||
|
|
||||||
except BuildException as be:
|
except BuildException as be:
|
||||||
|
@ -542,7 +542,7 @@ def make_index(apps, apks, repodir, archive, categories):
|
|||||||
if app['id'] == link:
|
if app['id'] == link:
|
||||||
return ("fdroid.app:" + link, app['Name'])
|
return ("fdroid.app:" + link, app['Name'])
|
||||||
raise MetaDataException("Cannot resolve app id " + link)
|
raise MetaDataException("Cannot resolve app id " + link)
|
||||||
addElement('desc',
|
addElement('desc',
|
||||||
metadata.description_html(app['Description'], linkres), doc, apel)
|
metadata.description_html(app['Description'], linkres), doc, apel)
|
||||||
addElement('license', app['License'], doc, apel)
|
addElement('license', app['License'], doc, apel)
|
||||||
if 'Categories' in app:
|
if 'Categories' in app:
|
||||||
@ -618,7 +618,7 @@ def make_index(apps, apks, repodir, archive, categories):
|
|||||||
if app['Requires Root']:
|
if app['Requires Root']:
|
||||||
if 'ACCESS_SUPERUSER' not in apk['permissions']:
|
if 'ACCESS_SUPERUSER' not in apk['permissions']:
|
||||||
apk['permissions'].append('ACCESS_SUPERUSER')
|
apk['permissions'].append('ACCESS_SUPERUSER')
|
||||||
|
|
||||||
if len(apk['permissions']) > 0:
|
if len(apk['permissions']) > 0:
|
||||||
addElement('permissions', ','.join(apk['permissions']), doc, apkel)
|
addElement('permissions', ','.join(apk['permissions']), doc, apkel)
|
||||||
if 'nativecode' in apk and len(apk['nativecode']) > 0:
|
if 'nativecode' in apk and len(apk['nativecode']) > 0:
|
||||||
@ -639,7 +639,7 @@ def make_index(apps, apks, repodir, archive, categories):
|
|||||||
if not options.quiet:
|
if not options.quiet:
|
||||||
print "Creating signed index."
|
print "Creating signed index."
|
||||||
print "Key fingerprint:", repo_pubkey_fingerprint
|
print "Key fingerprint:", repo_pubkey_fingerprint
|
||||||
|
|
||||||
#Create a jar of the index...
|
#Create a jar of the index...
|
||||||
p = subprocess.Popen(['jar', 'cf', 'index.jar', 'index.xml'],
|
p = subprocess.Popen(['jar', 'cf', 'index.jar', 'index.xml'],
|
||||||
cwd=repodir, stdout=subprocess.PIPE)
|
cwd=repodir, stdout=subprocess.PIPE)
|
||||||
@ -860,7 +860,7 @@ def main():
|
|||||||
print "Generated skeleton metadata for " + apk['id']
|
print "Generated skeleton metadata for " + apk['id']
|
||||||
else:
|
else:
|
||||||
print "WARNING: " + apk['apkname'] + " (" + apk['id'] + ") has no metadata"
|
print "WARNING: " + apk['apkname'] + " (" + apk['id'] + ") has no metadata"
|
||||||
print " " + apk['name'] + " - " + apk['version']
|
print " " + apk['name'] + " - " + apk['version']
|
||||||
|
|
||||||
if len(repodirs) > 1:
|
if len(repodirs) > 1:
|
||||||
archive_old_apks(apps, apks, repodirs[0], repodirs[1], config['archive_older'])
|
archive_old_apks(apps, apks, repodirs[0], repodirs[1], config['archive_older'])
|
||||||
|
@ -124,7 +124,7 @@ if 'aptproxy' in config and config['aptproxy']:
|
|||||||
vagrantfile += """
|
vagrantfile += """
|
||||||
config.vm.provision :chef_solo do |chef|
|
config.vm.provision :chef_solo do |chef|
|
||||||
chef.cookbooks_path = "cookbooks"
|
chef.cookbooks_path = "cookbooks"
|
||||||
chef.log_level = :debug
|
chef.log_level = :debug
|
||||||
chef.json = {
|
chef.json = {
|
||||||
:settings => {
|
:settings => {
|
||||||
:sdk_loc => "/home/vagrant/android-sdk",
|
:sdk_loc => "/home/vagrant/android-sdk",
|
||||||
|
@ -15,7 +15,7 @@ class AndroidPermissions
|
|||||||
$this->android_strings_file_path = $android_strings_file_path_in;
|
$this->android_strings_file_path = $android_strings_file_path_in;
|
||||||
$this->cache_file_path = $cache_file_path_in;
|
$this->cache_file_path = $cache_file_path_in;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns an associative array with android permissions and data about them
|
// Returns an associative array with android permissions and data about them
|
||||||
function get_permissions_array() {
|
function get_permissions_array() {
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ class FDroid
|
|||||||
if($query_vars['fdcategory'] == 'All categories') {
|
if($query_vars['fdcategory'] == 'All categories') {
|
||||||
unset($query_vars['fdcategory']);
|
unset($query_vars['fdcategory']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($query_vars['fdid']!==null) {
|
if($query_vars['fdid']!==null) {
|
||||||
$out.=$this->get_app($query_vars);
|
$out.=$this->get_app($query_vars);
|
||||||
} else {
|
} else {
|
||||||
@ -533,7 +533,7 @@ class FDroid
|
|||||||
|
|
||||||
$out.='<form name="categoryform" action="" method="get">';
|
$out.='<form name="categoryform" action="" method="get">';
|
||||||
$out.=$this->makeformdata($query_vars);
|
$out.=$this->makeformdata($query_vars);
|
||||||
|
|
||||||
$out.='<select name="fdcategory" style="color:#333333;" onChange="document.categoryform.submit();">';
|
$out.='<select name="fdcategory" style="color:#333333;" onChange="document.categoryform.submit();">';
|
||||||
foreach($categories as $category) {
|
foreach($categories as $category) {
|
||||||
$out.='<option';
|
$out.='<option';
|
||||||
@ -542,7 +542,7 @@ class FDroid
|
|||||||
$out.='>'.$category.'</option>';
|
$out.='>'.$category.'</option>';
|
||||||
}
|
}
|
||||||
$out.='</select>';
|
$out.='</select>';
|
||||||
|
|
||||||
$out.='</form>'."\n";
|
$out.='</form>'."\n";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -820,7 +820,7 @@ function widget_fdroidlatest($args) {
|
|||||||
extract($args);
|
extract($args);
|
||||||
echo $before_widget;
|
echo $before_widget;
|
||||||
echo $before_title . 'Latest Apps' . $after_title;
|
echo $before_title . 'Latest Apps' . $after_title;
|
||||||
|
|
||||||
$handle = fopen(getenv('DOCUMENT_ROOT').'/repo/latestapps.dat', 'r');
|
$handle = fopen(getenv('DOCUMENT_ROOT').'/repo/latestapps.dat', 'r');
|
||||||
if ($handle) {
|
if ($handle) {
|
||||||
while (($buffer = fgets($handle, 4096)) !== false) {
|
while (($buffer = fgets($handle, 4096)) !== false) {
|
||||||
@ -837,7 +837,7 @@ function widget_fdroidlatest($args) {
|
|||||||
}
|
}
|
||||||
fclose($handle);
|
fclose($handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $after_widget;
|
echo $after_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user