52 Commits

Author SHA1 Message Date
William Douglas 79eebc6aa6 Remove autospecnewgo target and its component parts
This wasn't a practical target and is no longer used so remove it.

Signed-off-by: William Douglas <william.douglas@intel.com>
2024-07-03 13:33:17 -07:00
William Douglas d1accc8077 Fix CLEANUP option handling for autospecnew target
Signed-off-by: William Douglas <william.douglas@intel.com>
2024-07-03 11:34:09 -07:00
William Douglas 1b841e095d Update help comment for clean-pkgs-dir
Signed-off-by: William Douglas <william.douglas@intel.com>
2023-09-19 11:24:22 -07:00
William Douglas 579d79ef92 Make clean-pkgs-dir backup things it cleans up
If something already exists in backup form, skip it, otherwise move
the content to the backup directory.

Signed-off-by: William Douglas <william.douglas@intel.com>
2023-09-19 11:22:01 -07:00
Patrick McCarty 9c109bcd84 toplevel: always clone main branch for package repos
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2022-12-16 21:18:45 +00:00
Patrick McCarty c44e74f556 Ensure make diff output is not piped to a pager
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2022-09-26 03:14:50 +00:00
Patrick McCarty 96fd23e88b Specify branch name of main for git init of package repos
The default package repo branches are now `main`.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2022-04-11 16:13:18 -07:00
William Douglas 6f5fd11673 Move packages content over to main branch
World has moved to main, start updating accordingly.

Signed-off-by: William Douglas <william.douglas@intel.com>
2022-04-08 01:22:35 -07:00
Patrick McCarty 4ccec6a4d0 diff: use git diff --stat instead of requiring diffstat
Using the --stat flag also has the benefit of automatically colorizing
the output when appropriate.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2022-04-05 12:35:09 -07:00
Patrick McCarty 1559d4e0b5 log: improve query results
Comparing whether commit hashes for `HEAD` and `origin/master` are not
equal captures three typical scenarios:

1. HEAD is behind origin/master
2. HEAD is ahead of origin/master
3. HEAD is ahead of an older commit in origin/master

The intent of `make log` is to capture cases #2 and #3, and not #1, so
use `git rev-list ...` with the appropriate commit range instead.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2022-03-31 22:28:23 -07:00
Patrick McCarty 2d1a67d3b0 Revise handling of autospec repo
Always clone autospec from the upstream clearlinux/autospec github repo
regardless of whether a gitolite instance is configured.

Also, do not set the repo's pushurl, since the expectation is for
contributors to push changes to github forks of autospec, not directly
to the upstream repo.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2021-10-19 12:12:13 -07:00
Patrick McCarty 9b81676c6f The make diff command should ignore untracked content
If a package repo contains only untracked content, `make diff` prints
output for it in this form:

    Uncommitted changes in: packages/FOO
     0 files changed

Avoid this type of output by more carefully detecting local package repo
changes that will actually produce a diffstat.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2021-03-04 02:17:03 +00:00
Patrick McCarty e227e8722b Use %{NVR} queryformat when possible
The `%{NVR}` format is equivalent to `%{NAME}-%{VERSION]-%{RELEASE}`.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2020-12-14 03:52:58 +00:00
Patrick McCarty b924031ba6 Use parameterized function for most rpmspec commands
The `rpmspec` commands usually specify the same flags aside from the
queryformat and the spec file(s) to query.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2020-12-14 03:49:30 +00:00
Patrick McCarty a198b2d0a0 Make local repo support more parallel safe
For commands that modify contents of $(TOPLVL)/repo, wrap them with
`flock`, using a lock file `repo.lock` within the repo directory. This
ensures that the repo directory tree is not otherwise modified while
each command is running.

To keep the implementation simple, I opted to not wrap entire makefile
targets with a lock (e.g. lock the entire operation of `make repoadd`).
If users need that level of control, they can implement locking in a
separate wrapper script.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2020-05-18 13:55:19 -07:00
Patrick McCarty ea568f6239 Support cloning of pre-existing package repos
Over the lifetime of Clear Linux OS, many packages have been added and
removed, but the package *repos* always remain once they have been
created.

