Compare commits

...

91 Commits

Author SHA1 Message Date
clrbuilder 340b6a74d4 Update packages file for version 23030
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-14 13:11:14 +00:00
clrbuilder 2e8f9ef0ab Update packages file for version 23010
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-13 19:07:40 +00:00
Patrick McCarty 4bdd1765c5 Remove explicit cachedir from dnf.conf
DNF doesn't fall back to /var/tmp if it cannot write to the cachedir
location specified in dnf.conf (unlike YUM). Removing the explicit
cachedir setting in dnf.conf enables the fallback behavior, which we
will need for autospec use.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-06-13 12:00:01 -07:00
clrbuilder 45f39671d6 Update packages file for version 22970
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-12 13:02:00 +00:00
clrbuilder 1d46a683e0 Update packages file for version 22950
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-11 19:05:51 +00:00
clrbuilder 41d2113b8a Update packages file for version 22940
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-11 13:09:51 +00:00
clrbuilder 528cd77168 Update packages file for version 22900
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-10 05:08:19 +00:00
Patrick McCarty 916ce142bb pull: skip repos that do not exist locally
Since the user-setup script does not clone package repos by default
anymore, 'make pull' can be made more user-friendly by not printing
warnings if some/all/most of the package repos are not already present
in the packages/ directory.

Instead, only populate the package "pull" list with names from the
packages file that are currently present in the packages/ directory.

Package repos that are not present can be cloned as before: 'make clone'
to clone all missing package repos, or 'make clone_PKG' to clone a
selected package repo.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-06-08 12:01:18 -07:00
clrbuilder e2a3b113f2 Update packages file for version 22860
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-07 19:02:21 +00:00
clrbuilder 0acf617611 Update packages file for version 22850
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-07 13:02:11 +00:00
clrbuilder 39aeb852fe Update packages file for version 22830
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-06 13:02:13 +00:00
clrbuilder 0e7d7e336d Update packages file for version 22800
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-05 16:06:47 +00:00
clrbuilder 2323c9924f Update packages file for version 22770
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-04 13:02:08 +00:00
clrbuilder da1f1f7483 Update packages file for version 22760
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-03 06:49:53 +00:00
clrbuilder 723a925ed8 Update packages file for version 22730
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-06-01 13:02:38 +00:00
clrbuilder 7e9ee1949d Update packages file for version 22720
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-31 21:08:28 +00:00
clrbuilder f0df3f7809 Update packages file for version 22710
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-31 16:14:03 +00:00
Patrick McCarty 9f77c5b172 Adjust mock config for improved caching
Not setting "keepcache=1" results to DNF removing cached RPMs after
every local build.

Also, naming the cachedir "/var/cache/dnf" is important for the cache to
stick around and be stored in /var/cache/mock/clear/dnf_cache.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-30 13:17:34 -07:00
Patrick McCarty 3c52bbd7d7 Add a dnf.conf, and use it by default
The new dnf.conf is very similar to the yum.conf, but because the
in-tree Mock config specifies to use DNF, we should track a dnf.conf
here as well and use it by default.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-30 13:15:17 -07:00
Patrick McCarty 7203329212 Move conf files into dedicated "conf" directory
The "image-creator" and "koji-client-files" subdirectories are named as
such to reflect their purpose from long ago. In the present, the names
are confusing, so I am shuffling files around a bit to reflect current
usage.

All conf files (or conf file templates) have been moved to "conf"
instead, and some documentation has been added to explain what the files
are used for, and how they can be customized.

Also, after moving the conf files, the last file remaining in one of the
old subdirectories is "start_qemu.sh", so move it to the toplevel dir.
We could eventually move the miscellaneous scripts into a dedicated
directory too, but I will save that for another time.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-30 13:15:17 -07:00
clrbuilder b76562fe35 Update packages file for version 22680
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-30 13:02:40 +00:00
clrbuilder 657bf44505 Update packages file for version 22630
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-26 17:06:00 +00:00
clrbuilder c0e4bbf18e Update packages file for version 22610
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-25 13:40:50 +00:00
clrbuilder 38b5e792cd Update packages file for version 22600
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-24 18:31:08 +00:00
clrbuilder 43a333f08f Update packages file for version 22590
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-24 05:43:36 +00:00
clrbuilder 9985956b7c Update packages file for version 22580
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-24 00:19:37 +00:00
clrbuilder 7a62e62b28 Update packages file for version 22540
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-22 13:02:25 +00:00
Patrick McCarty 92977583a6 user-setup: stop installing mock config to /etc
The common tooling behavior changed a while back with respect to the
mock config usage, so update the user-setup script to reflect the
changes. Also add documentation about how to customize the mock config,
which can be leveraged to revert back to the original behavior as well.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-21 16:32:52 -07:00
Patrick McCarty b8d121260a user-setup: create 'mix' directory for future use
To enable future shared workflows between the common tooling and mixer,
create a directory named 'mix' within the tooling workspace.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-21 16:12:44 -07:00
clrbuilder ace60d849e Update packages file for version 22530
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-21 13:02:36 +00:00
clrbuilder a2759eca40 Update packages file for version 22520
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-20 14:28:39 +00:00
clrbuilder 7d0977c785 Update packages file for version 22450
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-17 02:48:06 +00:00
Patrick McCarty 9184a2fd62 user-setup: support abs/rel paths for cert options
Support both absolute and relative paths for the cert options, instead
of relative paths only, by using realpath(1) to resolve the arguments.

