#892 remove obsolete Preupgrade Assistant guidelines
Merged 4 years ago by ignatenkobrain. Opened 4 years ago by decathorpe.

@@ -70,7 +70,6 @@

  ** xref:LibreOfficeExtensions.adoc[LibreOffice Extensions]

  ** xref:MinGW.adoc[MinGW]

  ** xref:MPI.adoc[MPI]

- ** xref:PreupgradeAssistant.adoc[Preupgrade Assistant]

  ** xref:SugarActivityGuidelines.adoc[Sugar activities]

  ** xref:Web_Assets.adoc[Web Assets]

  ** xref:WordPress_plugin_packaging_guidelines.adoc[WordPress extensions]

@@ -1,240 +0,0 @@

- = Preupgrade Assistant contents Packaging guidelines

- 

- == How to package a Preupgrade Assistant contents

- 

- Contents files are packaged as a subpackage of main package (e.g mariadb).

- 

- == Naming guidelines

- 

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

- 

- For example Preupgrade Assistant content subpackage for _mariadb_ will be named _preupgrade-assistant-mariadb_.

- 

- == Dependencies

- 

- * All packages must have

- 

- `+ Requires: preupgrade-assistant+` +

- `+ BuildRequires: preupgrade-assistant-devel+`

- 

- Devel package contains macros and contents validating check script.

- 

- == Architecture

- 

- * All _preupgrade-assistant-*_ subpackages must be architecture independent, i.e. have `+BuildArch: noarch+`.

- 

- == Macros

- 

- * 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.

- * Macro `+%{preupg_results}+` means where the contents files are generated

- * Macro `+%{preupgrade_name}+` means *Fedora%\{preupg_number}_%\{postupg_number}*, e.g. Fedora22_23

- * Macro `+%{preupgrade_dir}+` reference to */usr/share/preupgrade/%\{preupgrade_name}*

- 

- == Prep section

- 

- Copy all contents files to *%\{preupgrade_name}/%\{name}* directory.

- 

- Content files are:

- 

- * INI file

- * check_script (python or bash)

- * text file with solution description.

- 

- === INI file structure

- 

- INI file is checked by *%\{preupgrade_build}* script. If something is missing user is informed.

- 

- `+[preupgrade]+` +

- `+content_title: Short content name+` +

- `+author: Your Name <yname@ydomain.com>+` +

- `+content_description: 'Enter your description here'+` +

- `+config_file: +``+ THIS IS OPTIONAL. IT INFORMS ADMINISTRATOR WHAT FILES ARE AFFECTED+` +

- `+check_script: +` +

- `+solution: +` +

- `+applies_to: <specify_package_needs_to_be_on_system. if_not_installed_then_NOT_APPLICABLE> , comma separated+` +

- `+requires: +``+ THIS IS OPTIONAL+`

- 

- The elements description:

- 

- * content_title - Defines a single item to be checked as a part of a group.

- * author - Author of the content, will be used in automatically created header of scripts

- * content_description - Describes a rule and what the checks are.

- * config_file - Defines which configuration files are checked.

- * check_script - A script used for checking the system before upgrade. If the script does not exist, the user is notified and the group.xml autogeneration fails.

- * solution - Text file which describes how to solve a problem after an upgrade.

- * applies_to - Package checked by the script, if not available check will not run. Result is NOT_APPLICABLE.

- * requires - If a check script needs awk binary then package gawk should be mentioned here.

- 

- === Bash check script template

- 

- Template for bash check script

- 

- `+#!/bin/bash+` +

-  +

- `+. /usr/share/preupgrade/common.sh+` +

-  +

- `+#END GENERATED SECTION+` +

-  +

- `+# This check can be used if you need root privilegues+` +

-  +

- `+# Copy your config file from RHEL6 (in case of scenario RHEL6_7) +` +

- `+# to Temporary Directory+` +

- `+CONFIG_FILE="full_path_to_your_config_file"+` +

- `+mkdir -p $VALUE_TMP_PREUPGRADE/cleanconf/$(dirname $CONFIG_FILE)+` +

- `+cp $CONFIG_FILE $VALUE_TMP_PREUPGRADE/cleanconf/$CONFIG_FILE+` +

-  +

- `+# Now check you configuration file for options+` +

- `+# and for other stuff related with configuration+` +

-  +

- `+# If configuration can be used on target system (like RHEL7 in case of RHEL6_7)+` +

- `+# the exit should be RESULT_PASS+` +

-  +

- `+# If configuration can not be used on target system (like RHEL 7 in case of RHEL6_7)+` +

- `+# scenario then result should be RESULT_FAIL. Correction of+` +

- `+# configuration file is provided either by solution script+` +

- `+# or by postupgrade script located in $VALUE_TMP_PREUPGRADE/postupgrade.d/+` +

-  +

- `+# if configuration file can be fixed then fix them in temporary directory+` +

- `+# $VALUE_TMP_PREUPGRADE/$CONFIG_FILE and result should be RESULT_FIXED+` +

- `+# More information about this issues should be described in solution.txt file+` +

- `+# as reference to KnowledgeBase article.+` +

-  +

- `+grep "Sometext" $CONFIG_FILE+` +

- `+if [ $? -ne 0 ]; then+` +

- `+    log_info "Config file $CONFIG_FILE will be fixed by solution script"+` +

- `+    # postupgrade.d directory from your content is automatically copied by+` +

- `+    # preupgrade assistant into $VALUE_TMP_PREUPGRADE/postupgrade.d/ directory+` +