Thus, if a package is removed at one point, and later added back to the
distro, the same package repo should be used. This commit adds support
to `make autospecnew` for that use case, always using a pre-existing
package repo if one is available.

(Note that the gitolite repo detection is more complicated because it
must support configurations with and without "wild repos" enabled.)

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2020-04-22 10:45:34 -07:00
Ross Burton 31399a1cb7 Makefile.toplevel: add 'log' command
Add a new 'log' command that is similar to 'diff' but shows the log of
commits from HEAD to origin/master, thus listing all commits that have
not yet been pushed.

For example:
$ make log
packages/glib-networking
glib-networking: enable installed tests

packages/gnome-desktop
gnome-desktop: Autospec creation for update from version 3.34.3 to version 3.36.0

packages/gnome-terminal
gnome-terminal: Autospec creation for update from version 3.34.2 to version 3.36.0.1

Signed-off-by: Ross Burton <ross.burton@intel.com>
2020-04-17 11:45:11 +01:00
Patrick McCarty 185dec68b8 Improve handling of autospec's --mock-opts option
This change allows specifying short/long mock options via MOCK_OPTS
without a leading backslash escape.

For example, `MOCK_OPTS="\--old-chroot --no-clean"` can now be specified
as `MOCK_OPTS="--old-chroot --no-clean"`.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2019-11-11 12:52:26 -08:00
Alex Jaramillo 22a927e26b Removing cve-check-tool
This tool no longer works and the repo looks abandoned (last commit
04/27/2017). The NVD cve database has changed format since.

Signed-off-by: Alex Jaramillo <alex.v.jaramillo@intel.com>
2019-10-01 22:24:48 +00:00
Patrick McCarty af3c84505d toplevel: set autospec pushurl to ssh instead of https
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2019-09-17 14:34:16 -07:00
Patrick McCarty 9d6c5e6677 Fix call to the go-builder wrapper script
Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2019-07-29 17:44:24 -07:00
William Douglas 460ce05217 Add go-builder.py and autospecnewgo target
This change enables recurive dependency resolution and packaging when
creating new go packages. To do so the 'autospecnewgo' target is
created and the autospecnew target is slightly modified to align
make target exit code expectations for failure handling.
2019-07-29 17:44:24 -07:00
Patrick McCarty 67f9a85781 toplevel: simplify clean-pkgs-dir command
Create a PKGS_ORPHANED list containing all orphaned package repos (i.e.
package repos for packages not listed in projects/common/packages,
excluding the local compatibility packages/common directory), and use
that list for the `clean-pkgs-dir` command.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2019-06-18 17:30:19 -07:00
Arjan van de Ven e7d86e5ace make it clear there's no point in submitting routine stuff for review
as it only slows things down
2019-06-14 14:41:28 +00:00
Patrick McCarty 9ed6cf64eb Add notice about for-review.txt; make compatible with git send-email
The for-review.txt files were being generated with `git show` and thus
not compatible with `git send-email`. Use `git format-patch` instead to
fix this issue.

