openSUSE:Patches

Ga naar: navigatie, zoeken
Beleid · Pakket insturen · Patchinfo
Dit document beschrijft hoe pakketmakers zaken voor bijwerken van vrijgegeven openSUSE producten als onderdeel van het onderhoudsproces kunnen indienen.
Waarschuwing: Alle pakketten in de openSUSE buildservice zijn volledig publiek. De buildservice kan daarom niet worden gebruikt voor het bijwerken van beveiligingszaken die onder embargo staan. In het geval van zo'n embargo moet de pakketmaker wachten tot het einde van het embargo alvorens de reparatie te verrichten.

Vind het pakket dat u nodig hebt voor uw werk

Dit artikel is nog maar gedeeltelijk vertaald. Als u mee wilt helpen met vertalen lees dan Wiki vertalen naar het Nederlands.

The build service contains many different versions of packages. Some may be official releases and others may under development by users in their home projects. The easiest way to do that is by using the osc search command. The --maintained switch restricts the output to projects that have a special attribute set to indicate maintained openSUSE products. We'll use the nfs-utils package as an example.

$ osc search --maintained nfs-utils

matches for 'nfs-utils' in packages:

# Package   # Project
openSUSE:11.0  nfs-utils
openSUSE:11.1  nfs-utils
openSUSE:11.2  nfs-utils

Create a branch

The build service provides an easy way to work on packages without having to unnecessarily contaminate the original package. It allows the user to check out a private version of the package into their home project. Any changes committed to it will be stored as a set of changes to the original. This has the advantage of making the differences between the two projects obvious when the branch is eventually submitted back to the original project.

The process for creating a branch is simple:

$ osc branch openSUSE:11.1 nfs-utils

Note: The branch has been created of a different project,
             openSUSE:11.1:Update,
[...]
A working copy of the branched package can be checked out with:

osc co home:jeff_mahoney:branches:openSUSE:11.1:Update/nfs-utils

In this case an update for nfs-utils was released previously already. The updated sources got stored in a different project, openSUSE:11.1:Update. You don't have to bother about that detail. osc automatically does the right thing and uses the updated sources. So just follow the instructions provided and check out your branched copy of the package:

$ osc co home:jeff_mahoney:branches:openSUSE:11.1:Update/nfs-utils

A    home:jeff_mahoney:branches:openSUSE:11.1:Update
A    home:jeff_mahoney:branches:openSUSE:11.1:Update/nfs-utils
A    home:jeff_mahoney:branches:openSUSE:11.1:Update/nfs-utils/README.NFSv4
A    home:jeff_mahoney:branches:openSUSE:11.1:Update/nfs-utils/fork-start-statd.patch
[...]

If you already have a branch for this package, you should remove and recreate it. The branch point exists from the point in time that you created it. If other changes have been committed in the interim, they will be lost if you use your existing branch. You can delete the branch by deleting the package with the osc rdelete project package command. For the our example, it would be osc rdelete home:jeff_mahoney:branches:openSUSE:11.1:Update nfs-utils.

Branching all code streams at once

Sometimes you need to update a package for all maintained code streams, e.g. for a security fix. With the method described above you'd have to branch and check out the package three times, once for 11.0, 11.1 and 11.2. The osc mbranch command makes that more convenient. It finds all maintained copies of the package automatically and creates branches of those packages in one project:

$ osc mbranch nfs-utils

Project home:jeff_mahoney:branches:OBS_Maintained:nfs-utils created.

$ osc co home:jeff_mahoney:branches:OBS_Maintained:nfs-utils

A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils
A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_11.0_Update
[...]
A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_11.1_Update
[...]
A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_11.2_Update

Make your changes

Now that you have a private copy of the package, you can make whatever changes you need to the package. The easiest way to handle updating the file list is to ensure that you don't have any temporary files still in the source package directory and use the osc addremove command.

Once you've completed your changes, add an entry to the .changes files using osc vc.

  • briefly describe the problem, one line per problem
  • include a reference to the bug number in the form (bnc#12345)
  • for security fixes include the CVE number if possible

Finally commit your changes to your branch with the osc commit command.

Create a patch info file

For publishing updates additional information is required. That information is stored in a so called patch info file. Run osc patchinfo in the project directory to create one:

$ osc patchinfo

Creating initial patchinfo...
A    /obs/home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/_patchinfo:
A    /obs/home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/_patchinfo:/_patchinfo

An editor opens. Fill in all needed information, then check in everthing using osc ci

Submit your changes

Your branch is now a separate package and will build independently in your home project. It's generally a good idea to ensure that it builds within the tight constraints of the build system and is tested properly before submitting it. The submit process is simple.

From your checked-out project directory:

$ osc sr

created request id 22864

Osc will prompt you for a message for the submit request. Usually you just use the same message as for the .changes file.