(Note that the script cannot reference the path arguments verbatim
because much of the script operates in the workspace's toplevel
directory, which is a different location than where the script is
invoked. In that situation, relative paths would not resolve.)

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-15 14:50:09 -07:00
clrbuilder e80c6eb4bd Update packages file for version 22420
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-15 17:22:37 +00:00
clrbuilder 5cf5fd71cb Update packages file for version 22410
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-15 13:02:06 +00:00
clrbuilder 4b01a5a9cd Update packages file for version 22390
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-14 19:02:44 +00:00
Patrick McCarty 4910ef0882 koji: only pull --rebase if remote is initialized
After running 'make autospecnew', the freshly created repo only exists locally,
so the repo remote is not yet initialized. The 'git pull --rebase' (via 'make
koji') will then fail due to the uninitialized remote. Improve this case by
only rebasing when the remote is initialized.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-14 11:49:26 -07:00
clrbuilder 1518adace0 Update packages file for version 22380
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-14 02:27:47 +00:00
clrbuilder ef0e792c3d Update packages file for version 22370
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-12 02:19:56 +00:00
Patrick McCarty 1bb7b0c471 autospecnew: try to clone repo first
If the user tries to create a new package with 'make autospecnew', a
package repo will be created from scratch, even if a repo exists with
the same name at PKG_BASE_URL.

This problem stems from 'make autospecnew' assuming that all tracked
package repos are cloned already, but is a bad assumption, given the
recent change of behavior for user-setup.sh (not cloning package repos
by default).

Resolve it by first trying to clone the repo with "make clone_PKGNAME";
clone_PKGNAME targets are automatically defined for all packages listed
in the projects/common/packages file. As long as users have an
up-to-date packages file (i.e. are running 'make pull' regularly), then
this solution works well. The case not covered is when packages are
added, then later removed; package repos will already exist remotely in
this case. However, this is a relatively rare case, so I opted to only
handle the common case where a package is added and never removed from
the distro at a later point.

(Side note: I originally wanted to 'git ls-remote REPO' to check remote
repo existence, but this does not work well with Github, as Github
prompts for username/password for remotes that appear to not exist,
since they might be private repos. Prompting a Github username/password
in this case is not very user-friendly. Using the Github API looks
viable, but I would rather not special case the handling of Github repos
in the common tooling.)

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-11 11:21:41 -07:00
Leandro Dorileo 51dc7a7c24 autospec: use MOCK_OPTS
Also make autospec use MOCK_OPTS to pass down arbitrary mock options.

Signed-off-by: Leandro Dorileo <leandro.maciel.dorileo@intel.com>
2018-05-10 15:48:26 -07:00
George T Kramer c8848dbdb2 Allow additional curl options for fetching sources
The DOWNLOAD_MIRROR server, the SOURCES_URL server, and upstream
source tarballs may be hosted in many different environments.
Allow users to supply additional curl options via a config to use
whenever connecting to the DOWNLOAD_MIRROR and SOURCES_URL servers and
work better with their particular hosting environment.  Because upstream
source tarballs can come from many different locations, do not offer a
global config and instead allow users to define this manually as needed
when the rule is used.

Signed-off-by: George T Kramer <george.t.kramer@intel.com>
2018-05-10 15:22:57 -07:00
Leandro Dorileo 92e045116a mock: add MOCK_OPTS
Eventually developers - when they know what they're doing - want to
manipulate a little bit the mock arguments to i.e skip a few stages
in the mock build cycle while they're hacking a package.

One example is when developers are testing changes to a spec file but
not touching dependencies and they're [re]running the build multiple times
it would be nice to not cleanup before the build and run a rebuild
for example with: --rebuild --no-clean

With this patch one should only do:

make build MOCK_OPTS="--rebuild --no-clean"

Signed-off-by: Leandro Dorileo <leandro.maciel.dorileo@intel.com>
2018-05-10 14:56:22 -07:00
Patrick McCarty 1f3475a1ef Move "Manual setup" section to end of README
Users are encouraged to run the user-setup script as documented in the
"Automated setup" section. To clarify that the "Manual setup" section is
an alternative to "Automated setup", move those docs to the end of the
README instead.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-10 13:28:18 -07:00
Patrick McCarty f836786e2d user-setup: update docs in the README
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-10 13:23:34 -07:00
Patrick McCarty 7dc88fd01a user-setup: do not clone package repos by default
Because the package repo cloning process can take a lot of time, do not
clone them by default. Instead, add a new --clone-packages|-a option to
perform this task.

Also, immediately before the script exits, document some possible next
steps when *not* cloning package repos (the new default).

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-10 12:01:25 -07:00
Patrick McCarty 250efaef8f user-setup: enable a configurable workspace name
To allow setting up multiple workspaces in the same directory, or if the
name "clearlinux" is not the desired name, add a --directory|-d option
to let the user configure it.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-10 11:46:52 -07:00
Patrick McCarty c6532c6759 user-setup: enable parallel repo cloning
Since Clear Linux has many package repos, cloning them all in serial can
take a long time. Add a -j option to the script to let users speed up
the process.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-10 11:19:15 -07:00
Patrick McCarty f1c85e3294 user-setup: switch to 2-space indent
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-05-10 10:45:12 -07:00
clrbuilder f5abc3a8d3 Update packages file for version 22340
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-09 19:02:00 +00:00
clrbuilder 74d5bc42f5 Update packages file for version 22330
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-09 13:02:01 +00:00
clrbuilder d6cc120a3c Update packages file for version 22310
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-08 14:07:03 +00:00
clrbuilder 71c1bd013f Update packages file for version 22290
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-07 13:19:54 +00:00
clrbuilder aadbd40a21 Update packages file for version 22250
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-03 19:38:24 +00:00
clrbuilder 60020aebcc Update packages file for version 22230
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-03 13:01:47 +00:00
clrbuilder 3a00f7eda4 Update packages file for version 22220
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-02 19:02:26 +00:00
clrbuilder 0470861400 Update packages file for version 22210
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-02 13:01:58 +00:00
clrbuilder 4fac58a65e Update packages file for version 22190
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-05-01 13:02:34 +00:00
clrbuilder 743041a30c Update packages file for version 22180
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-30 17:25:53 +00:00
clrbuilder 59f9bb1f7a Update packages file for version 22150
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-28 21:26:16 +00:00
clrbuilder 1e74d17500 Update packages file for version 22120
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-26 19:20:29 +00:00
clrbuilder 6a7fac08d9 Update packages file for version 22060
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-24 19:02:11 +00:00
Patrick McCarty 932c2236a7 generateupstream: fix upstream file handling
My previous change to handling of the 'upstream' file assumed that the
file exists already, but this need not be true.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-24 10:12:34 -07:00
Patrick McCarty 6c92ce3160 sources: download files directly if SOURCES_URL undefined
When SOURCES_URL is not defined, the current behavior of extracting
source files from SRPMs in the latest published Clear Linux release has
proven to not work so well: It is not optimal when users are adding new
packages, modifying existing packages, not building from latest master,
etc.

Instead, run 'generateupstream' automatically so that source files are
downloaded from the remote locations listed in the spec file. This
target creates the 'upstream' file too, which becomes useful if the user
later defines SOURCES_URL, when 'upstream' is actively consumed.

In the event that download errors occur, as a fallback mechanism, try to
find the corresponding SRPM from a published release of Clear Linux OS.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-23 16:07:33 -07:00
Patrick McCarty 3e2219c07e sources: move srpm fetch code to separate target
I will reusing this code (largely unmodified) in the next commit, so
move it into a separate target to easily inspect changes.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-23 16:07:33 -07:00
Patrick McCarty f0d2523151 sources/generateupstream: properly handle curl errors
If any of the curl commands fail, it's better for the entire target to
fail. In this way, developers will be properly notified.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-23 14:25:51 -07:00
Patrick McCarty de39e64e29 Fix some indentation issues
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-23 14:15:58 -07:00
Patrick McCarty 877fee6375 sources: follow SOURCES_URL redirects; remove noproxy requirement
The curl --no-proxy hint is not needed anymore, since Clear Linux OS has
an autoproxy, and curl will honor proxy environment variables.

Also, pass -L to curl to follow redirects, similarly to other curl calls
in this makefile.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-23 13:47:24 -07:00
Patrick McCarty e921a2a883 generateupstream: make URL extraction more robust
Improve the detection of source URLs by matching only non-commented
Source* lines with "://" present.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-23 13:30:21 -07:00
clrbuilder e00c76846b Update packages file for version 22010
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-20 18:32:15 +00:00
clrbuilder af2c0bea72 Update packages file for version 21970
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-18 19:02:08 +00:00
clrbuilder b99b7e8c25 Update packages file for version 21960
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-18 12:47:49 +00:00
clrbuilder 359d2a8379 Update packages file for version 21860
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-16 02:52:02 +00:00
clrbuilder d828f3a3ce Update packages file for version 21850
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-14 20:29:27 +00:00
clrbuilder 330876d190 Update packages file for version 21830
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-13 13:01:54 +00:00
Patrick McCarty 3bf5f39687 Revert "autospecnew: master branch should track origin/master"
The 'git branch' command fails at this stage because the master branch
is not initialized locally, but because the remote is also not
initialized, additional special incantations are needed to make this
work. Revert it for now so that users do not see an error message from
the 'git branch' command. A proper fix will follow later.

This reverts commit 71d9699bdd.
2018-04-12 18:05:45 -07:00
Patrick McCarty 71d9699bdd autospecnew: master branch should track origin/master
Because 'make koji' expects that master should track origin/master,
initialize the tracking branch during the autospecnew.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-04-12 17:46:01 -07:00
clrbuilder ded920ccb3 Update packages file for version 21810
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-12 13:01:47 +00:00
clrbuilder cc16065a09 Update packages file for version 21790
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-11 13:01:37 +00:00
clrbuilder 45f2185a25 Update packages file for version 21780
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-10 19:05:07 +00:00
clrbuilder 9ffc0b9640 Update packages file for version 21770
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-10 13:03:01 +00:00
clrbuilder 98c5937801 Update packages file for version 21760
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-09 20:56:43 +00:00
clrbuilder a50450212c Update packages file for version 21720
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-08 13:28:18 +00:00
clrbuilder ab77a99a47 Update packages file for version 21710
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-07 17:41:19 +00:00
clrbuilder 090bb77f92 Update packages file for version 21690
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-06 15:50:48 +00:00
clrbuilder f2b7a30d12 Update packages file for version 21670
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-05 13:07:37 +00:00
clrbuilder c26e27ce65 Update packages file for version 21640
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-03 20:07:19 +00:00
clrbuilder 6fa010e10b Update packages file for version 21610
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-03 13:25:42 +00:00
clrbuilder 173673b5c6 Update packages file for version 21600
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-02 19:07:05 +00:00
clrbuilder eea34ccd7f Update packages file for version 21590
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-04-02 13:49:46 +00:00
clrbuilder fa58b00fb7 Update packages file for version 21580
Signed-off-by: clrbuilder <clrbuilder@intel.com>
2018-03-30 19:24:39 +00:00
15 changed files with 514 additions and 218 deletions
+77 -39
View File
@@ -20,8 +20,7 @@ RPMS ?= $(LATEST_RPMS)
WITH_SUDO = $(shell cmp /usr/bin/mock /usr/sbin/mock &> /dev/null && echo sudo ) WITH_SUDO = $(shell cmp /usr/bin/mock /usr/sbin/mock &> /dev/null && echo sudo )
# MOCK_CONFIG_VAL is set in Makefile.shared # MOCK_CONFIG_VAL is set in Makefile.shared
MOCK ?= $(WITH_SUDO) /usr/bin/mock -r $(MOCK_CONFIG_VAL) MOCK ?= $(WITH_SUDO) /usr/bin/mock -r $(MOCK_CONFIG_VAL) $(MOCK_OPTS)
ifneq ($(wildcard upstream),) ifneq ($(wildcard upstream),)
__allsources := $(notdir $(strip $(shell cat upstream))) __allsources := $(notdir $(strip $(shell cat upstream)))
@@ -89,6 +88,7 @@ prebuild-checks:
#help files and rpms in the results directory of your package. If there #help files and rpms in the results directory of your package. If there
#help are mutlple tar.gz files for a package, make will do make sources, #help are mutlple tar.gz files for a package, make will do make sources,
#help which creates a src.rpm file from the spec file. #help which creates a src.rpm file from the spec file.
#help Use MOCK_OPTS environment varible to pass down arbitrary mock options.
build: prebuild-checks configemail $(SPECFILE) upstream $(SRPMFILE) build: prebuild-checks configemail $(SPECFILE) upstream $(SRPMFILE)
$(MOCK) $(SRPMFILE) --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME) $(MOCK) $(SRPMFILE) --result=results/ --no-cleanup-after --uniqueext=$(PKG_NAME)
@perl $(TOPLVL)/projects/common/logcheck.pl results/build.log @perl $(TOPLVL)/projects/common/logcheck.pl results/build.log
@@ -150,8 +150,10 @@ pullrebase:
#help autospec: automatically generates a specfile. If there is #help autospec: automatically generates a specfile. If there is
#help already a specfile, it will be overwritten. Several files used by #help already a specfile, it will be overwritten. Several files used by
#help autospec will be created in the process. For more information, see #help autospec will be created in the process.
#help the project at https://github.com/clearlinux/autospec #help Use MOCK_OPTS environment varible to pass down arbitrary mock options
#help to autospec.
#help For more information, see the project at https://github.com/clearlinux/autospec
autospec: pullrebase localreponotice autospec: pullrebase localreponotice
rm -f results/*src.rpm rm -f results/*src.rpm
@if [ -e $(SPECFILE) ] && ! grep -q "# Generated by: autospec.py" $(SPECFILE) ; then \ @if [ -e $(SPECFILE) ] && ! grep -q "# Generated by: autospec.py" $(SPECFILE) ; then \
@@ -166,6 +168,7 @@ autospec: pullrebase localreponotice
--name $(PKG_NAME) \ --name $(PKG_NAME) \
--archives $(ARCHIVES) \ --archives $(ARCHIVES) \
--mock-config $(MOCK_CONFIG_VAL) \ --mock-config $(MOCK_CONFIG_VAL) \
--mock-opts "$(MOCK_OPTS)" \
$${SETVERSION:+ --version $${SETVERSION}} \ $${SETVERSION:+ --version $${SETVERSION}} \
${NON_INTERACTIVE} ${SKIP_GIT} ${CLEANUP} \ ${NON_INTERACTIVE} ${SKIP_GIT} ${CLEANUP} \
$(firstword $(NEWURL) $(URL)); $(firstword $(NEWURL) $(URL));
@@ -205,30 +208,12 @@ bumpnogit:
$(__missingsources): sources $(__missingsources): sources
#help sources: If SOURCES_URL is defined, download required upstream source # First argument is a Clear Linux build number (e.g. 22000)
#help files from that location. Otherwise, try to extract source files from the define fetch-from-srpm
#help SRPM in the latest Clear Linux release, as specified by the LATEST_SRPMS tmp=$$(mktemp -d -p "."); \
#help variable. This will run automatically, as a dependency. NOTE: A Koji
#help server can make use of this "make sources" command, since it lives in a
#help repo named "common". If you use this makefile in Koji, ensure
#help "make sources" continues to work for both remote and local builds, since
#help it is a prerequisite of several commands for building packages.
sources: upstream
ifneq ($(strip $(SOURCES_URL)),)
while read u; do \
case "$$u" in \
"") continue ;; \
*://*) n="$$u" ;; \
*) n="$(SOURCES_URL)/$$u" ;; \
esac; \
curl --fail --noproxy "*" "$$n" -o `basename "$$n"`; \
done < upstream
else
@tmp=$$(mktemp -d -p "."); \
srpm=$$(rpmspec --srpm -q --qf "%{NVR}.src.rpm\n" $(SPECFILE)); \ srpm=$$(rpmspec --srpm -q --qf "%{NVR}.src.rpm\n" $(SPECFILE)); \
if cd "$$tmp" && ! curl -f -L -O $(LATEST_SRPMS)/$$srpm; then \ if cd "$$tmp" && ! curl -s -S -f -L -O $(MIRROR_CURL_OPTS) $(DOWNLOAD_MIRROR)/releases/$(1)/clear/source/SRPMS/$$srpm; then \
echo "Failed to download $$srpm from latest Clear Linux release." >&2; \ echo "Failed to download $$srpm from Clear Linux release $(1)." >&2; \
echo "Run \"git pull\" and try again." >&2; \
cd .. && rm -rf "$$tmp"; \ cd .. && rm -rf "$$tmp"; \
exit 1; \ exit 1; \
fi; \ fi; \
@@ -236,14 +221,58 @@ else
cd ..; \ cd ..; \
srclist=$$(rpmspec --srpm -q --qf "[%{SOURCE}\n]" $(SPECFILE)); \ srclist=$$(rpmspec --srpm -q --qf "[%{SOURCE}\n]" $(SPECFILE)); \
for s in $$srclist; do \ for s in $$srclist; do \
if ! mv "$$tmp"/$$s .; then \ if ! mv --no-clobber "$$tmp"/$$s .; then \
echo "Missing source file \"$$s\" in $${srpm}." >&2; \ echo "Missing source file \"$$s\" in $${srpm}." >&2; \
rm -rf "$$tmp"; \ rm -rf "$$tmp"; \
exit 1; \ exit 1; \
fi; \ fi; \
echo "Retrieved source file $$s ..."; \ echo "Retrieved source file $$s ..."; \
done; \ done; \
rm -rf "$$tmp"; rm -rf "$$tmp"
endef
#help sources: If SOURCES_URL is defined, download required upstream source files
#help from that location. Otherwise, try to download source files according to the
#help URLs listed in the spec file. If any of the source files fail to download,
#help check for the relevant SRPM from published releases of Clear Linux OS, and
#help extract the files if found. Note that SRPMs are taken from the DOWNLOAD_MIRROR
#help location. This will run automatically, as a dependency. NOTE: A Koji server can
#help make use of this "make sources" command, since it lives in a repo named
#help "common". If you use this makefile in Koji, ensure "make sources" continues to
#help work for both remote and local builds, since it is a prerequisite of several
#help commands for building packages.
ifneq ($(strip $(SOURCES_URL)),)
sources: upstream
while read u; do \
case "$$u" in \
"") continue ;; \
*://*) n="$$u" ;; \
*) n="$(SOURCES_URL)/$$u" ;; \
esac; \
if ! curl --fail -L -o `basename "$$n"` $(SOURCES_CURL_OPTS) "$$n"; then \
echo "Failed to download $$n"; \
exit 1; \
fi; \
done < upstream
else
sources:
@$(MAKE) generateupstream; \
[ $$? -eq 0 ] && exit 0; \
nvr="$$(rpmspec --srpm -q --qf '%{NAME}\t%{VERSION}\t%{RELEASE}\n' $(SPECFILE))"; \
latest_builds=$$(git -C $(TOPLVL)/projects/common tag -l | sort -rn); \
for b in $$latest_builds; do \
url="$(DOWNLOAD_MIRROR)/releases/$$b/clear/source/package-sources"; \
echo "Checking for source files in build $$b ..."; \
if grep -q "$$nvr" <(curl -s -f -L $(MIRROR_CURL_OPTS) $$url); then \
$(call fetch-from-srpm,$$b); \
if [ $$? -eq 0 ]; then \
echo "Source files retrieved from build $$b"; \
exit 0; \
fi; \
fi; \
done; \
echo "Source files not found for package"; \
exit 1
endif endif
prekoji-checks: prekoji-checks:
@@ -257,8 +286,10 @@ koji: prekoji-checks kojidef
@if ! git branch | grep -q -E '^\* master'; then \ @if ! git branch | grep -q -E '^\* master'; then \
echo "Error: Must be on the master branch to submit to koji" >&2; \ echo "Error: Must be on the master branch to submit to koji" >&2; \
exit 1; \ exit 1; \
fi; \
if git rev-parse --verify --quiet origin/master > /dev/null; then \
git pull --rebase; \
fi fi
git pull --rebase
git tag $(SRPMVERS) git tag $(SRPMVERS)
git push origin master refs/tags/$(SRPMVERS) git push origin master refs/tags/$(SRPMVERS)
$(KOJI_CMD) build $$KOJI_NOWAIT $(KOJI_TAG) $(PKG_BASE_URL)/$(PKG_NAME)?#$(SRPMVERS) $(KOJI_CMD) build $$KOJI_NOWAIT $(KOJI_TAG) $(PKG_BASE_URL)/$(PKG_NAME)?#$(SRPMVERS)
@@ -362,18 +393,25 @@ install:
#help generateupstream: Run this rule to create or update the 'upstream' file #help generateupstream: Run this rule to create or update the 'upstream' file
#help by downloading the upstream source tarballs listed in the spec file and #help by downloading the upstream source tarballs listed in the spec file and
#help calculating their hashes. Autospec performs this step automatically, so ignore #help calculating their hashes. Autospec performs this step automatically, so
#help it for packages managed with autospec. #help ignore it for packages managed with autospec. Additional curl options
#help may be used for downloading the upstream source tarballs by defining the
#help CURL_OPTS variable for this rule.
generateupstream: generateupstream:
@rm -f upstream @[ -e upstream ] && mv upstream upstream.bak; \
@urls=$$(rpmspec -D '_vendor clr' -P $(SPECFILE) | grep Source | cut -d: -f2- | grep '://'); \ urls=$$(rpmspec -D '_vendor clr' -P $(SPECFILE) | sed -n "s|^Source[0-9]*[[:blank:]]*:[[:blank:]]*\(..*://..*\)$$|\1|p"); \
for url in $$urls; do \ for url in $$urls; do \
filename=$$(basename $$url); \ filename=$$(basename $$url); \
if [ ! -e $$filename ]; then \ if [ ! -e $$filename ]; then \
curl --fail -L -O $$url; \ if ! curl --fail -L -O $(CURL_OPTS) $$url; then \
fi; \ echo "Failed to download $$url"; \
echo $$(sha1sum $$filename | cut -d\ -f1)/$$filename >> upstream; \ [ -e upstream.bak ] && mv --no-clobber upstream.bak upstream; \
exit 1; \
fi; \
fi; \
echo $$(sha1sum $$filename | cut -d\ -f1)/$$filename >> upstream; \
done done
@rm -f upstream.bak
@cat upstream @cat upstream
#help drop-abandoned: Remove all unused patches from the git tree #help drop-abandoned: Remove all unused patches from the git tree
+10 -4
View File
@@ -26,6 +26,9 @@ CGIT_BASE_URL =
# Location of upstream tarball cache used by 'make build', 'make sources', etc. # Location of upstream tarball cache used by 'make build', 'make sources', etc.
SOURCES_URL = SOURCES_URL =
# Additional curl options to use when downloading files from SOURCES_URL
SOURCES_CURL_OPTS =
# Location where package repos are hosted. # Location where package repos are hosted.
PKG_BASE_URL = https://github.com/clearlinux-pkgs PKG_BASE_URL = https://github.com/clearlinux-pkgs
@@ -38,6 +41,9 @@ PROJ_PKGS = autospec clr-bundles common
# Clear Linux download mirror to use # Clear Linux download mirror to use
DOWNLOAD_MIRROR = https://cdn.download.clearlinux.org DOWNLOAD_MIRROR = https://cdn.download.clearlinux.org
# Additional curl options to use when downloading files from DOWNLOAD_MIRROR
MIRROR_CURL_OPTS =
# Location of release content from latest Clear Linux release # Location of release content from latest Clear Linux release
LATEST_RELEASE = $(DOWNLOAD_MIRROR)/current LATEST_RELEASE = $(DOWNLOAD_MIRROR)/current
@@ -48,17 +54,17 @@ LATEST_SRPMS = $(LATEST_RELEASE)/source/SRPMS
PACKAGES_FILE = $(TOPLVL)/projects/common/packages PACKAGES_FILE = $(TOPLVL)/projects/common/packages
# Configuration file for autospec. # Configuration file for autospec.
AUTOSPEC_CONF = $(TOPLVL)/projects/common/autospec.conf AUTOSPEC_CONF = $(TOPLVL)/projects/common/conf/autospec.conf
# Set this variable to any non-empty value to use the package mappings stored # Set this variable to any non-empty value to use the package mappings stored
# in "pkg-mapping" for cloning/pulling package repos. # in "pkg-mapping" for cloning/pulling package repos.
USE_PACKAGE_MAPPING = yes USE_PACKAGE_MAPPING = yes
# Package manager config file. Default to the in-tree copy. # Package manager config file. Default to the in-tree copy of dnf.conf.
PM_CONF = $(TOPLVL)/projects/common/image-creator/yum.conf PM_CONF = $(TOPLVL)/projects/common/conf/dnf.conf
# Mock configuration file. Default to the in-tree copy. # Mock configuration file. Default to the in-tree copy.
MOCK_CONF = $(TOPLVL)/projects/common/koji-client-files/clear.cfg MOCK_CONF = $(TOPLVL)/projects/common/conf/clear.cfg
# Include any site local configuration variables. These variables may override # Include any site local configuration variables. These variables may override
+2 -2
View File
@@ -14,9 +14,9 @@ define loopup
@sudo partprobe /dev/loop$(DEVICE) @sudo partprobe /dev/loop$(DEVICE)
@sleep 1 @sleep 1
@if [ -e /dev/loop$(DEVICE)p3 ]; then \ @if [ -e /dev/loop$(DEVICE)p3 ]; then \
sudo mount /dev/loop$(DEVICE)p3 $(TOPLVL)/image; \ sudo mount /dev/loop$(DEVICE)p3 $(TOPLVL)/image; \
else \ else \
sudo mount /dev/loop$(DEVICE)p2 $(TOPLVL)/image; \ sudo mount /dev/loop$(DEVICE)p2 $(TOPLVL)/image; \
fi fi
@sudo mount /dev/loop$(DEVICE)p1 $(TOPLVL)/image/boot @sudo mount /dev/loop$(DEVICE)p1 $(TOPLVL)/image/boot
endef endef
+8 -2
View File
@@ -10,6 +10,7 @@ include $(TOPLVL)/projects/common/Makefile.shared
SHELL = /bin/bash SHELL = /bin/bash
PKGS = $(shell cat $(PACKAGES_FILE)) PKGS = $(shell cat $(PACKAGES_FILE))
PKGS_LOCAL = $(sort $(filter ${PKGS},$(subst packages/,,$(wildcard packages/*))))
proj_PKGS = $(addprefix proj_,$(PROJ_PKGS)) proj_PKGS = $(addprefix proj_,$(PROJ_PKGS))
clone_PKGS = $(addprefix clone_,$(PKGS)) clone_PKGS = $(addprefix clone_,$(PKGS))
@@ -64,7 +65,7 @@ cvecheck:
#help of merge commits, while displaying any changes since your last pull. It is #help of merge commits, while displaying any changes since your last pull. It is
#help silent if there are no changes. #help silent if there are no changes.
.PHONY: pull ${PULL_PKGS} .PHONY: pull ${PULL_PKGS}
PULL_PKGS:= $(addprefix PULL_projects/,$(PROJ_PKGS)) $(addprefix PULL_packages/,$(PKGS)) PULL_PKGS:= $(addprefix PULL_projects/,$(PROJ_PKGS)) $(addprefix PULL_packages/,${PKGS_LOCAL})
${PULL_PKGS}: ${PULL_PKGS}:
@p=$(patsubst PULL_%,%,$@) ; \ @p=$(patsubst PULL_%,%,$@) ; \
if [ ! -d "$$p/.git" ]; then echo "Nothing to pull for $$p - $$p/.git missing"; exit 0; fi; \ if [ ! -d "$$p/.git" ]; then echo "Nothing to pull for $$p - $$p/.git missing"; exit 0; fi; \
@@ -191,12 +192,16 @@ provides:
#help autospecnew: Creates a new autospec package with for a given URL=$(URL) #help autospecnew: Creates a new autospec package with for a given URL=$(URL)
#help with NAME=$(NAME). Several files used by autospec will be created in the #help with NAME=$(NAME). Several files used by autospec will be created in the
#help process. For more information about autospec, see the project page on Github https://github.com/clearlinux/autospec #help process.
#help Use MOCK_OPTS environment varible to pass down arbitrary mock options
#help to autospec.
#help For more information about autospec, see the project page on Github https://github.com/clearlinux/autospec
autospecnew: localreponotice autospecnew: localreponotice
@if [ -z $(NAME) ] || [ -z $(URL) ]; then \ @if [ -z $(NAME) ] || [ -z $(URL) ]; then \
echo "Please specify NAME and URL. The ARCHIVES variable is optional."; \ echo "Please specify NAME and URL. The ARCHIVES variable is optional."; \
exit 1; \ exit 1; \
fi fi
-$(MAKE) clone_$(NAME)
@if [ ! -d $(TOPLVL)/packages/$(NAME)/.git ]; then \ @if [ ! -d $(TOPLVL)/packages/$(NAME)/.git ]; then \
echo "no remote repository found, creating new package repository and running autospec"; \ echo "no remote repository found, creating new package repository and running autospec"; \
mkdir -p $(TOPLVL)/packages/$(NAME); \ mkdir -p $(TOPLVL)/packages/$(NAME); \
@@ -215,6 +220,7 @@ autospecnew: localreponotice
--name $(NAME) \ --name $(NAME) \
--archives $(ARCHIVES) \ --archives $(ARCHIVES) \
--mock-config $(MOCK_CONFIG_VAL) \ --mock-config $(MOCK_CONFIG_VAL) \
--mock-opts "$(MOCK_OPTS)" \
$${SETVERSION:+ --version $${SETVERSION}} \ $${SETVERSION:+ --version $${SETVERSION}} \
${NON_INTERACTIVE} ${SKIP_GIT} ${CLEANUP} \ ${NON_INTERACTIVE} ${SKIP_GIT} ${CLEANUP} \
$(URL); \ $(URL); \
+69 -36
View File
@@ -31,43 +31,13 @@ $ ./user-setup.sh
After the script completes, make sure to logout and login again to complete the After the script completes, make sure to logout and login again to complete the
setup process. setup process.
The script either accepts no options, or all (3) options in case you are The script accepts several options, or no options at all. The options are
configuring the Koji CLI for remote building on a Koji server. The options are documented in the script's `--help` output. Note that if you are supplying any
documented in the script's `--help` output. of the three Koji cert options (`-k`, `-s`, or `-c`), the other two options
must be supplied as well.
### Manual setup If you do not wish to run the user-setup script, see the "Manual setup" section
below for hints about how to initialize the tooling workspace.
On your Clear Linux system, create a workspace for Clear Linux development
work:
```
$ mkdir clearlinux
```
Clone this repo into a `projects` directory within the workspace:
```
$ cd clearlinux
$ mkdir projects
$ git clone https://github.com/clearlinux/common projects/common
```
Create the toplevel tooling Makefile:
```
$ ln -s projects/common/Makefile.toplevel Makefile
```
Clone all Clear Linux package and project repositories:
```
$ make clone
```
Note: You can clone the repos in parallel by using make's `-j` option.
At this point, the `packages` directory will contain all Clear Linux package
repos, and `projects` will contain common, clr-bundles, and autospec repos.
## Example usage ## Example usage
@@ -141,3 +111,66 @@ package, a `make bump` command is available for this purpose.
$ make bump $ make bump
$ make build $ make build
``` ```
## Other topics
### Customizing the mock config
In the past, the various make commands that call `mock` required a mock config
installed at `/etc/mock/clear.cfg`. However, at present, the commands will
instead use the mock config within this repo (`conf/clear.cfg`).
If you wish to use a custom mock config, you must override the `MOCK_CONF`
variable to specify a different value to pass to mock's `-r` option. The value
is either a full path that ends with `.cfg`, or a config NAME installed at
`/etc/mock/<NAME>.cfg`. You can override the `MOCK_CONF` config variable by
redefining it in `Makefile.config.site_local`, which must reside at the
toplevel directory in this repo.
For example, to retain the old behavior of mock using `/etc/mock/clear.cfg`,
add this line to `Makefile.config.site_local`:
```
MOCK_CONF = /etc/mock/clear.cfg
```
If `Makefile.config.site_local` doesn't exist already, create it.
### Manual setup
If you did not run the user-setup script (see "Automated setup" section above),
you will want to set up the developer tooling workspace manually. This section
provides general documentation for the manual setup process, and it is not
meant to be exhaustive.
On your Clear Linux system, create a workspace for Clear Linux development
work:
```
$ mkdir clearlinux
```
Clone this repo into a `projects` directory within the workspace:
```
$ cd clearlinux
$ mkdir projects
$ git clone https://github.com/clearlinux/common projects/common
```
Create the toplevel tooling Makefile:
```
$ ln -s projects/common/Makefile.toplevel Makefile
```
Clone all Clear Linux package and project repositories:
```
$ make clone
```
Note: You can clone the repos in parallel by using make's `-j` option.
At this point, the `packages` directory will contain all Clear Linux package
repos, and `projects` will contain common, clr-bundles, and autospec repos.
+31
View File
@@ -0,0 +1,31 @@
# Configuration files
This directory contains various configuration files used by the developer
tooling framework.
Unless otherwise noted in the config file documentation below, the config files
can be modified with custom, site-local changes by modifying a variable in
`Makefile.config.site_local` to point to a location of your choice (e.g.
somewhere in `/etc`). The framework will then read the config file from the
location you have specified instead, so copy the in-tree copy to that location
as a starting point if you need to.
* `autospec.conf`: default Autospec configuration file used by `make autospec`
and `make autospecnew`. All configuration is commented out by default, so
default Autospec settings are used. Config variable: `AUTOSPEC_CONF`
* `clear.cfg`: default Mock configuration file used by various targets that
call out to Mock. Config variable: `MOCK_CONF`
* `dnf.conf`: DNF conf for use as the package manager configuration file, made
available for the framework's local repo support. Config variable: `PM_CONF`
* `yum.conf`: YUM conf for use as the package manager configuration file, made
available for the framework's local repo support. Config variable: `PM_CONF`
* `koji.conf`: template Koji configuration file. It is installed by
`user-setup.sh` to `/etc/koji.conf`, and the in-tree copy is not used. If you
are using Koji with the framework, you will need to modify `/etc/koji.conf`
according to how the Koji instance is set up for your environment. Configuring
the installation location via `Makefile.config.site_local` is not possible at
the moment but is a planned feature.
+1 -1
View File
@@ -18,6 +18,6 @@
# an absolute path or a path relative to this autospec.conf. # an absolute path or a path relative to this autospec.conf.
#packages_file = #packages_file =
# Path to yum config, used for generating whatrequires. It can be an absolute # Path to dnf/yum config, used for generating whatrequires. It can be an absolute
# path or a path relative to this autospec.conf. # path or a path relative to this autospec.conf.
#yum_conf = #yum_conf =
@@ -10,13 +10,14 @@ config_opts['releasever'] = 'clear'
config_opts['package_manager'] = 'dnf' config_opts['package_manager'] = 'dnf'
config_opts['yum.conf'] = """ config_opts['dnf.conf'] = """
[main] [main]
cachedir=/var/cache/yum cachedir=/var/cache/dnf
keepcache=1
debuglevel=1 debuglevel=1
reposdir=/dev/null reposdir=/dev/null
logfile=/var/log/yum.log logfile=/var/log/dnf.log
retries=20 retries=20
obsoletes=1 obsoletes=1
gpgcheck=0 gpgcheck=0
+24
View File
@@ -0,0 +1,24 @@
[main]
keepcache=1
debuglevel=1
logfile=/var/log/dnf.log
exactarch=1
obsoletes=1
gpgcheck=0
plugins=0
retries=10
installonly_limit=3
reposdir=/root/mash
[clear]
name=Clear
baseurl=https://cdn.download.clearlinux.org/current/x86_64/os/
enabled=1
gpgcheck=0
[clear-source]
name=Clear sources
failovermethod=priority
baseurl=https://cdn.download.clearlinux.org/current/source/SRPMS/
enabled=1
gpgcheck=0
+154 -30
View File
@@ -7,6 +7,8 @@ FreeRDP
GConf GConf
Jinja2 Jinja2
Keras Keras
Keras_Applications
Keras_Preprocessing
LS_COLORS LS_COLORS
LVM2 LVM2
LibRaw LibRaw
@@ -25,6 +27,7 @@ OpenSP
Paste Paste
PasteDeploy PasteDeploy
Pillow Pillow
PyMySQL
PyWavelets PyWavelets
PyYAML PyYAML
Pygments Pygments
@@ -39,6 +42,7 @@ R-Cairo
R-CircStats R-CircStats
R-ClustVarLV R-ClustVarLV
R-Cubist R-Cubist
R-DAAG
R-DBI R-DBI
R-DBItest R-DBItest
R-DEoptim R-DEoptim
@@ -62,11 +66,14 @@ R-ICSNP
R-IRdisplay R-IRdisplay
R-IRkernel R-IRkernel
R-ISwR R-ISwR
R-Iso
R-Lahman R-Lahman
R-LearnBayes R-LearnBayes
R-MCMCpack
R-Matching R-Matching
R-MatrixModels R-MatrixModels
R-ModelMetrics R-ModelMetrics
R-NADA
R-NLP R-NLP
R-NMF R-NMF
R-NMOF R-NMOF
@@ -127,6 +134,7 @@ R-bayesplot
R-bdsmatrix R-bdsmatrix
R-betareg R-betareg
R-bibtex R-bibtex
R-biglm
R-bindr R-bindr
R-bindrcpp R-bindrcpp
R-bipartite R-bipartite
@@ -142,6 +150,7 @@ R-broom
R-caTools R-caTools
R-callr R-callr
R-car R-car
R-carData
R-caret R-caret
R-cclust R-cclust
R-cellranger R-cellranger
@@ -150,6 +159,7 @@ R-chron
R-circlize R-circlize
R-classInt R-classInt
R-cli R-cli
R-clue
R-clustMixType R-clustMixType
R-coda R-coda
R-coin R-coin
@@ -198,6 +208,7 @@ R-e1071
R-earth R-earth
R-ellipse R-ellipse
R-energy R-energy
R-estimability
R-evaluate R-evaluate
R-expint R-expint
R-expm R-expm
@@ -214,14 +225,17 @@ R-flexmix
R-forcats R-forcats
R-foreach R-foreach
R-formatR R-formatR
R-fossil
R-fpc R-fpc
R-futile.logger R-futile.logger
R-futile.options R-futile.options
R-future
R-gam R-gam
R-gamm4 R-gamm4
R-gbm R-gbm
R-gclus R-gclus
R-gdata R-gdata
R-geepack
R-geometry R-geometry
R-getopt R-getopt
R-ggjoy R-ggjoy
@@ -230,6 +244,7 @@ R-ggplot2movies
R-ggridges R-ggridges
R-git2r R-git2r
R-glmnet R-glmnet
R-globals
R-glue R-glue
R-gmodels R-gmodels
R-gmp R-gmp
@@ -249,8 +264,10 @@ R-htmltools
R-htmlwidgets R-htmlwidgets
R-httpuv R-httpuv
R-httr R-httr
R-hunspell
R-ica R-ica
R-igraph R-igraph
R-import
R-inline R-inline
R-inum R-inum
R-ipred R-ipred
@@ -266,23 +283,28 @@ R-labelled
R-laeken R-laeken
R-lambda.r R-lambda.r
R-lars R-lars
R-later
R-latticeExtra R-latticeExtra
R-lava R-lava
R-lazyeval R-lazyeval
R-lda R-lda
R-leaflet
R-leaps R-leaps
R-lfe R-lfe
R-libcoin R-libcoin
R-listenv
R-lle R-lle
R-lme4 R-lme4
R-lmtest R-lmtest
R-locfit R-locfit
R-loo R-loo
R-lpSolve R-lpSolve
R-lsmeans
R-lubridate R-lubridate
R-magic R-magic
R-magrittr R-magrittr
R-manipulate R-manipulate
R-manipulateWidget
R-mapproj R-mapproj
R-maps R-maps
R-maptools R-maptools
@@ -291,6 +313,7 @@ R-matrixStats
R-matrixcalc R-matrixcalc
R-maxLik R-maxLik
R-mclust R-mclust
R-mcmc
R-mda R-mda
R-memisc R-memisc
R-memoise R-memoise
@@ -309,6 +332,7 @@ R-modelr
R-modeltools R-modeltools
R-mondate R-mondate
R-multcomp R-multcomp
R-multcompView
R-multiwayvcov R-multiwayvcov
R-munsell R-munsell
R-mvoutlier R-mvoutlier
@@ -321,6 +345,7 @@ R-nortest
R-numDeriv R-numDeriv
R-nycflights13 R-nycflights13
R-openssl R-openssl
R-openxlsx
R-optparse R-optparse
R-packrat R-packrat
R-pamr R-pamr
@@ -353,9 +378,11 @@ R-pracma
R-praise R-praise
R-prettyunits R-prettyunits
R-princurve R-princurve
R-processx
R-prodlim R-prodlim
R-profileModel R-profileModel
R-progress R-progress
R-promises
R-proto R-proto
R-proxy R-proxy
R-pryr R-pryr
@@ -383,6 +410,7 @@ R-reshape2
R-reticulate R-reticulate
R-rgenoud R-rgenoud
R-rgl R-rgl
R-rio
R-rlang R-rlang
R-rmarkdown R-rmarkdown
R-rms R-rms
@@ -413,6 +441,7 @@ R-setRNG
R-sfsmisc R-sfsmisc
R-sgeostat R-sgeostat
R-shape R-shape
R-shapefiles
R-shiny R-shiny
R-shinyjs R-shinyjs
R-shinystan R-shinystan
@@ -429,9 +458,12 @@ R-sourcetools
R-sp R-sp
R-spData R-spData
R-spam R-spam
R-spatstat
R-spatstat.data R-spatstat.data
R-spatstat.utils R-spatstat.utils
R-spdep R-spdep
R-speedglm
R-spelling
R-spls R-spls
R-statmod R-statmod
R-statnet.common R-statnet.common
@@ -470,13 +502,17 @@ R-vegan
R-viridis R-viridis
R-viridisLite R-viridisLite
R-visNetwork R-visNetwork
R-webshot
R-whisker R-whisker
R-withr R-withr
R-xml2 R-xml2
R-xtable R-xtable
R-xts R-xts
R-yaml R-yaml
R-zCompositions
R-zip
R-zoo R-zoo
Remmina
SDL SDL
SDL2 SDL2
SDL2_gfx SDL2_gfx
@@ -539,7 +575,9 @@ asio
asn1crypto asn1crypto
aspell aspell
aspell-en aspell-en
astor
astroid astroid
astunparse
at at
at-spi2-atk at-spi2-atk
at-spi2-core at-spi2-core
@@ -562,12 +600,14 @@ awscli
azure-configs azure-configs
babeltrace babeltrace
babl babl
backcall
backports.functools_lru_cache backports.functools_lru_cache
backports.ssl_match_hostname backports.ssl_match_hostname
backports.weakref backports.weakref
baobab baobab
bash bash
bash-completion bash-completion
bash.static
bash_kernel bash_kernel
bashdb bashdb
bats bats
@@ -577,7 +617,6 @@ bcrypt
bdftopcf bdftopcf
beautifulsoup4 beautifulsoup4
beignet beignet
bigreqsproto
bind-utils bind-utils
binutils binutils
bison bison
@@ -585,6 +624,7 @@ bkcharts
bleach bleach
blktrace blktrace
bluez bluez
bmap-tools
bndl-lamp-basic bndl-lamp-basic
bokeh bokeh
boost boost
@@ -608,6 +648,7 @@ cached-property
cairo cairo
cairomm cairomm
cantarell-fonts cantarell-fonts
capnproto
cargo cargo
caribou caribou
catch2 catch2
@@ -624,6 +665,8 @@ cgit
chardet chardet
check check
cheese cheese
cheroot
cherrypy
chrome-gnome-shell chrome-gnome-shell
chrony chrony
chrpath chrpath
@@ -654,6 +697,7 @@ clr-systemd-config
clr-update-triggers clr-update-triggers
clr-wallpapers clr-wallpapers
clrtrust clrtrust
clucene-core
clutter clutter
clutter-gst clutter-gst
clutter-gtk clutter-gtk
@@ -669,11 +713,15 @@ colord
colord-gtk colord-gtk
comedilib comedilib
compat-SDL2-soname1 compat-SDL2-soname1
compat-cryptsetup-soname4
compat-efivar-soname0 compat-efivar-soname0
compat-fuse-soname2 compat-fuse-soname2
compat-gegl compat-gegl
compat-gegl-0.3
compat-glew-soname1 compat-glew-soname1
compat-gtksourceview-soname3
compat-guile-soname20 compat-guile-soname20
compat-ipset-soname10
compat-libical-soname2 compat-libical-soname2
compat-libpng-soname12 compat-libpng-soname12
compat-libwebp-soname6 compat-libwebp-soname6
@@ -682,16 +730,18 @@ compat-llvm-soname5
compat-mpfr-soname4 compat-mpfr-soname4
compat-opencv-soname32 compat-opencv-soname32
compat-opencv-soname33 compat-opencv-soname33
compat-protobuf-soname14
compat-readline compat-readline
component component
compositeproto
compute-image-packages compute-image-packages
configobj configobj
configparser configparser
confuse
connect-proxy connect-proxy
connman connman
connman-gtk connman-gtk
conntrack-tools conntrack-tools
console-autostart
containerd containerd
contextlib2 contextlib2
coreutils coreutils
@@ -718,8 +768,8 @@ cups-filters
cups-pk-helper cups-pk-helper
curl curl
cve-check-tool cve-check-tool
cxxfilt
cycler cycler
damageproto
dapl dapl
darktable darktable
dask dask
@@ -727,20 +777,23 @@ db
dbus dbus
dbus-glib dbus-glib
dconf dconf
dconf-editor
deap deap
decorator decorator
defusedxml defusedxml
dejagnu dejagnu
desktop-file-utils desktop-file-utils
dfc dfc
dfu-util
dhcp dhcp
dialog dialog
diffoscope diffoscope
diffstat diffstat
diffutils diffutils
dist-pam-configs dist-pam-configs
distro
dmenu
dmidecode dmidecode
dmxproto
dnf dnf
dnf-plugins-core dnf-plugins-core
dnsmasq dnsmasq
@@ -749,6 +802,7 @@ docbook-utils
docbook-xml docbook-xml
docker docker
docker-py docker-py
dockerpy-creds
docutils docutils
dogtail dogtail
dos2unix dos2unix
@@ -757,9 +811,9 @@ double-conversion
doxygen doxygen
dpdk dpdk
dracut dracut
dri2proto
dri3proto
dstat dstat
dtc
dyskctl
e2fsprogs e2fsprogs
ebtables ebtables
ecdsa ecdsa
@@ -805,7 +859,6 @@ findutils
fio fio
firefox firefox
fish fish
fixesproto
fixtures fixtures
flac flac
flake8 flake8
@@ -821,7 +874,6 @@ font-adobe-75dpi
font-bitstream-type1 font-bitstream-type1
font-util font-util
fontconfig fontconfig
fontsproto
freeglut freeglut
freeipmi freeipmi
freetype freetype
@@ -831,7 +883,10 @@ funcsigs
functools32 functools32
fuse fuse
futures futures
fwupd
fwupdate
garcon garcon
gast
gawk gawk
gc gc
gcab gcab
@@ -855,6 +910,7 @@ gevent
gexiv2 gexiv2
gfbgraph gfbgraph
gflags gflags
gftp
ghostscript ghostscript
gimp gimp
git git
@@ -866,9 +922,9 @@ glib
glib-networking glib-networking
glibc glibc
glibmm glibmm
glmark2
global global
glog glog
glproto
glslang glslang
glu glu
glusterfs glusterfs
@@ -939,6 +995,7 @@ grig
grilo grilo
grilo-plugins grilo-plugins
groff groff
grpcio
grub grub
gsettings-desktop-schemas gsettings-desktop-schemas
gsl gsl
@@ -982,12 +1039,17 @@ httpd
httplib2 httplib2
httpretty httpretty
hub hub
hugo
hunspell hunspell
hwloc hwloc
hyperscan hyperscan
hyperstart hyperstart
hypothesis hypothesis
i2c-tools i2c-tools
i3
i3lock
i3status
iasimage
ibus ibus
icalendar icalendar
icdiff icdiff
@@ -999,10 +1061,12 @@ imagesize
imapfilter imapfilter
indent indent
infiniband-diags infiniband-diags
influxdb
iniparse iniparse
init-rdahead init-rdahead
inotify-tools inotify-tools
inputproto intel-gpu-tools
intel-hybrid-driver
intltool intltool
invm-frameworks invm-frameworks
ioping ioping
@@ -1040,6 +1104,7 @@ jedi-vim
jemalloc jemalloc
jmespath jmespath
joe joe
josepy
jq jq
json-c json-c
json-glib json-glib
@@ -1051,9 +1116,16 @@ jupyter-notebook-gist
jupyter_client jupyter_client
jupyter_console jupyter_console
jupyter_core jupyter_core
jupyterlab
jupyterlab_launcher
kafka-dep kafka-dep
kata-image
kata-proxy
kata-qemu-lite
kata-runtime
kata-shim
kbd kbd
kbproto kernel-install
kexec-tools kexec-tools
keyring keyring
keyutils keyutils
@@ -1119,10 +1191,12 @@ libconfig
libcroco libcroco
libcryptui libcryptui
libdatrie libdatrie
libdazzle
libdmx libdmx
libdnf libdnf
libdrm libdrm
libepoxy libepoxy
libev
libevdev libevdev
libevent libevent
libexif libexif
@@ -1135,6 +1209,7 @@ libgee
libgepub libgepub
libgfortran-avx libgfortran-avx
libgfortran-compat-soname3 libgfortran-compat-soname3
libgfortran-compat-soname4
libgit2 libgit2
libglade libglade
libgnome-keyring libgnome-keyring
@@ -1154,10 +1229,12 @@ libisofs
libjpeg-turbo libjpeg-turbo
libjpeg-turbo-soname8 libjpeg-turbo-soname8
libksba libksba
libmbim
libmediaart libmediaart
libmnl libmnl
libmspack libmspack
libmtp libmtp
libmypaint
libndp libndp
libnetfilter_conntrack libnetfilter_conntrack
libnetfilter_cthelper libnetfilter_cthelper
@@ -1178,6 +1255,7 @@ libpipeline
libpng libpng
libpthread-stubs libpthread-stubs
libpwquality libpwquality
libqmi
librepo librepo
librsvg librsvg
librtlsdr librtlsdr
@@ -1186,6 +1264,8 @@ libsass
libseccomp libseccomp
libsecret libsecret
libsigc++ libsigc++
libsmbios
libsmi
libsndfile libsndfile
libsolv libsolv
libsoup libsoup
@@ -1227,7 +1307,9 @@ libxml2-legacy
libxshmfence libxshmfence
libxslt libxslt
libyami libyami
libyami-utils
libzip libzip
libzmq
linecache2 linecache2
links links
linux linux
@@ -1238,12 +1320,15 @@ linux-gce
linux-hyperv linux-hyperv
linux-hyperv-lts linux-hyperv-lts
linux-hyperv-mini linux-hyperv-mini
linux-kata
linux-kvm linux-kvm
linux-libc-headers linux-libc-headers
linux-lts linux-lts
linux-oracle
linux-pk414 linux-pk414
linux-steam-integration linux-steam-integration
linux-tools linux-tools
linuxptp
llvm llvm
llvmlite llvmlite
lmdb lmdb
@@ -1261,6 +1346,7 @@ lzip
lzo lzo
m4 m4
make make
makedepend
man-db man-db
man-pages man-pages
mariadb mariadb
@@ -1271,13 +1357,16 @@ mc
mccabe mccabe
mcelog mcelog
mdadm mdadm
memkind
memshrinker memshrinker
mesa mesa
mesa-demos mesa-demos
meson meson
metacity metacity
metrics-discovery
micro-config-drive micro-config-drive
micro-config-drive-aws micro-config-drive-aws
micro-config-drive-oci
mido mido
minetest minetest
minetest_game minetest_game
@@ -1290,6 +1379,8 @@ mkosi
mock mock
mod_wsgi mod_wsgi
moka-icon-theme moka-icon-theme
more-itertools
moreutils
mosh mosh
motd-update motd-update
motif motif
@@ -1299,6 +1390,7 @@ mozjs52
mpc mpc
mpfr mpfr
mpg123 mpg123
mpi4py
msgpack-python msgpack-python
msmtp msmtp
msr-tools msr-tools
@@ -1310,6 +1402,7 @@ murrine
musl musl
mutt mutt
mutter mutter
mypaint-brushes
mypy mypy
nagios-plugins nagios-plugins
nano nano
@@ -1319,7 +1412,6 @@ nbconvert
nbformat nbformat
nbsphinx nbsphinx
ncurses ncurses
ncurses-compat
ndctl ndctl
ndg_httpsclient ndg_httpsclient
neofetch neofetch
@@ -1343,6 +1435,7 @@ ninja
nlopt nlopt
nodejs nodejs
nose nose
nose-cov
nose-parameterized nose-parameterized
nosync nosync
notebook notebook
@@ -1356,12 +1449,14 @@ nss
nss-altfiles nss-altfiles
ntfs-3g ntfs-3g
numactl numactl
numatop
numba numba
numpy numpy
numpydoc numpydoc
nvme-cli nvme-cli
nvml oath-toolkit
oauth2client oauth2client
ocaml
ocl-icd ocl-icd
offlineimap offlineimap
olefile olefile
@@ -1388,7 +1483,9 @@ openvswitch
opus opus
opusfile opusfile
orc orc
orca
ordereddict ordereddict
osinfo-db-tools
ostree ostree
ovirt-guest-agent ovirt-guest-agent
p11-kit p11-kit
@@ -1423,7 +1520,9 @@ perl-B-Hooks-EndOfScope
perl-CPAN-Meta-Check perl-CPAN-Meta-Check
perl-Capture-Tiny perl-Capture-Tiny
perl-Class-Data-Inheritable perl-Class-Data-Inheritable
perl-Class-Inspector
perl-Class-Singleton perl-Class-Singleton
perl-Class-Tiny
perl-Crypt-SSLeay perl-Crypt-SSLeay
perl-DBI perl-DBI
perl-DateTime perl-DateTime
@@ -1439,7 +1538,14 @@ perl-Error
perl-Eval-Closure perl-Eval-Closure
perl-Exception-Class perl-Exception-Class
perl-Exporter-Tiny perl-Exporter-Tiny
perl-ExtUtils-Config
perl-ExtUtils-Helpers
perl-ExtUtils-InstallPaths
perl-File-Copy-Recursive
perl-File-Listing perl-File-Listing
perl-File-MMagic
perl-File-ShareDir
perl-File-ShareDir-Install
perl-File-Slurp perl-File-Slurp
perl-HTML-Parser perl-HTML-Parser
perl-HTML-Tagset perl-HTML-Tagset
@@ -1464,6 +1570,7 @@ perl-MIME-Base64
perl-MRO-Compat perl-MRO-Compat
perl-Math-BigInt-GMP perl-Math-BigInt-GMP
perl-Module-Build perl-Module-Build
perl-Module-Build-Tiny
perl-Module-Implementation perl-Module-Implementation
perl-Module-Install perl-Module-Install
perl-Module-Pluggable perl-Module-Pluggable
@@ -1476,6 +1583,7 @@ perl-Package-Stash
perl-Params-Validate perl-Params-Validate
perl-Params-ValidationCompiler perl-Params-ValidationCompiler
perl-Path-Class perl-Path-Class
perl-Path-Tiny
perl-Role-Tiny perl-Role-Tiny
perl-Scope-Guard perl-Scope-Guard
perl-Specio perl-Specio
@@ -1483,10 +1591,14 @@ perl-Sub-Exporter-Progressive
perl-Sub-Identify perl-Sub-Identify
perl-Sub-Info perl-Sub-Info
perl-Sub-Quote perl-Sub-Quote
perl-Sub-Uplevel
perl-TAP-Harness-Archive perl-TAP-Harness-Archive
perl-Term-Table perl-Term-Table
perl-Test-Deep perl-Test-Deep
perl-Test-Exception
perl-Test-Fatal perl-Test-Fatal
perl-Test-File
perl-Test-File-ShareDir-Dist
perl-Test-Needs perl-Test-Needs
perl-Test-NoWarnings perl-Test-NoWarnings
perl-Test-Output perl-Test-Output
@@ -1494,7 +1606,9 @@ perl-Test-Pod
perl-Test-Requires perl-Test-Requires
perl-Test-Simple perl-Test-Simple
perl-Test-Taint perl-Test-Taint
perl-Test-Warn
perl-Test-Warnings perl-Test-Warnings
perl-Test-utf8
perl-Test2-Suite perl-Test2-Suite
perl-Text-Autoformat perl-Text-Autoformat
perl-Text-CSV_XS perl-Text-CSV_XS
@@ -1529,15 +1643,17 @@ pkcs11-helper
pkg-config pkg-config
pluggy pluggy
ply ply
pmdk
polkit polkit
poppler poppler
poppler-data
popt popt
portaudio portaudio
portend
posix_ipc posix_ipc
postgresql postgresql
powerline-fonts powerline-fonts
powertop powertop
presentproto
pretend pretend
prettytable prettytable
proc-macro2 proc-macro2
@@ -1563,7 +1679,6 @@ pyatspi
pycairo pycairo
pycodestyle pycodestyle
pycparser pycparser
pycrypto
pycurl pycurl
pydot pydot
pydot_ng pydot_ng
@@ -1589,7 +1704,7 @@ python-augeas
python-dateutil python-dateutil
python-future python-future
python-gflags python-gflags
python-keyczar python-kconfiglib
python-krbV python-krbV
python-magic python-magic
python-memcached python-memcached
@@ -1645,17 +1760,14 @@ qtxmlpatterns
quagga quagga
quilt quilt
ragel ragel
randrproto
rdma-core rdma-core
re2c re2c
readline readline
recordproto
redis redis
redis-native redis-native
redsocks redsocks
renderproto
requests requests
resourceproto requests-mock
rest rest
retry_decorator retry_decorator
retype retype
@@ -1663,8 +1775,10 @@ rng-tools
rope rope
rpcbind rpcbind
rpm rpm
rr
rsa rsa
rsync rsync
rt-tests
ruby ruby
runc runc
rust-std32 rust-std32
@@ -1673,6 +1787,7 @@ rxvt-unicode
s2tc s2tc
s3transfer s3transfer
samba samba
sane-backends
sassc sassc
satyr satyr
sbc sbc
@@ -1686,20 +1801,23 @@ scipy
scons scons
screen screen
scripttest scripttest
scrnsaverproto
seaborn seaborn
seahorse seahorse
secretstorage secretstorage
sed sed
serf
setproctitle setproctitle
setserial setserial
setuptools setuptools
setuptools_scm setuptools_scm
setuptools_scm_git_archive
shadow shadow
shared-mime-info shared-mime-info
sharutils sharutils
shim shim
siege siege
simg-tools
simple-scan
simplegeneric simplegeneric
simplejson simplejson
sip sip
@@ -1715,6 +1833,7 @@ soundmodem
source-code-pro source-code-pro
source-highlight source-highlight
sox sox
spandsp
spark-dep spark-dep
speex speex
speexdsp speexdsp
@@ -1733,7 +1852,9 @@ stack
startup-notification startup-notification
stow stow
strace strace
stress-ng
subunit subunit
subversion
sudo sudo
sure sure
suricata suricata
@@ -1757,6 +1878,7 @@ tcpdump
telemetrics-client telemetrics-client
telepathy-glib telepathy-glib
telepathy-logger telepathy-logger
tempora
tensorboard tensorboard
tensorflow tensorflow
termcolor termcolor
@@ -1768,6 +1890,7 @@ testresources
testscenarios testscenarios
testtools testtools
texinfo texinfo
texlive
tflearn tflearn
thermal_daemon thermal_daemon
thin-provisioning-tools thin-provisioning-tools
@@ -1800,8 +1923,10 @@ tzdata
tzlocal tzlocal
udisks2 udisks2
uhttpmock uhttpmock
unbundle
unicode-xid unicode-xid
unifdef unifdef
unison
unittest2 unittest2
unzip unzip
upower upower
@@ -1817,9 +1942,9 @@ util-linux
util-macros util-macros
uwsgi uwsgi
v4l-utils v4l-utils
vala
valgrind valgrind
vcversioner vcversioner
videoproto
vim vim
vim-go vim-go
vinagre vinagre
@@ -1847,6 +1972,8 @@ wget
wheel wheel
which which
widgetsnbextension widgetsnbextension
wireless-regdb-master
wireshark
woff2 woff2
wol wol
wpa_supplicant wpa_supplicant
@@ -1859,18 +1986,20 @@ xauth
xbitmaps xbitmaps
xcb-proto xcb-proto
xcb-util xcb-util
xcb-util-cursor
xcb-util-image xcb-util-image
xcb-util-keysyms xcb-util-keysyms
xcb-util-renderutil
xcb-util-wm xcb-util-wm
xcb-util-xrm
xclip xclip
xcmiscproto
xcursor-themes xcursor-themes
xcursorgen xcursorgen
xdg-desktop-portal
xdg-user-dirs xdg-user-dirs
xdg-user-dirs-gtk xdg-user-dirs-gtk
xdg-utils xdg-utils
xemacs xemacs
xextproto
xf86-input-evdev xf86-input-evdev
xf86-input-libinput xf86-input-libinput
xf86-input-mouse xf86-input-mouse
@@ -1881,10 +2010,6 @@ xf86-video-ati
xf86-video-fbdev xf86-video-fbdev
xf86-video-nouveau xf86-video-nouveau
xf86-video-vesa xf86-video-vesa
xf86bigfontproto
xf86dgaproto
xf86driproto
xf86vidmodeproto
xfburn xfburn
xfce4-appfinder xfce4-appfinder
xfce4-dev-tools xfce4-dev-tools
@@ -1900,7 +2025,6 @@ xfdesktop
xfsprogs xfsprogs
xfwm4 xfwm4
xhost xhost
xineramaproto
xinit xinit
xkbcomp xkbcomp
xkeyboard-config xkeyboard-config
@@ -1909,8 +2033,8 @@ xmlsec1
xmlstarlet xmlstarlet
xmlto xmlto
xorg-server xorg-server
xorgproto
xorriso xorriso
xproto
xrandr xrandr
xrdb xrdb
xrdp xrdp
+1 -1
View File
@@ -23,7 +23,7 @@ if [ "$#" -eq 0 ]; then
fi fi
if [ ! -e /etc/yum.conf ]; then if [ ! -e /etc/yum.conf ]; then
echo "Error: yum.conf is missing. Please copy projects/common/image-creator/yum.conf to /etc" echo "Error: yum.conf is missing. Please copy projects/common/conf/yum.conf to /etc"
exit 1 exit 1
fi fi
+133 -100
View File
@@ -1,102 +1,131 @@
#!/bin/sh #!/bin/bash
SCRIPT=$(/usr/bin/basename $0) SCRIPT=$(/usr/bin/basename $0)
PEM="" PEM=""
SERVERCA="" SERVERCA=""
CLIENTCA="" CLIENTCA=""
WORKSPACE="clearlinux"
PACKAGE_REPOS=
help() { help() {
printf "%s\n" >&2 "Usage: $SCRIPT [options]" \ printf "%s\n" >&2 "Usage: $SCRIPT [options]" \
"" \ "" \
"Options:" \ "Options:" \
"-k --client-cert PEM_FILE: Enable client user cert for koji configuration; requires a PEM file argument" \ "" \
"-s --server-ca PEM_FILE: Enable server CA cert for koji configuration; requires a PEM file argument" \ "-d --directory NAME: Set up workspace in the given directory." \
"-c --client-ca PEM_FILE: Enable client CA cert for koji configuration; requires a PEM file argument" \ "-a --clone-packages: Clone all package repos." \
"" "-j --jobs [NUM]: Clone repos with NUM jobs. If NUM is not given, it is set to the available CPU count." \
"" \
"-k --client-cert PEM_FILE: Enable client user cert for koji configuration; requires a PEM file argument" \
"-s --server-ca PEM_FILE: Enable server CA cert for koji configuration; requires a PEM file argument" \
"-c --client-ca PEM_FILE: Enable client CA cert for koji configuration; requires a PEM file argument" \
""
}
error() {
echo -e "Error: $1\n" >&2
help
exit 1
} }
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
"--help"|"-h") "--help"|"-h")
help help
exit 0 exit 0
;; ;;
"--client-cert"|"-k") "--client-cert"|"-k")
shift shift
PEM="$PWD/$1" PEM="$(realpath $1)"
;; ;;
"--server-ca"|"-s") "--server-ca"|"-s")
shift shift
SERVERCA="$PWD/$1" SERVERCA="$(realpath $1)"
;; ;;
"--client-ca"|"-c") "--client-ca"|"-c")
shift shift
CLIENTCA="$PWD/$1" CLIENTCA="$(realpath $1)"
;; ;;
*) "--jobs"|"-j")
help if echo "$2" | grep -qx "[1-9][0-9]*"; then
exit 1 shift
;; JOBS="$1"
esac elif [ -f /proc/cpuinfo ]; then
shift JOBS=$(grep -Ec '^processor.*:.*[0-9]+$' /proc/cpuinfo)
fi
;;
"--directory"|"-d")
[ -z "$2" ] && error "Must supply a directory name to the -d option"
[ "${2:0:1}" = "-" ] && error "Directory name cannot begin with \"-\""
shift
WORKSPACE="$1"
;;
"--clone-packages"|"-a")
PACKAGE_REPOS=1
;;
*)
help
exit 1
;;
esac
shift
done done
error() {
echo -e "Error: $1\n" >&2
help
exit 1
}
if [ -z "$PEM" ] && [ -z "$SERVERCA" ] && [ -z "$CLIENTCA" ]; then if [ -z "$PEM" ] && [ -z "$SERVERCA" ] && [ -z "$CLIENTCA" ]; then
USE_KOJI= USE_KOJI=
else else
if [ -z "$PEM" ] || [ -z "$SERVERCA" ] || [ -z "$CLIENTCA" ]; then if [ -z "$PEM" ] || [ -z "$SERVERCA" ] || [ -z "$CLIENTCA" ]; then
error "Must specify all three command line options (or none)" error "Must specify all three command line options (or none)"
fi fi
if [ ! -f "$PEM" ]; then if [ ! -f "$PEM" ]; then
error "Missing koji client PEM key file" error "Missing koji client PEM key file"
fi fi
if [ ! -f "$SERVERCA" ]; then if [ ! -f "$SERVERCA" ]; then
error "Missing koji server CA PEM file" error "Missing koji server CA PEM file"
fi fi
if [ ! -f "$CLIENTCA" ]; then if [ ! -f "$CLIENTCA" ]; then
error "Missing koji client CA PEM file" error "Missing koji client CA PEM file"
fi fi
USE_KOJI="yes" USE_KOJI="yes"
fi
if [ -n "$JOBS" ]; then
JOBS_ARG="-j $JOBS"
fi
if [ -d "$WORKSPACE" ]; then
error "Directory \"$WORKSPACE\" already exists. \
Either remove this workspace, or use a different workspace name."
fi fi
required_progs() { required_progs() {
local bindir="/usr/bin" local bindir="/usr/bin"
for f in git mock rpm rpmbuild ; do for f in git mock rpm rpmbuild ; do
[ ! -x "${bindir}/${f}" ] && missing+="${f} " [ ! -x "${bindir}/${f}" ] && missing+="${f} "
done done
[ "$PEM" ] && [ ! -x /usr/bin/koji ] && missing+="koji " [ "$PEM" ] && [ ! -x /usr/bin/koji ] && missing+="koji "
if [ -n "$missing" ]; then if [ -n "$missing" ]; then
echo "Install the following programs and re-run this script:" >&2 echo "Install the following programs and re-run this script:" >&2
echo $missing >&2 echo $missing >&2
echo 'All programs should be provided in the "os-clr-on-clr" bundle.' >&2 echo 'All programs should be provided in the "os-clr-on-clr" bundle.' >&2
exit 1 exit 1
fi fi
} }
required_progs required_progs
echo 'Initializing development workspace in "clearlinux" . . .' echo "Initializing development workspace in \"$WORKSPACE\" . . ."
if [ -d "clearlinux" ]; then
echo 'Directory "clearlinux" already exists in current directory.' >&2
echo "Cannot initialize workspace." >&2
exit 1
fi
mkdir clearlinux mkdir "$WORKSPACE"
cd clearlinux cd "$WORKSPACE"
echo "Setting up common repo . . ." echo "Setting up common repo . . ."
mkdir projects mkdir projects
git clone https://github.com/clearlinux/common projects/common git clone https://github.com/clearlinux/common projects/common
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Failed to clone common repo." >&2 echo "Failed to clone common repo." >&2
exit 1 exit 1
fi fi
# Finish setup for packages/projects hierarchy # Finish setup for packages/projects hierarchy
@@ -105,48 +134,52 @@ mkdir -p packages/common
ln -sf ../../projects/common/Makefile.common packages/common/Makefile.common ln -sf ../../projects/common/Makefile.common packages/common/Makefile.common
if [ "$USE_KOJI" ]; then if [ "$USE_KOJI" ]; then
echo "Setting up koji certs . . ." echo "Setting up koji certs . . ."
mkdir -p ~/.koji mkdir -p ~/.koji
cp "$PEM" ~/.koji/client.crt cp "$PEM" ~/.koji/client.crt
cp "$CLIENTCA" ~/.koji/clientca.crt cp "$CLIENTCA" ~/.koji/clientca.crt
cp "$SERVERCA" ~/.koji/serverca.crt cp "$SERVERCA" ~/.koji/serverca.crt
if [ ! -f /etc/koji.conf ]; then if [ ! -f /etc/koji.conf ]; then
echo "Setting up koji config . . ." echo "Setting up koji config . . ."
sudo cp projects/common/koji-client-files/koji.conf /etc sudo cp projects/common/conf/koji.conf /etc
fi fi
fi
if [ ! -f /etc/mock/clear.cfg ]; then
echo "Setting up mock config . . ."
sudo mkdir -p /etc/mock
sudo cp projects/common/koji-client-files/clear.cfg /etc/mock
fi fi
echo "Adding user to kvm group . . ." echo "Adding user to kvm group . . ."
sudo usermod -a -G kvm $USER sudo usermod -a -G kvm $USER
echo "Cloning special project repositories . . ." echo "Cloning special project repositories . . ."
make clone-projects make ${JOBS_ARG} clone-projects
if [ -z "$NO_PACKAGE_REPOS" ]; then if [ -n "$PACKAGE_REPOS" ]; then
echo "Cloning all package repositories . . ." echo "Cloning all package repositories . . ."
make clone-packages make ${JOBS_ARG} clone-packages
fi fi
echo "Creating mix workspace . . ."
mkdir -p mix
if [ "$USE_KOJI" ]; then if [ "$USE_KOJI" ]; then
echo "Testing koji installation . . ." echo "Testing koji installation . . ."
if koji moshimoshi; then if koji moshimoshi; then
echo -en "\n************************\n\n" echo -en "\n************************\n\n"
echo "Koji installed and configured successfully" echo "Koji installed and configured successfully"
else else
echo -en "\n************************\n\n" echo -en "\n************************\n\n"
echo "Error with koji installation or configuration" >&2 echo "Error with koji installation or configuration" >&2
exit 1 exit 1
fi fi
fi fi
echo -en "\n************************\n" echo -en "\n************************\n"
echo 'Workspace has been set up in the "clearlinux" directory' echo "Workspace has been set up in \"$WORKSPACE\""
if [ -z "$PACKAGE_REPOS" ]; then
echo "NOTE: To clone all package repos, run \"cd $WORKSPACE; make [-j NUM] clone-packages\""
echo "NOTE: To clone a single package repo with NAME, run \"cd $WORKSPACE; make clone_NAME\""
fi
echo 'NOTE: logout and log back in to finalize the setup process' echo 'NOTE: logout and log back in to finalize the setup process'
# vi: ft=sh sw=2 et sts=2