Also add a more prominent notice about the existence of for-review.txt
and its intended purpose.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2019-06-03 15:17:49 -07:00
Patrick McCarty e545190de3 Fixups for autospecnew
- Run git commands within the newly created package repo
- Only run these commands if autospec succeeds

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2019-04-25 15:24:24 -07:00
Arjan van de Ven 9921115897 git diff not git show 2019-04-25 21:59:43 +00:00
Arjan van de Ven 6bc5718c25 Add patchfilter to autsopecnew 2019-04-25 18:21:11 +00:00
Patrick McCarty 012a1a3767 Support pre-checks for autospec and autospecnew too
For some commands, it is useful to be able to add custom prerequisites.
We already support this for `make koji` and `make build`, and there was
just a request to add it for `make autospec` and `make autospecnew`.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-09-21 12:12:23 -07:00
Patrick McCarty 806a1f5593 Fix several commands to use PKGS_LOCAL
Several commands should be using PKGS_LOCAL, which is the list of all
package repos that are present on the system, since the user might not
have all repos from PKGS cloned.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-08-27 14:40:57 -07:00
Patrick McCarty b82d61d686 clean/proper: honor toplevel --jobs value
This fixes integration with the GNU Make jobserver such that the
-j/--jobs value passed to make is actually honored.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-08-27 14:28:58 -07:00
Patrick McCarty f43a186a78 Store copies of binary RPMs in "rpms" dir
To improve visibility of which RPMs a user may want to install after a
build, copy (hardlink) them to a separate "rpms" directory.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-08-01 09:38:27 -07: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
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
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
Patrick McCarty d22e4f985d Minor style fix in Makefile.toplevel
In my previous commit, one of the changed lines used a combination of
tabs and spaces, but it should have used tabs only.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-28 22:19:37 -07:00
Patrick McCarty 8ff80b0be2 Sync options for 'autospec' and 'autospecnew' commands
Over time, the autospec options used for 'autospec' and 'autospecnew'
commands have diverged. They are meant to be in sync, so do that here,
and format the recipe in a way that eases future changes.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-26 14:12:38 -07:00
Patrick McCarty e695db8c80 Fix 'make pull' to honor the autospec pushurl
A 'make clone' sets the proper git pushurl for autospec, but a
subsequent 'make pull' does not honor override. Fix by adding a special
condition for 'make pull'.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-14 17:30:10 -07:00
Patrick McCarty cc6e70bb29 Enable local repo notice for autospec commands
Similar to how a notice is printed for 'make build', enable the same
notice for 'make autospec' and 'make autospecnew'.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-08 14:01:48 -08:00
Patrick McCarty f3989c0d5a Enable local repo support for autospec
Local repo support was recently added for 'make build', so do the same
for 'make autospec' and 'make autospecnew'.

Note that to make mock invocations work at both package-level and
toplevel, I am resolving MOCK_CONFIG_VAL with the realpath function.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-07 16:36:41 -08:00
Patrick McCarty f697b227e8 Rename Makefile.functions to Makefile.shared
The name "shared" makes more sense at this point, since the makefile
does not contain only functions, and it is meant to be shared between
Makefile.common and Makefile.toplevel.

Also, reorder the makefile includes, since Makefile.shared should be
able to use variables defined in Makefile.config.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-07 16:00:24 -08:00
Patrick McCarty ad77e695dc local repo: instantiate repo after creating the directory
DNF seems to ignore an uninitialized repo, but Yum does not. To fix,
make sure to run createrepo immediately after creating the local repo
directory.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-06 16:56:47 -08:00
Patrick McCarty 905b1d1c06 local repo: add toplevel 'repoclean' command
In case the user wants to remove all RPMs from the local repo, they can
now run 'make repoclean' at toplevel.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-06 16:56:47 -08:00
Patrick McCarty e3b1adedd8 local repo: add 'repostatus' command
This new command displays a helpful summary of what packages exist in
the local RPM repo and whether it is enabled for Yum/DNF, Mock, or both.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-06 16:56:47 -08:00
Patrick McCarty a9982b4064 local repo: add Mock support and enable/disable commands
An interface for a local RPM repository already exists, so extend it by
adding Mock support and the ability to enable and disable the
repository, at package level and at toplevel.

Integration for commands that use Mock will be added in separate
commits.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-03-06 16:56:47 -08:00
Patrick McCarty 9892e87aec autospecnew: never clone the remote repo
With the assumption that developers will be keeping up-to-date by
running 'make pull; make clone', trying to clone the remote repo here is
not necessary.

If the package git repo already exists locally, no action is taken.
Otherwise, create a local package git repo, and then run autospec.

Signed-off-by: Patrick McCarty <patrick.mccarty@intel.com>
2018-02-26 13:34:52 -08:00
Leandro Dorileo 728e6ea221 make clean: show what's going on
Intead of waiting forever, show the user the package we're cleaning.

Signed-off-by: Leandro Dorileo <leandro.maciel.dorileo@intel.com>
2018-02-12 18:49:24 -08:00
Leandro Dorileo 240653c41d give status target a better output
Improve the output for "make status" by displaying only relevant
status parts (avoiding the git warning and instructions output).

Also make sure we don't run git status "non git package folders"
(i.e packages/common).

Signed-off-by: Leandro Dorileo <leandro.maciel.dorileo@intel.com>
2018-02-12 18:49:21 -08:00