- `+    exit $RESULT_FAIL+` +

- `+fi+` +

-  +

- `+exit $RESULT_PASS+`

- 

- === Python check script template

- 

- Template for python check script

- 

- `+#!/usr/bin/python+` +

- `+# -*- Mode: Python; python-indent: 8; indent-tabs-mode: t -*- +` +

-  +

- `+import sys, os, errno+` +

- `+import datetime+` +

-  +

- `+from preup.script_api import *+` +

-  +

- `+#END GENERATED SECTION+` +

- `+component = "Specify component name used for logging"+` +

- `+# exit functions are exit_{pass,not_applicable, fixed, fail, etc.}+` +

- `+# logging functions are log_{error, warning, info, etc.}+` +

- `+# for logging in-place risk use functions log_{extreme, high, medium, slight}_risk+` +

-  +

- `+def main():+` +

- `+    if os.geteuid() != 0:+` +

- `+        sys.stdout.write("Need to be root.\n")+` +

- `+        log_slight_risk("The script needs to be run under root account")+` +

- `+        exit_error()+` +

-  +

-  +

- `+if __name__ == "__main__":+` +

- `+   set_component(component) +` +

- `+   main()+` +

- `+   exit_pass()+`

- 

- == Build section

- 

- Run command:

- 

- `+%{preupgrade_build} %{preupgrade_name}/%{name}/+`

- 

- %\{preupgrade_build} command has to succeed. Warning can be suppressed.

- 

- == Install section

- 

- All files from _preupgrade_ directory should be installed with

- 

- `+%install+` +

- `+...+` +

- `+mkdir -p ${buildroot}%{preupgrade_dir}/%{name}+` +

- `+install -p -m 755 %{SourceY} ${buildroot}%{preupgrade_dir}/%{name}/check.sh+` +

- `+install -p -m 644 %{SourceZ} ${buildroot}%{preupgrade_dir}/%{name}/solution.txt+` +

- `+install -p -m 644 %{preupgrade_name}-%{preupg_results}/%{name}/group.xml ${buildroot}%{preupgrade_dir}/%{name}/group.xml+`

- 

- == Files section

- 

- * Directory where Preupgrade Assistant installs files and directories must be owned by the subpackage

- 

- `+%files+` +

- `+...+` +

- `+%files -n preupgrade-assistant-%{name}+` +

- `+%dir %{preupgrade_dir}/%{name}+`

- 

- * All files except text files should be listed like

- 

- `+%files+` +

- `+...+` +

- `+%files -n preupgrade-assistant-%{name}+` +

- `+%{preupgrade_dir}/%{name}/*.{sh,py}+` +

- `+%{preupgrade_dir}/%{name}/*.xml+`

- 

- * All text files from content should be listed via

- 

- `+%files+` +

- `+...+` +

- `+%files -n preupgrade-assistant-%{name}+` +

- `+%doc %{preupgrade_dir}/%{name}/*.txt+`

- 

- == Directory ownership

- 

- Directories `+/usr/share/preupgrade+` and

- `+%{preupgrade_dir}+`

- are owned by package _preupgrade-assistant_ itself and should not be owned by your package.

- 

- == Sample SPEC

- 

- ....

- Name:             foo

- Version:          1.0

- Release:          1%{?dist}

- Summary:          An example package

- URL:              http://example.com

- License:          MIT

- 

- Source0:          http://example.com/foo/foo-%{version}.tgz

- Source1:          foo.ini

- Source2:          foo.sh

- Source3:          foo.txt

- 

- [Bulk of foo packaging elided]

- 

- %package -n preupgrade-assistant-%{name}

- BuildRequires:    preupgrade-assistant-devel

- Requires:         preupgrade-assistant

- 

- %description -n preupgrade-assistant-%{name}

- Files used by preupgrade to assist with upgrading between

- major releases of the foo package via fedup.

- 

- %prep

- # Copy all content files to %{preupgrade_dir}

- mkdir -p %{preupgrade_name}/%{name}

- cp %{SOURCE1} %{preupgrade_name}/%{name}/%{SOURCE1}

- cp %{SOURCE2} %{preupgrade_name}/%{name}/%{SOURCE2}

- cp %{SOURCE3} %{preupgrade_name}/%{name}/%{SOURCE3}

- 

- %build

- %{preupgrade_build} %{preupgrade_name}/%{name}/

- 

- %install

- mkdir -p %{buildroot}%{preupgrade_dir}/%{name}

- install -p -m 755 %{SOURCE2} %{buildroot}%{preupgrade_dir}/%{name}/%{SOURCE2}

- install -p -m 644 %{SOURCE3} %{buildroot}%{preupgrade_dir}/%{name}/%{SOURCE3}

- install -p -m 644 %{preupgrade_name}-%{preupg_results}/%{name}/group.xml %{buildroot}%{preupgrade_dir}/%{name}/group.xml

- 

- 

- %files -n preupgrade-assistant-%{name}

- %dir %{preupgrade_dir}/%{name}

- %doc %{preupgrade_dir}/%{name}/*.txt

- %{preupgrade_dir}/%{name}/*.{py,sh}

- %{preupgrade_dir}/%{name}/*.xml

- ....

According to the upstream project's README, the Preupgrade Assistant is
now a tool specific to RHEL. So these Guidelines are no longer relevant
for fedora (maybe they can be moved to the EPEL Guidelines instead).

Pull-Request has been merged by ignatenkobrain

4 years ago