From Fedora Project Wiki

< User:Phracek

Revision as of 13:58, 22 January 2015 by Jpopelka (talk | contribs) (my two cents)

This is a DRAFT.

Preupgrade Assistant contents Packaging guidelines

How to package a Preupgrade Assistant contents

Contents files are packaged as a subpackage of main preupgrade-assistant package.

Naming guidelines

Every Preupgrade Assistant content subpackage name must start with preupgrade-assistant-contents- followed by original package name.

For example Preupgrade Assistant content subpackage for mariadb will be named preupgrade-assistant-contents-mariadb.


  • All packages must have
 Requires: preupgrade-assistant
 BuildRequires: preupgrade-assistant-devel

Devel package contains macros and contents validating check script.


  • All preupgrade-assistant-contents-* subpackages must be architecture independent, i.e. have BuildArch: noarch.


  • Macro denoting the parent directory where the package files go is %{preupgrade_dir}. This currently expands to /usr/share/preupgrade.
  • Macro %{preupg_number} means source release from which the system is going to be upgraded, e.g. Fedora 22.
  • Macro %{postupg_number} means target release to which the system is going to be upgraded, e.g. Fedora 23.

Build section


Install section

All files from preupgrade directory should be installed with

mkdir -p ${buildroot}%{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}
cp preupgrade/* ${buildroot}%{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}/

Check section

  • %check_preupgrade needs to be run in %check section.
%check_preupgrade %{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/

Files section

  • Directory where Preupgrade Assistant installs files and directories must be owned by the subpackage
%dir %{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}
  • All files except text files should be listed like
  • All text files from content should be listed via
%doc %{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}/*.txt

Directory ownership

Directories %{preupgrade_dir} and %{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number} are owned by package preupgrade-assistant itself.

Sample SPEC

Snapshot of mariadb.spec

Name:             mariadb
Version:          %{compatver}.%{bugfixver}
Release:          4%{?with_debug:.debug}%{?dist}
Epoch:            1

Summary:          A community developed branch of MySQL
Group:            Applications/Databases
# Exceptions allow client libraries to be linked with most open source SW,
# not only GPL code.  See README.mysql-license
License:          GPLv2 with exceptions and LGPLv2 and BSD


SourceX:          mariadb.ini
SourceZ:          mariadb.txt

%package -n preupgrade-assistant-contents-%{name}
BuildRequires:    preupgrade-assistant-devel
Requires:         preupgrade-assistant

%description -n preupgrade-assistant-contents-%{name}
The content is used for assessment before upgrading major release via fedup.

# Copy all content files to %{preupgrade_dir}
mkdir -p preupgrade
cp %{SOURCEX} preupgrade/%{SOURCEX}
cp %{SOURCEY} preupgrade/%{SOURCEY}
cp %{SOURCEZ} preupgrade/%{SOURCEZ}

mkdir -p %{buildroor}%{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}
cp preupgrade/* %{buildroor}%{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}/

%check_preupg %{buildroor}%{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/

%files -n preupgrade-assistant-contents-%{name}
%dir %{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}
%doc %{preupgrade_dir}/Fedora%{preupg_number}_%{postupg_number}/%{name}/*.txt