Upstream package importer with auto patching
Go to file
dependabot[bot] 9ea5e63043
Bump the go_modules group across 1 directory with 6 updates
Bumps the go_modules group with 2 updates in the / directory: [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) and google.golang.org/protobuf.


Updates `github.com/go-git/go-git/v5` from 5.2.0 to 5.11.0
- [Release notes](https://github.com/go-git/go-git/releases)
- [Commits](https://github.com/go-git/go-git/compare/v5.2.0...v5.11.0)

Updates `google.golang.org/protobuf` from 1.25.0 to 1.33.0

Updates `gopkg.in/yaml.v3` from 3.0.0-20210107192922-496545a6307b to 3.0.1

Updates `golang.org/x/crypto` from 0.0.0-20200622213623-75b288015ac9 to 0.16.0
- [Commits](https://github.com/golang/crypto/commits/v0.16.0)

Updates `golang.org/x/net` from 0.0.0-20201110031124-69a78807bb2b to 0.19.0
- [Commits](https://github.com/golang/net/commits/v0.19.0)

Updates `golang.org/x/text` from 0.3.3 to 0.14.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](https://github.com/golang/text/compare/v0.3.3...v0.14.0)

---
updated-dependencies:
- dependency-name: github.com/go-git/go-git/v5
  dependency-type: direct:production
  dependency-group: go_modules-security-group
- dependency-name: google.golang.org/protobuf
  dependency-type: direct:production
  dependency-group: go_modules-security-group
- dependency-name: gopkg.in/yaml.v3
  dependency-type: direct:production
  dependency-group: go_modules-security-group
- dependency-name: golang.org/x/crypto
  dependency-type: indirect
  dependency-group: go_modules-security-group
- dependency-name: golang.org/x/net
  dependency-type: indirect
  dependency-group: go_modules-security-group
- dependency-name: golang.org/x/text
  dependency-type: indirect
  dependency-group: go_modules-security-group
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-13 21:07:08 +00:00
.github/workflows Supported Go version is now 1.18 2022-11-03 04:39:57 +01:00
cmd/srpmproc Add two features and one fix 2023-09-05 03:50:43 -07:00
modulemd Formatting 2022-11-06 04:53:02 +01:00
pb fix: disabling auto align should always return one space 2022-03-28 19:55:40 +02:00
pkg Support the openELA "PATCHES" directory format as well 2023-11-06 16:53:43 +01:00
proto Add support for disabling auto align 2022-03-28 19:49:55 +02:00
.editorconfig Initial commit 2020-12-14 02:29:02 +01:00
.gitignore enhancement: expose srpmproc library 2021-08-19 12:11:07 +02:00
.goreleaser.yml Fix goreleaser archive name template 2023-10-06 08:13:19 +02:00
AUTHORS Add LICENSE 2021-04-06 21:39:02 +02:00
CONTRIBUTORS Add LICENSE 2021-04-06 21:39:02 +02:00
Dockerfile [docker] Add Dockerfile 2020-12-17 13:12:30 +01:00
LICENSE Add LICENSE 2021-04-06 21:39:02 +02:00
README.md Updates to add flexibility to lookasides and tagless handling: 2023-02-22 23:23:47 -05:00
gen.go enhancement: add more info for each processed package as well as print more info on cli 2021-09-08 17:00:56 +02:00
go.mod Bump the go_modules group across 1 directory with 6 updates 2024-03-13 21:07:08 +00:00
go.sum Bump the go_modules group across 1 directory with 6 updates 2024-03-13 21:07:08 +00:00

README.md

srpmproc

Upstream package importer with auto patching. Reference implementation for OpenPatch

Usage

Usage:
  srpmproc [flags]
  srpmproc [command]

Available Commands:
  fetch       
  help        Help about any command

Flags:
      --basic-password string           Basic auth password
      --basic-username string           Basic auth username
      --branch-prefix string            Branch prefix (replaces import-branch-prefix) (default "r")
      --branch-suffix string            Branch suffix to use for imported branches
      --cdn string                      CDN URL shortcuts for well-known distros, auto-assigns --cdn-url.  Valid values:  rocky8, rocky, fedora, centos, centos-stream.  Setting this overrides --cdn-url
      --cdn-url string                  CDN URL to download blobs from. Simple URL follows default rocky/centos patterns. Can be customized using macros (see docs) (default "https://git.centos.org/sources")
      --git-committer-email string      Email of committer (default "rockyautomation@rockylinux.org")
      --git-committer-name string       Name of committer (default "rockyautomation")
  -h, --help                            help for srpmproc
      --import-branch-prefix string     Import branch prefix (default "c")
      --manual-commits string           Comma separated branch and commit list for packages with broken release tags (Format: BRANCH:HASH)
      --module-fallback-stream string   Override fallback stream. Some module packages are published as collections and mostly use the same stream name, some of them deviate from the main stream
      --module-mode                     If enabled, imports a module instead of a package
      --module-prefix string            Where to retrieve modules if exists. Only used when source-rpm is a git repo (default "https://git.centos.org/modules")
      --no-dup-mode                     If enabled, skips already imported tags
      --no-storage-download             If enabled, blobs are always downloaded from upstream
      --no-storage-upload               If enabled, blobs are not uploaded to blob storage
      --package-release string          Package release to fetch
      --package-version string          Package version to fetch
      --rpm-prefix string               Where to retrieve SRPM content. Only used when source-rpm is not a local file (default "https://git.centos.org/rpms")
      --single-tag string               If set, only this tag is imported
      --source-rpm string               Location of RPM to process
      --ssh-key-location string         Location of the SSH key to use to authenticate against upstream
      --ssh-user string                 SSH User (default "git")
      --storage-addr string             Bucket to use as blob storage
      --strict-branch-mode              If enabled, only branches with the calculated name are imported and not prefix only
      --taglessmode                     Tagless mode:  If set, pull the latest commit from the branch and determine version numbers from spec file.  This is auto-tried if tags aren't found.
      --tmpfs-mode string               If set, packages are imported to path and patched but not pushed
      --upstream-prefix string          Upstream git repository prefix
      --version int                     Upstream version

Use "srpmproc [command] --help" for more information about a command.

Examples:

  1. Import the kernel package from git.centos.org/rpms/, to local folder /opt/gitroot/rpms/kernel.git/ . Download the lookaside source tarballs from the default CentOS file server location to local folder /opt/fake_s3/ . We want to grab branch "c8" (import prefix plus RHEL version), and it will be committed as branch "r8" (branch prefix plus RHEL version). This assumes that /opt/fake_s3 exists, and /opt/gitroot/rpms/kernel.git exists and is a git repository of some kind (even an empty one).
srpmproc --branch-prefix "r"  --import-branch-prefix "c"  --rpm-prefix "https://git.centos.org/rpms" --version 8 --storage-addr file:///opt/fake_s3  --upstream-prefix file:///opt/gitroot   --cdn centos --strict-branch-mode --source-rpm kernel

CDN and --cdn-url

The --cdn-url option allows for Go-style templates to craft complex URL patterns. These templates are: {{.Name}} (package name), {{.Hash}} (hash of lookaside file), {{.Hashtype}} (hash type of file, like "sha256" or "sha512"), {{.Branch}} (the branch we are importing), and {{.Filename}} (the lookaside file's name as it appears in SOURCES/). You can add these values as part of --cdn-url to craft your lookaside pattern.

For example, if I wanted my lookaside downloads to come from CentOS 9 Stream, I would use as part of my command:

--cdn-url "https://sources.stream.centos.org/sources/rpms/{{.Name}}/{{.Filename}}/{{.Hashtype}}/{{.Hash}}/{{.Filename}}"

Default Behavior: If these templates are not used, the default behavior of --cdn-url is to fall back on the traditional RHEL import pattern: <CDN_URL>/<NAME>/<BRANCH>/<HASH> . If that fails, a further fallback is attempted, the simple: <CDN_URL>/<HASH>. These cover the common Rocky Linux and RHEL/CentOS imports if the base lookaside URL is the only thing given. If no --cdn-url is specified, it defaults to "https://git.centos.org/sources" (for RHEL imports into Rocky Linux)

CDN Shorthand: For convenience, some lookaside patterns for popular distros are provided via the --cdn option. You can specify this without needing to use the longer --cdn-url. For example, when importing from CentOS 9 Stream, you could use --cdn centos-stream