Bruce Rogers 58189e6be2 Accepting request 862991 from home:bfrogers:branches:Virtualization
- Convert qemu-kvm from a script to a symlink. This method of
  invoking the QEMU emulator has been deprecated for some time,
  but is still provided. It has as it's origins a version of QEMU
  which had KVM acceleration enabled by default. In it's recent
  incarnation it is a script which adds '-machine accel=kvm' to the
  beginning of the list of command line options passed to the
  emulator. This method collides with the now preferred method of
  specifying acceleration options by using -accel. qemu-kvm is now
  changed to simply be a symlink to the same QEMU binary which the
  prior script exec'd. This new approach takes advantage of a built
  in QEMU feature where if QEMU is invoked using a program name
  ending in 'kvm', KVM emulation is enabled. This approach is
  better in that it is more compatible with any other command line
  option that may be added for specifying acceleration (not that
  you should do that).
  For those who have taken advantage of the fact that you can add
  additional command line options to the qemu-kvm script, or doing
  other things in that script you will just need to create an
  alternate script "emulator" to achieve the same. It's possible
  that there may be some very subtle behavioral difference in the
  switch from a script to a symlink, but given that qemu-kvm is a
  deprecated package, we're not going to worry about that.

OBS-URL: https://build.opensuse.org/request/show/862991
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=601
2021-01-13 22:38:56 +00:00

The qemu package includes a special maintenance workflow in order to support git
based patching. Please use it in order to have changes you make be acceptable to
the package maintainers.

Currently a local clone of the upstream repo(s) is required for the packaging
workflow. It is anticipated that the need for any extra setup will be reduced or
even eliminated entirely in the future, but for now, you will need do so some
setup. See config.sh for details.

The qemu.spec file is generated from a qemu.spec.in template, so to make changes
to the spec file beyond the patch name generation, patch reference and automated
versioning done by the scripts, you need to edit the template. Do not directly
edit the spec file. The spec file's version and patch references are added when
the update_git.sh script is passed certain commands, as described below.

If you are not modifying any patches or their order, but just need to update the
spec file from a changed template, run 'bash ./update_git.sh refresh'.

If the set of patches is being modified, including their order, you will want to
first run 'bash ./update_git.sh pkg2git', which makes the current package patch
queue available in a local git branch named frombundle (see config.sh for the
locations). This set of patches comes from a "bundle of git bundles", the
bundles.tar.xz file, which is included as a package source file. You will then
create an altered patch queue in the branch which corresponds to this release
(eg: opensuse-5.0), using the frombundle branch as the starting point for your
changes (eg perhaps start by doing git reset --hard frombundle, then cherry-pick
upstream patches from there). Once you have the patch queue ready to go run
'bash ./update_git.sh git2pkg' which updates the bundles.tar.xz file, as well as
the spec and patch files.

The default action for update_git.sh is git2pkg, which helps simplify repeated
package updates as you modify the patch queue from the local git repo.

The maintainer and automation use another workflow mode dealing with packaging
the latest upstream qemu. See 'LATEST' references in the scripts for details.

* * * * * * * * *

Additional Notes:

Patches which are from an upstream git repo should have the commit id recorded
just below the Subject line (after a blank line) as follows:

Git-commit: <40-char-sha-id>

If a patch is anticipated to be shortly included in upstream repo, mark that
fact by doing the above with 40 0's, which will flag it as needing to be updated
in the near future.

Bug or feature tracking identifiers should also be added to the patch similarly,
using the abbreviations identified here:
http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines#Current_set_of_abbreviations
using the "Reference:" tag, with multiple entries comma separated.

The ability to provide a conditional inclusion of a patch (eg based on
architecture, is provided by using the "Include-If:" tag similarly, as follows:

Include-If: %ifarch aarch64

This will cause the patch application in the spec file to be done as follows:
%ifarch aarch64
%patch0013 -p1
%endif

A trick worth noting is, if a given git tracked patch is to be applied in a way
that can't be done in the normal patching section of the spec file, you can
still include the patch, and use it by name with the patch program elsewhere in
the spec file by doing something such as:
Include-If: %if 0%{?patch-possibly-applied-elsewhere}
(this variable will remain undefined in the spec file) And then elsewhere in the
spec file, the actual patch (eg specially-handled-change.patch) is referenced as
eg:

patch -p1 < %_sourcedir/specially-handled-change.patch
Description
No description provided
Readme 4.8 GiB
Languages
Pawn 100%