Category:Copr

From FedoraProject

Jump to: navigation, search
Overview of Copr SVG version for editing

Copr (Cool Other Package Repo) is a Fedora project to help make building and managing third party package repositories easy. The instance to be installed within Fedora Infrastructure provides Fedora maintainers with the ability to create repos of packages to build against and share with others.

Contents

Some Design Requirements

Design Overview

Packager workflow

Scripts to start on

http://skvidal.fedorapeople.org/misc/sync_to_repo.py

Design work

Usage Cases


KDE RedHat

kde-redhat is a large external repo, asked rdieter how he manages it so far.

All I'm doing really is building stuff, either in koji or my own mock instance. Grabbing those rpms, signing them, stuffing it into repos. Whatever kopers end up being, can't be much worse than what I'm doing now. honestly.

imo kde redhat is beyond the scope of Copr - it's WAY beyond 1GB per user - skv

Resources

A Fedora maintainer would be alloted up to 1GiB of storage for package repos. Packages can be built for any arch Fedora builds for (but doesn't have to be all of them). Copr would have repoview content for easy browsing and subscribing to changes. Copr's could be increased by request.

Work Flow

  1. Bob requests a Copr repo via the Copr WebUI -- defines what other repos are dependencies
    • The Copr service creates an empty repo and generates an rpm that has yum repository definitions for the repo and dependencies on other repo-configuring rpms
  2. Bob constructs an srpm of gtk2
    • Not a Copr issue
  3. Bob issues a command (cu build "gtk2newness" gtk2.src.rpm ?) to build the gtk2 package.
    • first this checks the pkg and looks at the License tag to make sure it's not something we absolutely cannot build.
    • this just delivers the srpm to the shared filesystem and then kicks off a build task for it in headhunter.
    • Notes about building from SCM rather than SRPM; SCM server needs to be accessible from builders (currently, within Fedora's network)
    • Building from SCM is not necessarily as important as being able to share changes via the SCM. If I can clone the SCM repo and you can as well to make changes but we create an SRPM as an intermediate step for build that's not much of a burden.
  4. Copr creates a buildroot based upon the rawhide collection and any packages in Bob's "gtknewness" copr.
    • two issues here: getting koji to use arbitrary repos
    • not having the above beat the crap out of fedorapeople with koji constantly hitting it for pkgs/repodata
    • These are some of the reasons we need a different build system and different storage.
  5. Copr/headhunter builds Bob's gtk2
  6. headhunter takes the koji built package and adds it to Bob's "gtknewness" copr, recreating yum repodata and repoview content.
    • this means having a task to build repodata
    • need something in here for SIGNING those pkgs, too.
      • Probably want a separate key for each Copr repo.
      • why a separate key? if I'm building these for ME and mine there is no reason why I shouldn't use the same key
      • Repos can have multiple people adding to them so there needs to be one key for it.
      • you could use the same key for all repositories that only you contribute to but then we'd need to keep track of two different types of repository
  7. Bob proceeds to create srpms for various other packages and builds them in koji against his "gtknewness" koper.
    • having koji know the repo exists or to have it know when the repo no longer exists.
  8. Bob shares his "gtknewness" koper with the world
    • this is just advertising a url
  9. Bob creates a Desktop Live image based on rawhide and his "gtknewness" koper and shares that with the world too.
  10. Bob fixes bugs with his gtk2 and continues to do builds until everybody is happy
  11. Bob commits his gtk2 changes to package SCM and does a normal koji build.
  12. Bob profits.
    • These last 4 items don't matter at all they are outside of scope, imo.

Content

Content within one's Copr(s) must be content acceptable for distribution within Fedora. (The packaging doesn't need to be, just the content).

Trademark Guidelines

We'd like to enable people to make development like spins of Fedora that include content from Coprs. Since all content in Coprs has to adhere to Fedora's guidelines it should be safe (?What do we mean by safe and what guidelines make it so? TK). We just need terms in the trademark that allow for this kind of spin creation and sharing so that these people don't have to spend time re-branding and can focus more on development.

New Tools

A few new tools might be needed for dealing with Coprs.

Tool to build

A script would be needed to initiate a Copr build. This will submit the build to the Copr buildsystem.

Tool to add package to a copr

The build system needs to be able to add the package to the copr on the shared filesystem and create new repodata for it. We want to be able to remove older versions of packages. But we also want to have former packages so that people can downgrade around problems if they have to.

This tool could also be used to add already built packages to an existing koper without having to go through a koji build (?Do we want this? TK).

Version 2.0

Here are some thoughts for future enhancements once we prove that we can walk. Some of these may go into the first version since we have to write a new buildsystem to deal with this.

Notes from former comments

Subcategories

This category has the following 3 subcategories, out of 3 total.

C

K

S

Pages in category "Copr"

The following 3 pages are in this category, out of 3 total.

S

U