File: /home/boxelikax/public_html/demoltec.com/rpm.zip
PK L�]��B B
script.reqnu ȯ�� #!/bin/sh
# TODO: handle "#!/usr/bin/env foo" somehow
while read filename; do
# common cases
sed -n -e '1s:^#![[:space:]]*\(/[^[:space:]]\{1,\}\).*:\1:p' "$filename"
#!/usr/bin/env /foo/bar
sed -n -e '1s:^#![[:space:]]*[^[:space:]]*/bin/env[[:space:]]\{1,\}\(/[^[:space:]]\{1,\}\):\1:p' "$filename"
done
PK L�]��%�� � fontconfig.provnu ȯ�� #!/bin/bash
#
# Script to install in:
# /usr/lib/rpm/redhat/find-provides.d
#
# Transform font files into RPM provides
# Requires fontconfig >= 2.6.90
#
# Author: Behdad Esfahbod <behdad@redhat.com>
# Based on other provides scripts from RPM
#
fcquery=/usr/bin/fc-query
if [ ! -x $fcquery ]; then
cat > /dev/null
exit 0
fi
# filter out anything outside main fontconfig path
grep /usr/share/fonts/ |
while read fn; do
$fcquery --format '%{=pkgkit}' "${fn}" 2> /dev/null
done
PK L�]��ZB� � brp-elfpermsnu ȯ�� #!/bin/sh
# If using normal root, avoid changing anything.
if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_BUILD_ROOT" = "/" ]; then
exit 0
fi
ELFCLASSIFY=/usr/bin/eu-elfclassify
[ -x ${ELFCLASSIFY} ] || exit 0
# Strip executable bits from ELF DSO's which are not actually executable
find "$RPM_BUILD_ROOT" -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) | ${ELFCLASSIFY} --shared --print0 --stdin | xargs -0 -r chmod a-x
PK L�]�2��n n pythondistdeps.pynu ȯ�� #!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# Copyright 2010 Per Øyvind Karlsen <proyvind@moondrake.org>
# Copyright 2015 Neal Gompa <ngompa13@gmail.com>
# Copyright 2020 SUSE LLC
#
# This program is free software. It may be redistributed and/or modified under
# the terms of the LGPL version 2.1 (or later).
#
# RPM python dependency generator, using .egg-info/.egg-link/.dist-info data
#
from __future__ import print_function
import argparse
from os.path import dirname, sep
import re
from sys import argv, stdin, stderr, version_info
from sysconfig import get_path
from warnings import warn
from packaging.requirements import Requirement as Requirement_
from packaging.version import parse
import packaging.markers
# Monkey patching packaging.markers to handle extras names in a
# case-insensitive manner:
# pip considers dnspython[DNSSEC] and dnspython[dnssec] to be equal, but
# packaging markers treat extras in a case-sensitive manner. To solve this
# issue, we introduce a comparison operator that compares case-insensitively
# if both sides of the comparison are strings. And then we inject this
# operator into packaging.markers to be used when comparing names of extras.
# Fedora BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1936875
# Upstream issue: https://discuss.python.org/t/what-extras-names-are-treated-as-equal-and-why/7614
# - After it's established upstream what is the canonical form of an extras
# name, we plan to open an issue with packaging to hopefully solve this
# there without having to resort to monkeypatching.
def str_lower_eq(a, b):
if isinstance(a, str) and isinstance(b, str):
return a.lower() == b.lower()
else:
return a == b
packaging.markers._operators["=="] = str_lower_eq
try:
from importlib.metadata import PathDistribution
except ImportError:
from importlib_metadata import PathDistribution
try:
from pathlib import Path
except ImportError:
from pathlib2 import Path
def normalize_name(name):
"""https://www.python.org/dev/peps/pep-0503/#normalized-names"""
return re.sub(r'[-_.]+', '-', name).lower()
def legacy_normalize_name(name):
"""Like pkg_resources Distribution.key property"""
return re.sub(r'[-_]+', '-', name).lower()
class Requirement(Requirement_):
def __init__(self, requirement_string):
super(Requirement, self).__init__(requirement_string)
self.normalized_name = normalize_name(self.name)
self.legacy_normalized_name = legacy_normalize_name(self.name)
class Distribution(PathDistribution):
def __init__(self, path):
super(Distribution, self).__init__(Path(path))
# Check that the initialization went well and metadata are not missing or corrupted
# name is the most important attribute, if it doesn't exist, import failed
if not self.name or not isinstance(self.name, str):
print("*** PYTHON_METADATA_FAILED_TO_PARSE_ERROR___SEE_STDERR ***")
print('Error: Python metadata at `{}` are missing or corrupted.'.format(path), file=stderr)
exit(65) # os.EX_DATAERR
self.normalized_name = normalize_name(self.name)
self.legacy_normalized_name = legacy_normalize_name(self.name)
self.requirements = [Requirement(r) for r in self.requires or []]
self.extras = [
v.lower() for k, v in self.metadata.items() if k == 'Provides-Extra']
self.py_version = self._parse_py_version(path)
# `name` is defined as a property exactly like this in Python 3.10 in the
# PathDistribution class. Due to that we can't redefine `name` as a normal
# attribute. So we copied the Python 3.10 definition here into the code so
# that it works also on previous Python/importlib_metadata versions.
@property
def name(self):
"""Return the 'Name' metadata for the distribution package."""
return self.metadata['Name']
def _parse_py_version(self, path):
# Try to parse the Python version from the path the metadata
# resides at (e.g. /usr/lib/pythonX.Y/site-packages/...)
res = re.search(r"/python(?P<pyver>\d+\.\d+)/", path)
if res:
return res.group('pyver')
# If that hasn't worked, attempt to parse it from the metadata
# directory name
res = re.search(r"-py(?P<pyver>\d+.\d+)[.-]egg-info$", path)
if res:
return res.group('pyver')
return None
def requirements_for_extra(self, extra):
extra_deps = []
for req in self.requirements:
if not req.marker:
continue
if req.marker.evaluate(get_marker_env(self, extra)):
extra_deps.append(req)
return extra_deps
def __repr__(self):
return '{} from {}'.format(self.name, self._path)
class RpmVersion():
def __init__(self, version_id):
version = parse(version_id)
if isinstance(version._version, str):
self.version = version._version
else:
self.epoch = version._version.epoch
self.version = list(version._version.release)
self.pre = version._version.pre
self.dev = version._version.dev
self.post = version._version.post
def increment(self):
self.version[-1] += 1
self.pre = None
self.dev = None
self.post = None
return self
def __str__(self):
if isinstance(self.version, str):
return self.version
if self.epoch:
rpm_epoch = str(self.epoch) + ':'
else:
rpm_epoch = ''
while len(self.version) > 1 and self.version[-1] == 0:
self.version.pop()
rpm_version = '.'.join(str(x) for x in self.version)
if self.pre:
rpm_suffix = '~{}'.format(''.join(str(x) for x in self.pre))
elif self.dev:
rpm_suffix = '~~{}'.format(''.join(str(x) for x in self.dev))
elif self.post:
rpm_suffix = '^post{}'.format(self.post[1])
else:
rpm_suffix = ''
return '{}{}{}'.format(rpm_epoch, rpm_version, rpm_suffix)
def convert_compatible(name, operator, version_id):
if version_id.endswith('.*'):
print("*** INVALID_REQUIREMENT_ERROR___SEE_STDERR ***")
print('Invalid requirement: {} {} {}'.format(name, operator, version_id), file=stderr)
exit(65) # os.EX_DATAERR
version = RpmVersion(version_id)
if len(version.version) == 1:
print("*** INVALID_REQUIREMENT_ERROR___SEE_STDERR ***")
print('Invalid requirement: {} {} {}'.format(name, operator, version_id), file=stderr)
exit(65) # os.EX_DATAERR
upper_version = RpmVersion(version_id)
upper_version.version.pop()
upper_version.increment()
return '({} >= {} with {} < {})'.format(
name, version, name, upper_version)
def convert_equal(name, operator, version_id):
if version_id.endswith('.*'):
version_id = version_id[:-2] + '.0'
return convert_compatible(name, '~=', version_id)
version = RpmVersion(version_id)
return '{} = {}'.format(name, version)
def convert_arbitrary_equal(name, operator, version_id):
if version_id.endswith('.*'):
print("*** INVALID_REQUIREMENT_ERROR___SEE_STDERR ***")
print('Invalid requirement: {} {} {}'.format(name, operator, version_id), file=stderr)
exit(65) # os.EX_DATAERR
version = RpmVersion(version_id)
return '{} = {}'.format(name, version)
def convert_not_equal(name, operator, version_id):
if version_id.endswith('.*'):
version_id = version_id[:-2]
version = RpmVersion(version_id)
lower_version = RpmVersion(version_id).increment()
else:
version = RpmVersion(version_id)
lower_version = version
return '({} < {} or {} > {})'.format(
name, version, name, lower_version)
def convert_ordered(name, operator, version_id):
if version_id.endswith('.*'):
# PEP 440 does not define semantics for prefix matching
# with ordered comparisons
version_id = version_id[:-2]
version = RpmVersion(version_id)
if operator == '>':
# distutils will allow a prefix match with '>'
operator = '>='
if operator == '<=':
# distutils will not allow a prefix match with '<='
operator = '<'
else:
version = RpmVersion(version_id)
return '{} {} {}'.format(name, operator, version)
OPERATORS = {'~=': convert_compatible,
'==': convert_equal,
'===': convert_arbitrary_equal,
'!=': convert_not_equal,
'<=': convert_ordered,
'<': convert_ordered,
'>=': convert_ordered,
'>': convert_ordered}
def convert(name, operator, version_id):
try:
return OPERATORS[operator](name, operator, version_id)
except Exception as exc:
raise RuntimeError("Cannot process Python package version `{}` for name `{}`".
format(version_id, name)) from exc
def get_marker_env(dist, extra):
# packaging uses a default environment using
# platform.python_version to evaluate if a dependency is relevant
# based on environment markers [1],
# e.g. requirement `argparse;python_version<"2.7"`
#
# Since we're running this script on one Python version while
# possibly evaluating packages for different versions, we
# set up an environment with the version we want to evaluate.
#
# [1] https://www.python.org/dev/peps/pep-0508/#environment-markers
return {"python_full_version": dist.py_version,
"python_version": dist.py_version,
"extra": extra}
def main():
"""To allow this script to be importable (and its classes/functions
reused), actions are defined in the main function and are performed only
when run as a main script."""
parser = argparse.ArgumentParser(prog=argv[0])
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-P', '--provides', action='store_true', help='Print Provides')
group.add_argument('-R', '--requires', action='store_true', help='Print Requires')
group.add_argument('-r', '--recommends', action='store_true', help='Print Recommends')
group.add_argument('-C', '--conflicts', action='store_true', help='Print Conflicts')
group.add_argument('-E', '--extras', action='store_true', help='[Unused] Generate spec file snippets for extras subpackages')
group_majorver = parser.add_mutually_exclusive_group()
group_majorver.add_argument('-M', '--majorver-provides', action='store_true', help='Print extra Provides with Python major version only')
group_majorver.add_argument('--majorver-provides-versions', action='append',
help='Print extra Provides with Python major version only for listed '
'Python VERSIONS (appended or comma separated without spaces, e.g. 2.7,3.9)')
parser.add_argument('-m', '--majorver-only', action='store_true', help='Print Provides/Requires with Python major version only')
parser.add_argument('-n', '--normalized-names-format', action='store',
default="legacy-dots", choices=["pep503", "legacy-dots"],
help='Format of normalized names according to pep503 or legacy format that allows dots [default]')
parser.add_argument('--normalized-names-provide-both', action='store_true',
help='Provide both `pep503` and `legacy-dots` format of normalized names (useful for a transition period)')
parser.add_argument('-L', '--legacy-provides', action='store_true', help='Print extra legacy pythonegg Provides')
parser.add_argument('-l', '--legacy', action='store_true', help='Print legacy pythonegg Provides/Requires instead')
parser.add_argument('--console-scripts-nodep-setuptools-since', action='store',
help='An optional Python version (X.Y), at least 3.8. '
'For that version and any newer version, '
'a dependency on "setuptools" WILL NOT be generated for packages with console_scripts/gui_scripts entry points. '
'By setting this flag, you guarantee that setuptools >= 47.2.0 is used '
'during the build of packages for this and any newer Python version.')
parser.add_argument('--require-extras-subpackages', action='store_true',
help="If there is a dependency on a package with extras functionality, require the extras subpackage")
parser.add_argument('--package-name', action='store', help="Name of the RPM package that's being inspected. Required for extras requires/provides to work.")
parser.add_argument('files', nargs=argparse.REMAINDER, help="Files from the RPM package that are to be inspected, can also be supplied on stdin")
args = parser.parse_args()
py_abi = args.requires
py_deps = {}
if args.majorver_provides_versions:
# Go through the arguments (can be specified multiple times),
# and parse individual versions (can be comma-separated)
args.majorver_provides_versions = [v for vstring in args.majorver_provides_versions
for v in vstring.split(",")]
# If normalized_names_require_pep503 is True we require the pep503
# normalized name, if it is False we provide the legacy normalized name
normalized_names_require_pep503 = args.normalized_names_format == "pep503"
# If normalized_names_provide_pep503/legacy is True we provide the
# pep503/legacy normalized name, if it is False we don't
normalized_names_provide_pep503 = \
args.normalized_names_format == "pep503" or args.normalized_names_provide_both
normalized_names_provide_legacy = \
args.normalized_names_format == "legacy-dots" or args.normalized_names_provide_both
# At least one type of normalization must be provided
assert normalized_names_provide_pep503 or normalized_names_provide_legacy
if args.console_scripts_nodep_setuptools_since:
nodep_setuptools_pyversion = parse(args.console_scripts_nodep_setuptools_since)
if nodep_setuptools_pyversion < parse("3.8"):
print("Only version 3.8+ is supported in --console-scripts-nodep-setuptools-since", file=stderr)
print("*** PYTHON_EXTRAS_ARGUMENT_ERROR___SEE_STDERR ***")
exit(65) # os.EX_DATAERR
else:
nodep_setuptools_pyversion = None
# Is this script being run for an extras subpackage?
extras_subpackage = None
if args.package_name and '+' in args.package_name:
# The extras names are encoded in the package names after the + sign.
# We take the part after the rightmost +, ignoring when empty,
# this allows packages like nicotine+ or c++ to work fine.
# While packages with names like +spam or foo+bar would break,
# names started with the plus sign are not very common
# and pluses in the middle can be easily replaced with dashes.
# Python extras names don't contain pluses according to PEP 508.
package_name_parts = args.package_name.rpartition('+')
extras_subpackage = package_name_parts[2].lower() or None
for f in (args.files or stdin.readlines()):
f = f.strip()
lower = f.lower()
name = 'python(abi)'
# add dependency based on path, versioned if within versioned python directory
if py_abi and (lower.endswith('.py') or lower.endswith('.pyc') or lower.endswith('.pyo')):
if name not in py_deps:
py_deps[name] = []
running_python_version = '{}.{}'.format(*version_info[:2])
purelib = get_path('purelib').split(running_python_version)[0]
platlib = get_path('platlib').split(running_python_version)[0]
for lib in (purelib, platlib):
if lib in f:
spec = ('==', f.split(lib)[1].split(sep)[0])
if spec not in py_deps[name]:
py_deps[name].append(spec)
# XXX: hack to workaround RPM internal dependency generator not passing directories
lower_dir = dirname(lower)
if lower_dir.endswith('.egg') or \
lower_dir.endswith('.egg-info') or \
lower_dir.endswith('.dist-info'):
lower = lower_dir
f = dirname(f)
# Determine provide, requires, conflicts & recommends based on egg/dist metadata
if lower.endswith('.egg') or \
lower.endswith('.egg-info') or \
lower.endswith('.dist-info'):
dist = Distribution(f)
if not dist.py_version:
warn("Version for {!r} has not been found".format(dist), RuntimeWarning)
continue
# If processing an extras subpackage:
# Check that the extras name is declared in the metadata, or
# that there are some dependencies associated with the extras
# name in the requires.txt (this is an outdated way to declare
# extras packages).
# - If there is an extras package declared only in requires.txt
# without any dependencies, this check will fail. In that case
# make sure to use updated metadata and declare the extras
# package there.
if extras_subpackage and extras_subpackage not in dist.extras and not dist.requirements_for_extra(extras_subpackage):
print("*** PYTHON_EXTRAS_NOT_FOUND_ERROR___SEE_STDERR ***")
print(f"\nError: The package name contains an extras name `{extras_subpackage}` that was not found in the metadata.\n"
"Check if the extras were removed from the project. If so, consider removing the subpackage and obsoleting it from another.\n", file=stderr)
exit(65) # os.EX_DATAERR
if args.majorver_provides or args.majorver_provides_versions or \
args.majorver_only or args.legacy_provides or args.legacy:
# Get the Python major version
pyver_major = dist.py_version.split('.')[0]
if args.provides:
extras_suffix = f"[{extras_subpackage}]" if extras_subpackage else ""
# If egg/dist metadata says package name is python, we provide python(abi)
if dist.normalized_name == 'python':
name = 'python(abi)'
if name not in py_deps:
py_deps[name] = []
py_deps[name].append(('==', dist.py_version))
if not args.legacy or not args.majorver_only:
if normalized_names_provide_legacy:
name = 'python{}dist({}{})'.format(dist.py_version, dist.legacy_normalized_name, extras_suffix)
if name not in py_deps:
py_deps[name] = []
if normalized_names_provide_pep503:
name_ = 'python{}dist({}{})'.format(dist.py_version, dist.normalized_name, extras_suffix)
if name_ not in py_deps:
py_deps[name_] = []
if args.majorver_provides or args.majorver_only or \
(args.majorver_provides_versions and dist.py_version in args.majorver_provides_versions):
if normalized_names_provide_legacy:
pymajor_name = 'python{}dist({}{})'.format(pyver_major, dist.legacy_normalized_name, extras_suffix)
if pymajor_name not in py_deps:
py_deps[pymajor_name] = []
if normalized_names_provide_pep503:
pymajor_name_ = 'python{}dist({}{})'.format(pyver_major, dist.normalized_name, extras_suffix)
if pymajor_name_ not in py_deps:
py_deps[pymajor_name_] = []
if args.legacy or args.legacy_provides:
legacy_name = 'pythonegg({})({})'.format(pyver_major, dist.legacy_normalized_name)
if legacy_name not in py_deps:
py_deps[legacy_name] = []
if dist.version:
version = dist.version
spec = ('==', version)
if normalized_names_provide_legacy:
if spec not in py_deps[name]:
py_deps[name].append(spec)
if args.majorver_provides or \
(args.majorver_provides_versions and dist.py_version in args.majorver_provides_versions):
py_deps[pymajor_name].append(spec)
if normalized_names_provide_pep503:
if spec not in py_deps[name_]:
py_deps[name_].append(spec)
if args.majorver_provides or \
(args.majorver_provides_versions and dist.py_version in args.majorver_provides_versions):
py_deps[pymajor_name_].append(spec)
if args.legacy or args.legacy_provides:
if spec not in py_deps[legacy_name]:
py_deps[legacy_name].append(spec)
if args.requires or (args.recommends and dist.extras):
name = 'python(abi)'
# If egg/dist metadata says package name is python, we don't add dependency on python(abi)
if dist.normalized_name == 'python':
py_abi = False
if name in py_deps:
py_deps.pop(name)
elif py_abi and dist.py_version:
if name not in py_deps:
py_deps[name] = []
spec = ('==', dist.py_version)
if spec not in py_deps[name]:
py_deps[name].append(spec)
if extras_subpackage:
deps = [d for d in dist.requirements_for_extra(extras_subpackage)]
else:
deps = dist.requirements
# console_scripts/gui_scripts entry points needed pkg_resources from setuptools
# on new Python/setuptools versions, this is no longer required
if nodep_setuptools_pyversion is None or parse(dist.py_version) < nodep_setuptools_pyversion:
if (dist.entry_points and
(lower.endswith('.egg') or
lower.endswith('.egg-info'))):
groups = {ep.group for ep in dist.entry_points}
if {"console_scripts", "gui_scripts"} & groups:
# stick them first so any more specific requirement
# overrides it
deps.insert(0, Requirement('setuptools'))
# add requires/recommends based on egg/dist metadata
for dep in deps:
# Even if we're requiring `foo[bar]`, also require `foo`
# to be safe, and to make it discoverable through
# `repoquery --whatrequires`
extras_suffixes = [""]
if args.require_extras_subpackages and dep.extras:
# A dependency can have more than one extras,
# i.e. foo[bar,baz], so let's go through all of them
extras_suffixes += [f"[{e.lower()}]" for e in dep.extras]
for extras_suffix in extras_suffixes:
if normalized_names_require_pep503:
dep_normalized_name = dep.normalized_name
else:
dep_normalized_name = dep.legacy_normalized_name
if args.legacy:
name = 'pythonegg({})({})'.format(pyver_major, dep.legacy_normalized_name)
else:
if args.majorver_only:
name = 'python{}dist({}{})'.format(pyver_major, dep_normalized_name, extras_suffix)
else:
name = 'python{}dist({}{})'.format(dist.py_version, dep_normalized_name, extras_suffix)
if dep.marker and not args.recommends and not extras_subpackage:
if not dep.marker.evaluate(get_marker_env(dist, '')):
continue
if name not in py_deps:
py_deps[name] = []
for spec in dep.specifier:
if (spec.operator, spec.version) not in py_deps[name]:
py_deps[name].append((spec.operator, spec.version))
# Unused, for automatic sub-package generation based on 'extras' from egg/dist metadata
# TODO: implement in rpm later, or...?
if args.extras:
print(dist.extras)
for extra in dist.extras:
print('%%package\textras-{}'.format(extra))
print('Summary:\t{} extra for {} python package'.format(extra, dist.legacy_normalized_name))
print('Group:\t\tDevelopment/Python')
for dep in dist.requirements_for_extra(extra):
for spec in dep.specifier:
if spec.operator == '!=':
print('Conflicts:\t{} {} {}'.format(dep.legacy_normalized_name, '==', spec.version))
else:
print('Requires:\t{} {} {}'.format(dep.legacy_normalized_name, spec.operator, spec.version))
print('%%description\t{}'.format(extra))
print('{} extra for {} python package'.format(extra, dist.legacy_normalized_name))
print('%%files\t\textras-{}\n'.format(extra))
if args.conflicts:
# Should we really add conflicts for extras?
# Creating a meta package per extra with recommends on, which has
# the requires/conflicts in stead might be a better solution...
for dep in dist.requirements:
for spec in dep.specifier:
if spec.operator == '!=':
if dep.legacy_normalized_name not in py_deps:
py_deps[dep.legacy_normalized_name] = []
spec = ('==', spec.version)
if spec not in py_deps[dep.legacy_normalized_name]:
py_deps[dep.legacy_normalized_name].append(spec)
for name in sorted(py_deps):
if py_deps[name]:
# Print out versioned provides, requires, recommends, conflicts
spec_list = []
for spec in py_deps[name]:
spec_list.append(convert(name, spec[0], spec[1]))
if len(spec_list) == 1:
print(spec_list[0])
else:
# Sort spec_list so that the results can be tested easily
print('({})'.format(' with '.join(sorted(spec_list))))
else:
# Print out unversioned provides, requires, recommends, conflicts
print(name)
if __name__ == "__main__":
"""To allow this script to be importable (and its classes/functions
reused), actions are performed only when run as a main script."""
try:
main()
except Exception as exc:
print("*** PYTHONDISTDEPS_GENERATORS_FAILED ***", flush=True)
raise RuntimeError("Error: pythondistdeps.py generator encountered an unhandled exception and was terminated.") from exc
PK L�]c���' ' brp-strip-comment-notenu ȯ�� #!/bin/sh
# If using normal root, avoid changing anything.
if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_BUILD_ROOT" = "/" ]; then
exit 0
fi
STRIP=${1:-strip}
OBJDUMP=${2:-objdump}
NCPUS=${RPM_BUILD_NCPUS:-1}
case `uname -a` in
Darwin*) exit 0 ;;
*) ;;
esac
# Strip .comment and .note sections (the latter only if it is not allocated)
# for already stripped elf files in the build root
for f in `find "$RPM_BUILD_ROOT" -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) -print0 | xargs -0 -r -P$NCPUS -n32 sh -c "file \"\\$@\" | grep -v \"^${RPM_BUILD_ROOT}/\?usr/lib/debug\" | sed -n -e 's/^\(.*\):[ ]*ELF.*, stripped.*/\1/p'" ARG0`; do
note="-R .note"
if $OBJDUMP -h $f | grep '^[ ]*[0-9]*[ ]*.note[ ]' -A 1 | \
grep ALLOC >/dev/null; then
note=
fi
$STRIP -R .comment $note "$f" || :
done
PK L�]��� rpm_macros_provides.shnu ȯ�� #!/bin/bash -e
# Create a provides of the following form:
# rpm_macro(foobar)
# for each defined macro in a macros.* file in %_rpmmacrodir
# We reuse rpm itself for this by just loading just this macro file and then use
# the %dump macro to print all defined macros from that file. rpm gives us an
# output of the following form:
# ========================
# -11: _target x86_64-linux
# -11= _target_cpu x86_64
# -11= _target_os linux
# -13: py_build %{expand:\
# ... etc
# ===========================
#
# Everything starting with -11 are macros from rpmrc, those starting with -13
# are definitions from macrofiles (i.e. those are that we want), -15 are
# defaults and -20 are builtins (see rpmio/rpmmacro.h).
#
# => We grep for all lines starting with -13, as these are the macro defines
# from the file in question.
#
# The actual macro name is in the second column and is extracted via awk,
# optionally removing parameters declared in brackets. Also, we drop any macros
# that start with __ as these are considered internal/private and should not be
# exposed as a public API.
while read filename
do
for macro in $(rpm --macros="${filename}" -E "%dump" 2>&1 | grep '^-13:' | awk '{print $2}' | sed -e 's|(.*)||' -e '/^__/d'); do
echo "rpm_macro(${macro})"
done
done
PK L�]qT��
brp-stripnu ȯ�� #!/bin/sh
# If using normal root, avoid changing anything.
if [ -z "$RPM_BUILD_ROOT" ] || [ "$RPM_BUILD_ROOT" = "/" ]; then
exit 0
fi
STRIP=${1:-strip}
NCPUS=${RPM_BUILD_NCPUS:-1}
case `uname -a` in
Darwin*) exit 0 ;;
*) ;;
esac
# Strip ELF binaries
find "$RPM_BUILD_ROOT" -type f \! -regex "${RPM_BUILD_ROOT}/*usr/lib/debug.*" \! -name "*.go" -print0 | \
xargs -0 -r -P$NCPUS -n32 sh -c "file \"\$@\" | sed -n -e 's/^\(.*\):[ ]*ELF.*, not stripped.*/\1/p' | grep -v 'no machine' | xargs -I\{\} $STRIP -g \{\}" ARG0
PK L�]��w3 3 ocamldeps.shnu ȯ�� #!/bin/bash
# This is a helper for rpm which collects 'Provides' and 'Requires' information from OCaml files.
# It reads a list of filenames from STDIN.
# It expects as argument either '--provides|-P' or '--requires|-R'.
# Additional optional arguments are:
# -f "ocamlobjinfo command"
# -c # ignored, recognized just for compat reasons
# -i NAME # omit the Requires/Provides for this bytecode unit name
# -x NAME # omit the Requires/Provides for this native unit name
#
# OCaml object files contain either bytecode or native code.
# Each bytecode variant provides a certain interface, which is represented by a hash.
# Each native variant provides a certain interface and a certain implementation, which are represented by hashes.
# Each variant may also require a certain interface and/or implementation provided by other files.
# The details for each file can be inspected with 'ocamlobjinfo'.
#
# Each file contains at least one module.
# Information about each module follows after a line starting with "Name:" or "Unit name:":
#
# cma/cmi/cmo (bytecode):
# Unit name: NAME
# Interfaces imported:
# HASH NAME
# HASH NAME_FROM_OTHER_MODULE
#
# cmx/cmxa/cmxs (native):
# Name: NAME
# CRC of implementation: HASH
# Interfaces imported:
# HASH NAME
# HASH NAME_FROM_OTHER_MODULE
# Implementations imported:
# HASH NAME_FROM_OTHER_MODULE
#
# cmxs files are recoqnized, but need to be ignored.
# They contain references of the interfaces and implementations
# compiled into them.
#
# The hash may contain just '-', in which case it is ignored.
#
# Output:
# ocaml(NAME) = HASH # for interfaces (bytecode and native)
# ocamlx(NAME) = HASH # for implementations (native)
set -e
#
OCAMLOBJINFO=ocamlobjinfo
rpm_prefix_interface='ocaml'
rpm_prefix_implementation='ocamlx'
#
parse() {
local filename="$1"
${OCAMLOBJINFO} "${filename}" | awk '
BEGIN {
debug=0
mode=ENVIRON["mode"]
RPM_BUILD_ROOT=ENVIRON["RPM_BUILD_ROOT"]
rpm_prefix_interface=ENVIRON["rpm_prefix_interface"]
rpm_prefix_implementation=ENVIRON["rpm_prefix_implementation"]
state="find"
unit=""
split(ENVIRON["ignore_implementation"], ignore_implementation_a)
for (i in ignore_implementation_a) {
val=ignore_implementation_a[i]
if (debug)
printf "INFO: ignore_implementation %s\n", val > "/dev/stderr"
ignore_implementation[val]=1
}
split(ENVIRON["ignore_interface"], ignore_interface_a)
for (i in ignore_interface_a) {
val=ignore_interface_a[i]
if (debug)
printf "INFO: ignore_interface %s\n", val > "/dev/stderr"
ignore_interface[val]=1
}
}
/^File / {
if (RPM_BUILD_ROOT != "" ) {
file=substr($2,length(RPM_BUILD_ROOT)+1)
} else {
file=$2
}
state="file"
next
}
/^Unit name:/ {
unit=$3
state="cma"
next
}
/^Name:/ {
unit=$2
state="cmx"
next
}
/^CRC of implementation:/ {
if (state == "cmx") {
if (ignore_implementation[unit] != "") {
if (ignore_implementation[unit] != "seen") {
printf "INFO: ignoring Provides %s(%s)=%s from %s\n", rpm_prefix_implementation, unit, $4, file > "/dev/stderr"
ignore_implementation[unit]="seen"
}
} else {
implementation_provides[unit]=$4
}
} else {
printf "WARN: state %s, expected cmx, got %s\n", state, $0 > "/dev/stderr"
}
state="crc"
next
}
/^Interfaces imported:/ {
state="interface"
next
}
/^Implementations imported:/ {
state="implementation"
next
}
/^\t/ {
if (state == "interface" && NF > 1 && match($1, "^-") == 0) {
if (unit == $2) {
if (ignore_interface[unit] != "") {
if (ignore_interface[unit] != "seen") {
printf "INFO: ignoring Provides %s(%s)=%s from %s\n", rpm_prefix_interface, unit, $1, file > "/dev/stderr"
ignore_interface[unit]="seen"
}
} else {
interface_provides[unit]=$1
}
} else {
if (ignore_interface[$2] != "") {
if (ignore_interface[$2] != "seen") {
printf "INFO: ignoring Requires %s(%s)=%s from %s\n", rpm_prefix_interface, $2, $1, file > "/dev/stderr"
ignore_interface[$2]="seen"
}
} else {
interface_requires[$2]=$1
}
}
next
} else if (state == "implementation" && NF > 1 && match($1, "^-") == 0) {
if (unit == $2) {
if (ignore_implementation[unit] != "") {
if (ignore_implementation[unit] != "seen") {
printf "INFO: ignoring Provides %s(%s)=%s from %s\n", rpm_prefix_implementation, unit, $1, file > "/dev/stderr"
ignore_implementation[unit]="seen"
}
} else {
implementation_provides[unit]=$1
}
} else {
if (ignore_implementation[$2] != "") {
if (ignore_implementation[$2] != "seen") {
printf "INFO: ignoring Requires %s(%s)=%s from %s\n", rpm_prefix_implementation, $2, $1, file > "/dev/stderr"
ignore_implementation[$2]="seen"
}
} else {
implementation_requires[$2]=$1
}
}
next
} else {
next
}
}
/^.*/ {
state="find"
}
END {
if (mode == "provides") {
for (i in interface_provides) {
printf "%s(%s) = %s\n", rpm_prefix_interface, i, interface_provides[i]
}
for (i in implementation_provides) {
printf "%s(%s) = %s\n", rpm_prefix_implementation, i, implementation_provides[i]
}
}
if (mode == "requires") {
for (i in interface_requires) {
printf "%s(%s) = %s\n", rpm_prefix_interface, i, interface_requires[i]
}
for (i in implementation_requires) {
printf "%s(%s) = %s\n", rpm_prefix_implementation, i, implementation_requires[i]
}
}
}
'
}
#
#
usage() {
echo >&2 "Usage: ${0##*/} -provides|-requires [-f 'ocamlobjinfo cmd']"
}
#
mode=
ignore_implementation_a=()
ignore_interface_a=()
while test "$#" -gt 0
do
: "${1}" "${2}"
case "${1}" in
-P|--provides) mode='provides' ;;
-R|--requires) mode='requires' ;;
-i) ignore_interface_a+=("$2") ; shift ;;
-x) ignore_implementation_a+=("$2") ; shift ;;
-f) OCAMLOBJINFO="$2"; shift ;;
-h|--help) usage ; exit 0 ;;
-c) ;; # ignored
--) break ;;
*) usage ; exit 1 ;;
esac
shift
done
if test -z "${mode}"
then
usage
exit 1
fi
#
export rpm_prefix_interface
export rpm_prefix_implementation
export mode
export ignore_implementation="${ignore_implementation_a[@]}"
export ignore_interface="${ignore_interface_a[@]}"
#
while read filename
do
case "${filename}" in
*.cma) parse "${filename}" ;;
*.cmi) parse "${filename}" ;;
*.cmo) parse "${filename}" ;;
*.cmx) parse "${filename}" ;;
*.cmxa) parse "${filename}" ;;
*.cmxs) ;;
*) continue ;;
esac
done
# vim: tw=666 ts=2 shiftwidth=2 et
PK L�]v�}�� � fileattrs/perllib.attrnu �[��� %__perllib_provides %{_rpmconfigdir}/perl.prov
%__perllib_requires %{_rpmconfigdir}/perl.req
%__perllib_magic ^Perl[[:digit:]] module source.*
%__perllib_path \\.pm$
%__perllib_flags magic_and_path
PK L�]�LD` ` fileattrs/perl.attrnu �[��� %__perl_requires %{_rpmconfigdir}/perl.req
%__perl_magic ^.*[Pp]erl .*$
%__perl_flags exeonly
PK L�]Wn�� � fileattrs/font.attrnu �[��� %__font_provides %{_rpmconfigdir}/fontconfig.prov
%__font_requires %{nil}
%__font_magic [Ff]ont?( (program|collection))?( (text|data))
PK L�]��3�P P fileattrs/python.attrnu �[��� %__python_provides() %{lua:
-- Match buildroot/payload paths of the form
-- /PATH/OF/BUILDROOT/usr/bin/pythonMAJOR.MINOR
-- generating a line of the form
-- python(abi) = MAJOR.MINOR
-- (Don't match against -config tools e.g. /usr/bin/python2.6-config)
local path = rpm.expand('%1')
if path:match('/usr/bin/python%d+%.%d+$') then
local provides = path:gsub('.*/usr/bin/python(%d+%.%d+)', 'python(abi) = %1')
print(provides)
end
}
%__python_requires() %{lua:
-- Match buildroot paths of the form
-- /PATH/OF/BUILDROOT/usr/lib/pythonMAJOR.MINOR/ and
-- /PATH/OF/BUILDROOT/usr/lib64/pythonMAJOR.MINOR/
-- generating a line of the form:
-- python(abi) = MAJOR.MINOR
local path = rpm.expand('%1')
if path:match('/usr/lib%d*/python%d+%.%d+/.*') then
local requires = path:gsub('.*/usr/lib%d*/python(%d+%.%d+)/.*', 'python(abi) = %1')
print(requires)
end
}
%__python_path ^((%{_prefix}/lib(64)?/python[[:digit:]]+\\.[[:digit:]]+/.*\\.(py[oc]?|so))|(%{_bindir}/python[[:digit:]]+\\.[[:digit:]]+))$
PK L�]�e��s s fileattrs/rpm_macro.attrnu �[��� %__rpm_macro_provides %{_rpmconfigdir}/rpm_macros_provides.sh
%__rpm_macro_path %{_rpmmacrodir}/macros\..*
PK L�]�VƳ� � fileattrs/ocaml.attrnu �[��� %__ocaml_provides %{_rpmconfigdir}/ocamldeps.sh --provides
%__ocaml_requires %{_rpmconfigdir}/ocamldeps.sh --requires
%__ocaml_magic ^(Objective caml|OCaml) .*$
%__ocaml_path .(cma|cmi|cmo|cmx|cmxa)$
%__ocaml_flags magic_and_path
PK L�]{6�s fileattrs/debuginfo.attrnu �[��� %__debuginfo_provides() %{lua:
local file = rpm.expand("%1")
local b1, b2 = file:match("/([0-9a-f]+)/([0-9a-f]+)\.debug$")
print(string.format("debuginfo(build-id) = %s%s\\n", b1, b2))
}
%__debuginfo_path ^/usr/lib/debug/.build-id/[^/]+/[^/]+\\.debug$
PK L�]�飭� � fileattrs/desktop.attrnu �[��� %__desktop_provides() %{lua:
local executable = false
local mimetypes = nil
for line in io.lines(rpm.expand("%1")) do
if line:match("^Type%s*=%s*Application$") or line:match("^Exec%s*=") then
executable = true
elseif line:match("^MimeType%s*=") then
mimetypes = line:match("=%s*(.+)")
end
end
if executable then
print("application()\\n")
print(string.format("application(%s)\\n", rpm.expand("%{basename:%1}")))
if mimetypes then
for mimetype in mimetypes:gmatch("([^;]+)") do
print(string.format("mimehandler(%s)\\n", mimetype))
end
end
end
}
%__desktop_path ^%{_datadir}/applications/.*\\.desktop$
PK L�]E,Dk k fileattrs/script.attrnu �[��� %__script_requires %{_rpmconfigdir}/script.req
%__script_magic ^.* script[, ].*$
%__script_flags exeonly
PK L�]C�&�� � fileattrs/pkgconfig.attrnu �[��� %__pkgconfig_provides %{_rpmconfigdir}/pkgconfigdeps.sh --provides
%__pkgconfig_requires %{_rpmconfigdir}/pkgconfigdeps.sh --requires
%__pkgconfig_path ^((%{_libdir}|%{_datadir})/pkgconfig/.*\.pc|%{_bindir}/pkg-config)$
PK L�]�7r! fileattrs/pythondist.attrnu �[��� %__pythondist_provides %{_rpmconfigdir}/pythondistdeps.py --provides --majorver-provides
%__pythondist_requires %{_rpmconfigdir}/pythondistdeps.py --requires
%__pythondist_path /lib(64)?/python[[:digit:]]\\.[[:digit:]]+/site-packages/[^/]+\\.(dist-info|egg-info|egg-link)$
PK L�]�[�Q� � fileattrs/metainfo.attrnu �[��� %__metainfo_provides() %{lua:
print("metainfo()\\n")
print(string.format("metainfo(%s)\\n", rpm.expand("%{basename:%1}")))
}
%__metainfo_path ^%{_datadir}/(appdata|metainfo)/.*\\.(appdata|metainfo)\\.xml$
PK L�]2q� � fileattrs/elf.attrnu �[��� %__elf_provides %{_rpmconfigdir}/elfdeps --provides
%__elf_requires %{_rpmconfigdir}/elfdeps --requires
%__elf_magic ^(setuid,? )?(setgid,? )?(sticky )?ELF (32|64)-bit.*$
%__elf_exclude_path ^/lib/modules/.*\.ko?(\.[[:alnum:]]*)$
PK L�][���E �E rpmrcnu �[��� #/*! \page config_rpmrc Default configuration: /usr/lib/rpm/rpmrc
# \verbatim
#
# This is a global RPM configuration file. All changes made here will
# be lost when the rpm package is upgraded. Any per-system configuration
# should be added to /etc/rpmrc, while per-user configuration should
# be added to ~/.rpmrc.
#
#############################################################
# Values for RPM_OPT_FLAGS for various platforms
# "fat" binary with both archs, for Darwin
optflags: fat -O2 -g -arch i386 -arch ppc
optflags: i386 -O2 -g -march=i386 -mtune=i686
optflags: i486 -O2 -g -march=i486
optflags: i586 -O2 -g -march=i586
optflags: i686 -O2 -g -march=i686
optflags: pentium3 -O2 -g -march=pentium3
optflags: pentium4 -O2 -g -march=pentium4
optflags: athlon -O2 -g -march=athlon
optflags: geode -Os -g -m32 -march=geode
optflags: ia64 -O2 -g
optflags: x86_64 -O2 -g
optflags: amd64 -O2 -g
optflags: ia32e -O2 -g
optflags: alpha -O2 -g -mieee
optflags: alphaev5 -O2 -g -mieee -mtune=ev5
optflags: alphaev56 -O2 -g -mieee -mtune=ev56
optflags: alphapca56 -O2 -g -mieee -mtune=pca56
optflags: alphaev6 -O2 -g -mieee -mtune=ev6
optflags: alphaev67 -O2 -g -mieee -mtune=ev67
optflags: sparc -O2 -g -m32 -mtune=ultrasparc
optflags: sparcv8 -O2 -g -m32 -mtune=ultrasparc -mv8
optflags: sparcv9 -O2 -g -m32 -mtune=ultrasparc
optflags: sparcv9v -O2 -g -m32 -mtune=niagara
optflags: sparc64 -O2 -g -m64 -mtune=ultrasparc
optflags: sparc64v -O2 -g -m64 -mtune=niagara
optflags: m68k -O2 -g -fomit-frame-pointer
optflags: ppc -O2 -g
optflags: ppc8260 -O2 -g
optflags: ppc8560 -O2 -g
optflags: ppc32dy4 -O2 -g
optflags: ppciseries -O2 -g
optflags: ppcpseries -O2 -g
optflags: ppc64 -O2 -g
optflags: ppc64le -O2 -g
optflags: ppc64p7 -O3 -mtune=power7 -mcpu=power7 -g
optflags: parisc -O2 -g -mpa-risc-1-0
optflags: hppa1.0 -O2 -g -mpa-risc-1-0
optflags: hppa1.1 -O2 -g -mpa-risc-1-0
optflags: hppa1.2 -O2 -g -mpa-risc-1-0
optflags: hppa2.0 -O2 -g -mpa-risc-1-0
optflags: mips -O2 -g
optflags: mipsel -O2 -g
optflags: mips64 -O2 -g
optflags: mips64el -O2 -g
optflags: mipsr6 -O2 -g
optflags: mipsr6el -O2 -g
optflags: mips64r6 -O2 -g
optflags: mips64r6el -O2 -g
optflags: armv3l -O2 -g -march=armv3
optflags: armv4b -O2 -g -march=armv4
optflags: armv4l -O2 -g -march=armv4
optflags: armv4tl -O2 -g -march=armv4t
optflags: armv5tl -O2 -g -march=armv5t
optflags: armv5tel -O2 -g -march=armv5te
optflags: armv5tejl -O2 -g -march=armv5te
optflags: armv6l -O2 -g -march=armv6
optflags: armv6hl -O2 -g -march=armv6 -mfloat-abi=hard -mfpu=vfp
optflags: armv7l -O2 -g -march=armv7
optflags: armv7hl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16
optflags: armv7hnl -O2 -g -march=armv7-a -mfloat-abi=hard -mfpu=neon
optflags: armv8l -O2 -g -march=armv8-a
optflags: armv8hl -O2 -g -march=armv8-a -mfloat-abi=hard -mfpu=vfpv4
optflags: m68k -O2 -g -fomit-frame-pointer
optflags: atarist -O2 -g -fomit-frame-pointer
optflags: atariste -O2 -g -fomit-frame-pointer
optflags: ataritt -O2 -g -fomit-frame-pointer
optflags: falcon -O2 -g -fomit-frame-pointer
optflags: atariclone -O2 -g -fomit-frame-pointer
optflags: milan -O2 -g -fomit-frame-pointer
optflags: hades -O2 -g -fomit-frame-pointer
optflags: s390 -O2 -g
optflags: s390x -O2 -g
optflags: sh3 -O2 -g
optflags: sh4 -O2 -g -mieee
optflags: sh4a -O2 -g -mieee
optflags: aarch64 -O2 -g
optflags: riscv64 -O2 -g
optflags: loongarch64 -O2 -g
#############################################################
# Architecture colors
archcolor: noarch 0
archcolor: i386 1
archcolor: alpha 2
archcolor: sparc 1
archcolor: sparc64 2
archcolor: sparcv9 2
archcolor: ppc 1
archcolor: ppc64 2
archcolor: ppc64le 2
archcolor: armv3l 1
archcolor: armv4b 1
archcolor: armv4l 1
archcolor: armv4tl 1
archcolor: armv5tel 1
archcolor: armv5tejl 1
archcolor: armv6l 1
archcolor: armv7l 1
archcolor: armv8l 1
archcolor: mips 1
archcolor: mipsel 1
archcolor: mips64 2
archcolor: mips64el 2
archcolor: mipsr6 1
archcolor: mipsr6el 1
archcolor: mips64r6 2
archcolor: mips64r6el 2
archcolor: m68k 1
archcolor: m68kmint 1
archcolor: s390 1
archcolor: s390x 2
archcolor: ia64 2
archcolor: x86_64 2
archcolor: sh3 1
archcolor: sh4 1
archcolor: aarch64 2
archcolor: riscv64 2
archcolor: loongarch64 2
#############################################################
# Canonical arch names and numbers
arch_canon: athlon: athlon 1
arch_canon: geode: geode 1
arch_canon: pentium4: pentium4 1
arch_canon: pentium3: pentium3 1
arch_canon: i686: i686 1
arch_canon: i586: i586 1
arch_canon: i486: i486 1
arch_canon: i386: i386 1
arch_canon: x86_64: x86_64 1
arch_canon: amd64: amd64 1
arch_canon: ia32e: ia32e 1
arch_canon: em64t: em64t 1
arch_canon: alpha: alpha 2
arch_canon: alphaev5: alphaev5 2
arch_canon: alphaev56: alphaev56 2
arch_canon: alphapca56:alphapca56 2
arch_canon: alphaev6: alphaev6 2
arch_canon: alphaev67: alphaev67 2
# We always want to prefer sparc to sparc64.
arch_canon: sparc64:sparc64 2
arch_canon: sun4u: sparc64 2
arch_canon: sparc64v: sparc64v 2
arch_canon: sparc: sparc 3
arch_canon: sun4: sparc 3
arch_canon: sun4m: sparc 3
arch_canon: sun4c: sparc 3
arch_canon: sun4d: sparc 3
arch_canon: sparcv8: sparcv8 3
arch_canon: sparcv9: sparcv9 3
arch_canon: sparcv9v: sparcv9v 3
# This is really a place holder for MIPS.
arch_canon: mips: mips 4
arch_canon: mipsel: mipsel 4
arch_canon: ppc: ppc 5
arch_canon: ppc8260: ppc8260 5
arch_canon: ppc8560: ppc8560 5
arch_canon: ppc32dy4: ppc32dy4 5
arch_canon: ppciseries: ppciseries 5
arch_canon: ppcpseries: ppcpseries 5
arch_canon: m68k: m68k 6
arch_canon: IP: sgi 7
arch_canon: rs6000: rs6000 8
arch_canon: ia64: ia64 9
arch_canon: mips64: mips64 11
arch_canon: mips64el: mips64el 11
arch_canon: armv3l: armv3l 12
arch_canon: armv4b: armv4b 12
arch_canon: armv4l: armv4l 12
arch_canon: armv5tl: armv5tl 12
arch_canon: armv5tel: armv5tel 12
arch_canon: armv5tejl: armv5tejl 12
arch_canon: armv6l: armv6l 12
arch_canon: armv6hl: armv6hl 12
arch_canon: armv7l: armv7l 12
arch_canon: armv7hl: armv7hl 12
arch_canon: armv7hnl: armv7hnl 12
arch_canon: armv8l: armv8l 12
arch_canon: armv8hl: armv8hl 12
arch_canon: m68kmint: m68kmint 13
arch_canon: atarist: m68kmint 13
arch_canon: atariste: m68kmint 13
arch_canon: ataritt: m68kmint 13
arch_canon: falcon: m68kmint 13
arch_canon: atariclone: m68kmint 13
arch_canon: milan: m68kmint 13
arch_canon: hades: m68kmint 13
arch_canon: s390: s390 14
arch_canon: i370: i370 14
arch_canon: s390x: s390x 15
arch_canon: ppc64: ppc64 16
arch_canon: ppc64le: ppc64le 16
arch_canon: ppc64pseries: ppc64pseries 16
arch_canon: ppc64iseries: ppc64iseries 16
arch_canon: ppc64p7: ppc64p7 16
arch_canon: sh: sh 17
arch_canon: sh3: sh3 17
arch_canon: sh4: sh4 17
arch_canon: sh4a: sh4a 17
arch_canon: xtensa: xtensa 18
arch_canon: aarch64: aarch64 19
arch_canon: mipsr6: mipsr6 20
arch_canon: mipsr6el: mipsr6el 20
arch_canon: mips64r6: mips64r6 21
arch_canon: mips64r6el: mips64r6el 21
arch_canon: riscv: riscv64 22
arch_canon: riscv64: riscv64 22
arch_canon: loongarch64: loongarch64 23
#############################################################
# Canonical OS names and numbers
os_canon: Linux: Linux 1
os_canon: IRIX: Irix 2
# This is wrong
os_canon: SunOS5: solaris 3
os_canon: SunOS4: SunOS 4
os_canon: AmigaOS: AmigaOS 5
os_canon: AIX: AIX 5
os_canon: HP-UX: hpux10 6
os_canon: OSF1: osf1 7
os_canon: osf4.0: osf1 7
os_canon: osf3.2: osf1 7
os_canon: FreeBSD: FreeBSD 8
os_canon: SCO_SV: SCO_SV3.2v5.0.2 9
os_canon: IRIX64: Irix64 10
os_canon: NEXTSTEP: NextStep 11
os_canon: BSD_OS: bsdi 12
os_canon: machten: machten 13
os_canon: CYGWIN32_NT: cygwin32 14
os_canon: CYGWIN32_95: cygwin32 15
os_canon: UNIX_SV: MP_RAS: 16
os_canon: MiNT: FreeMiNT 17
os_canon: OS/390: OS/390 18
os_canon: VM/ESA: VM/ESA 19
os_canon: Linux/390: OS/390 20
os_canon: Linux/ESA: VM/ESA 20
os_canon: Darwin: darwin 21
os_canon: MacOSX: macosx 21
#############################################################
# For a given uname().machine, the default build arch
buildarchtranslate: osfmach3_i686: i386
buildarchtranslate: osfmach3_i586: i386
buildarchtranslate: osfmach3_i486: i386
buildarchtranslate: osfmach3_i386: i386
buildarchtranslate: athlon: i386
buildarchtranslate: geode: i386
buildarchtranslate: pentium4: i386
buildarchtranslate: pentium3: i386
buildarchtranslate: i686: i386
buildarchtranslate: i586: i386
buildarchtranslate: i486: i386
buildarchtranslate: i386: i386
buildarchtranslate: alphaev5: alpha
buildarchtranslate: alphaev56: alpha
buildarchtranslate: alphapca56: alpha
buildarchtranslate: alphaev6: alpha
buildarchtranslate: alphaev67: alpha
buildarchtranslate: sun4c: sparc
buildarchtranslate: sun4d: sparc
buildarchtranslate: sun4m: sparc
buildarchtranslate: sparcv8: sparc
buildarchtranslate: sparcv9: sparc
buildarchtranslate: sparcv9v: sparc
buildarchtranslate: sun4u: sparc64
buildarchtranslate: sparc64v: sparc64
buildarchtranslate: osfmach3_ppc: ppc
buildarchtranslate: powerpc: ppc
buildarchtranslate: powerppc: ppc
buildarchtranslate: ppc8260: ppc
buildarchtranslate: ppc8560: ppc
buildarchtranslate: ppc32dy4: ppc
buildarchtranslate: ppciseries: ppc
buildarchtranslate: ppcpseries: ppc
buildarchtranslate: ppc64iseries: ppc64
buildarchtranslate: ppc64pseries: ppc64
buildarchtranslate: ppc64p7: ppc64
buildarchtranslate: ppc64le: ppc64le
buildarchtranslate: armv3l: armv3l
buildarchtranslate: armv4b: armv4b
buildarchtranslate: armv4l: armv4l
buildarchtranslate: armv4tl: armv4tl
buildarchtranslate: armv5tl: armv5tl
buildarchtranslate: armv5tel: armv5tel
buildarchtranslate: armv5tejl: armv5tejl
buildarchtranslate: armv6l: armv6l
buildarchtranslate: armv6hl: armv6hl
buildarchtranslate: armv7l: armv7l
buildarchtranslate: armv7hl: armv7hl
buildarchtranslate: armv7hnl: armv7hnl
buildarchtranslate: armv8l: armv8l
buildarchtranslate: armv8hl: armv8hnl
buildarchtranslate: mips: mips
buildarchtranslate: mipsel: mipsel
buildarchtranslate: mips64: mips64
buildarchtranslate: mips64el: mips64el
buildarchtranslate: mipsr6: mipsr6
buildarchtranslate: mipsr6el: mipsr6el
buildarchtranslate: mips64r6: mips64r6
buildarchtranslate: mips64r6el: mips64r6el
buildarchtranslate: m68k: m68k
buildarchtranslate: atarist: m68kmint
buildarchtranslate: atariste: m68kmint
buildarchtranslate: ataritt: m68kmint
buildarchtranslate: falcon: m68kmint
buildarchtranslate: atariclone: m68kmint
buildarchtranslate: milan: m68kmint
buildarchtranslate: hades: m68kmint
buildarchtranslate: s390: s390
buildarchtranslate: s390x: s390x
buildarchtranslate: ia64: ia64
buildarchtranslate: x86_64: x86_64
buildarchtranslate: amd64: x86_64
buildarchtranslate: ia32e: x86_64
buildarchtranslate: sh3: sh3
buildarchtranslate: sh4: sh4
buildarchtranslate: sh4a: sh4
buildarchtranslate: aarch64: aarch64
buildarchtranslate: riscv: riscv64
buildarchtranslate: riscv64: riscv64
buildarchtranslate: loongarch64: loongarch64
#############################################################
# Architecture compatibility
arch_compat: alphaev67: alphaev6
arch_compat: alphaev6: alphapca56
arch_compat: alphapca56: alphaev56
arch_compat: alphaev56: alphaev5
arch_compat: alphaev5: alpha
arch_compat: alpha: axp noarch
arch_compat: athlon: i686
arch_compat: geode: i586
arch_compat: pentium4: pentium3
arch_compat: pentium3: i686
arch_compat: i686: i586
arch_compat: i586: i486
arch_compat: i486: i386
arch_compat: i386: noarch fat
arch_compat: osfmach3_i686: i686 osfmach3_i586
arch_compat: osfmach3_i586: i586 osfmach3_i486
arch_compat: osfmach3_i486: i486 osfmach3_i386
arch_compat: osfmach3_i386: i486
arch_compat: osfmach3_ppc: ppc
arch_compat: powerpc: ppc
arch_compat: powerppc: ppc
arch_compat: ppc8260: ppc
arch_compat: ppc8560: ppc
arch_compat: ppc32dy4: ppc
arch_compat: ppciseries: ppc
arch_compat: ppcpseries: ppc
arch_compat: ppc64: ppc
arch_compat: ppc: rs6000
arch_compat: rs6000: noarch fat
arch_compat: ppc64pseries: ppc64
arch_compat: ppc64iseries: ppc64
arch_compat: ppc64p7: ppc64
arch_compat: ppc64le: noarch fat
arch_compat: sun4c: sparc
arch_compat: sun4d: sparc
arch_compat: sun4m: sparc
arch_compat: sun4u: sparc64
arch_compat: sparc64v: sparc64
arch_compat: sparc64: sparcv9
arch_compat: sparcv9v: sparcv9
arch_compat: sparcv9: sparcv8
arch_compat: sparcv8: sparc
arch_compat: sparc: noarch
arch_compat: mips: noarch
arch_compat: mipsel: noarch
arch_compat: mips64: mips
arch_compat: mips64el: mipsel
arch_compat: mipsr6: noarch
arch_compat: mipsr6el: noarch
arch_compat: mips64r6: mipsr6
arch_compat: mips64r6el: mipsr6el
arch_compat: hppa2.0: hppa1.2
arch_compat: hppa1.2: hppa1.1
arch_compat: hppa1.1: hppa1.0
arch_compat: hppa1.0: parisc
arch_compat: parisc: noarch
arch_compat: armv4b: noarch
arch_compat: armv8l: armv7l
arch_compat: armv7l: armv6l
arch_compat: armv6l: armv5tejl
arch_compat: armv5tejl: armv5tel
arch_compat: armv5tel: armv5tl
arch_compat: armv5tl: armv4tl
arch_compat: armv4tl: armv4l
arch_compat: armv4l: armv3l
arch_compat: armv3l: noarch
arch_compat: armv8hl: armv7hl
arch_compat: armv7hnl: armv7hl
arch_compat: armv7hl: armv6hl
arch_compat: armv6hl: noarch
arch_compat: m68k: noarch
arch_compat: atarist: m68kmint noarch
arch_compat: atariste: m68kmint noarch
arch_compat: ataritt: m68kmint noarch
arch_compat: falcon: m68kmint noarch
arch_compat: atariclone: m68kmint noarch
arch_compat: milan: m68kmint noarch
arch_compat: hades: m68kmint noarch
arch_compat: i370: noarch
arch_compat: s390: noarch
arch_compat: s390x: s390 noarch
arch_compat: ia64: noarch
arch_compat: x86_64: amd64 em64t athlon noarch
arch_compat: amd64: x86_64 em64t athlon noarch
arch_compat: ia32e: x86_64 em64t athlon noarch
arch_compat: sh3: noarch
arch_compat: sh4: noarch
arch_compat: sh4a: sh4
arch_compat: aarch64: noarch
arch_compat: riscv: noarch
arch_compat: riscv64: noarch
os_compat: IRIX64: IRIX
os_compat: solaris2.7: solaris2.3 solaris2.4 solaris2.5 solaris2.6
os_compat: solaris2.6: solaris2.3 solaris2.4 solaris2.5
os_compat: solaris2.5: solaris2.3 solaris2.4
os_compat: solaris2.4: solaris2.3
os_compat: hpux11.00: hpux10.30
os_compat: hpux10.30: hpux10.20
os_compat: hpux10.20: hpux10.10
os_compat: hpux10.10: hpux10.01
os_compat: hpux10.01: hpux10.00
os_compat: hpux10.00: hpux9.07
os_compat: hpux9.07: hpux9.05
os_compat: hpux9.05: hpux9.04
os_compat: osf4.0: osf3.2 osf1
os_compat: ncr-sysv4.3: ncr-sysv4.2
os_compat: FreeMiNT: mint MiNT TOS
os_compat: MiNT: FreeMiNT mint TOS
os_compat: mint: FreeMiNT MiNT TOS
os_compat: TOS: FreeMiNT MiNT mint
os_compat: BSD_OS: bsdi
os_compat: bsdi4.0: bsdi
os_compat: Darwin: MacOSX
arch_compat: loongarch64: noarch
buildarch_compat: ia64: noarch
buildarch_compat: aarch64: noarch
buildarch_compat: riscv: noarch
buildarch_compat: riscv64: noarch
buildarch_compat: athlon: i686
buildarch_compat: geode: i586
buildarch_compat: pentium4: pentium3
buildarch_compat: pentium3: i686
buildarch_compat: i686: i586
buildarch_compat: i586: i486
buildarch_compat: i486: i386
buildarch_compat: i386: noarch fat
buildarch_compat: sun4c: noarch
buildarch_compat: sun4d: noarch
buildarch_compat: sun4m: noarch
buildarch_compat: sun4u: noarch
buildarch_compat: sparc64v: sparc64
buildarch_compat: sparc64: sparcv9v
buildarch_compat: sparcv9v: sparcv9
buildarch_compat: sparcv9: sparcv8
buildarch_compat: sparcv8: sparc
buildarch_compat: sparc: noarch
buildarch_compat: alphaev67: alphaev6
buildarch_compat: alphaev6: alphapca56
buildarch_compat: alphapca56: alphaev56
buildarch_compat: alphaev56: alphaev5
buildarch_compat: alphaev5: alpha
buildarch_compat: alpha: noarch
buildarch_compat: m68k: noarch
buildarch_compat: ppc8260: noarch
buildarch_compat: ppc8560: noarch
buildarch_compat: ppc32dy4: noarch
buildarch_compat: ppciseries: noarch
buildarch_compat: ppcpseries: noarch
buildarch_compat: ppc: noarch fat
buildarch_compat: ppc64: noarch fat
buildarch_compat: ppc64le: noarch fat
buildarch_compat: ppc64pseries: ppc64
buildarch_compat: ppc64iseries: ppc64
buildarch_compat: ppc64p7: ppc64
buildarch_compat: mips: noarch
buildarch_compat: mipsel: noarch
buildarch_compat: mips64: noarch
buildarch_compat: mips64el: noarch
buildarch_compat: mipsr6: noarch
buildarch_compat: mipsr6el: noarch
buildarch_compat: mips64r6: noarch
buildarch_compat: mips64r6el: noarch
buildarch_compat: armv4b: noarch
buildarch_compat: armv8l: armv7l
buildarch_compat: armv7l: armv6l
buildarch_compat: armv6l: armv5tejl
buildarch_compat: armv5tejl: armv5tel armv5tl
buildarch_compat: armv5tel: armv4tl armv5tl
buildarch_compat: armv5tl: armv4tl
buildarch_compat: armv4tl: armv4l
buildarch_compat: armv4l: armv3l
buildarch_compat: armv3l: noarch
buildarch_compat: armv8hcnl: armv8hnl
buildarch_compat: armv8hnl: armv8hl
buildarch_compat: armv8hnl: armv7hnl
buildarch_compat: armv8hl: armv7hl
buildarch_compat: armv7hnl: armv7hl
buildarch_compat: armv7hl: armv6hl
buildarch_compat: armv6hl: noarch
buildarch_compat: hppa2.0: hppa1.2
buildarch_compat: hppa1.2: hppa1.1
buildarch_compat: hppa1.1: hppa1.0
buildarch_compat: hppa1.0: parisc
buildarch_compat: parisc: noarch
buildarch_compat: atarist: m68kmint noarch
buildarch_compat: atariste: m68kmint noarch
buildarch_compat: ataritt: m68kmint noarch
buildarch_compat: falcon: m68kmint noarch
buildarch_compat: atariclone: m68kmint noarch
buildarch_compat: milan: m68kmint noarch
buildarch_compat: hades: m68kmint noarch
buildarch_compat: s390: noarch
buildarch_compat: s390x: noarch
buildarch_compat: ia64: noarch
buildarch_compat: x86_64: noarch
buildarch_compat: amd64: x86_64
buildarch_compat: ia32e: x86_64
buildarch_compat: sh3: noarch
buildarch_compat: sh4: noarch
buildarch_compat: sh4a: sh4
buildarch_compat: loongarch64: noarch
# \endverbatim
#*/
PK L�]h~��, �, rpmpopt-4.18.2nu �[��� #/*! \page config_rpmpopt Default configuration: /usr/lib/rpm/rpmpopt-4.18.2
# \verbatim
#
# This file *should not be modified*. Local customizations
# belong in /etc/popt, not here. This file will be replaced
# whenever a new version of RPM is installed.
#
# Note: Not all popt aliases are documented. This is a decision on my
# part as to which are the more important aliases. Feel free to clip
# a copy of the alias/exec here and place in /etc/popt or ~/.popt with
# your own words added. It's easier than arguing about how many options
# fit on the head of an executable :-)
#
rpm alias --scripts --qf '\
%|PRETRANS?{pretrans scriptlet\
%|PRETRANSPROG?{ (using[ %{PRETRANSPROG}])}|:\n%{PRETRANS}\n}:\
{%|PRETRANSPROG?{pretrans program:[ %{PRETRANSPROG}]\n}|}|\
\
%|PREIN?{preinstall scriptlet\
%|PREINPROG?{ (using[ %{PREINPROG}])}|:\n%{PREIN}\n}:\
{%|PREINPROG?{preinstall program:[ %{PREINPROG}]\n}|}|\
\
%|POSTIN?{postinstall scriptlet\
%|POSTINPROG?{ (using[ %{POSTINPROG}])}|:\n%{POSTIN}\n}:\
{%|POSTINPROG?{postinstall program:[ %{POSTINPROG}]\n}|}|\
\
%|PREUN?{preuninstall scriptlet\
%|PREUNPROG?{ (using[ %{PREUNPROG}])}|:\n%{PREUN}\n}:\
{%|PREUNPROG?{preuninstall program:[ %{PREUNPROG}]\n}|}|\
\
%|POSTUN?{postuninstall scriptlet\
%|POSTUNPROG?{ (using[ %{POSTUNPROG}])}|:\n%{POSTUN}\n}:\
{%|POSTUNPROG?{postuninstall program:[ %{POSTUNPROG}]\n}|}|\
\
%|POSTTRANS?{posttrans scriptlet\
%|POSTTRANSPROG?{ (using[ %{POSTTRANSPROG}])}|:\n%{POSTTRANS}\n}:\
{%|POSTTRANSPROG?{posttrans program:[ %{POSTTRANSPROG}]\n}|}|\
\
%|VERIFYSCRIPT?{verify scriptlet\
%|VERIFYSCRIPTPROG?{ (using[ %{VERIFYSCRIPTPROG}])}|:\n%{VERIFYSCRIPT}\n}:\
{%|VERIFYSCRIPTPROG?{verify program:[ %{VERIFYSCRIPTPROG}]\n}|}|\
' \
--POPTdesc=$"list install/erase scriptlets from package(s)"
# obsolete
rpm alias --setperms --restore
rpm alias --setugids --restore
rpm alias --setcaps --restore
rpm alias --conflicts --qf \
"[%|VERBOSE?{%{CONFLICTFLAGS:deptype}: }:{}|%{CONFLICTNEVRS}\n]" \
--POPTdesc=$"list capabilities this package conflicts with"
rpm alias --obsoletes --qf \
"[%|VERBOSE?{%{OBSOLETEFLAGS:deptype}: }:{}|%{OBSOLETENEVRS}\n]" \
--POPTdesc=$"list other packages removed by installing this package"
rpm alias --provides --qf \
"[%|VERBOSE?{%{PROVIDEFLAGS:deptype}: }:{}|%{PROVIDENEVRS}\n]" \
--POPTdesc=$"list capabilities that this package provides"
rpm alias -P --provides
rpm alias --requires --qf \
"[%|VERBOSE?{%{REQUIREFLAGS:deptype}: }:{}|%{REQUIRENEVRS}\n]" \
--POPTdesc=$"list capabilities required by package(s)"
rpm alias -R --requires
rpm alias --recommends --qf \
"[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \
--POPTdesc=$"list capabilities recommended by package(s)"
rpm alias --suggests --qf \
"[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \
--POPTdesc=$"list capabilities suggested by package(s)"
rpm alias --supplements --qf \
"[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \
--POPTdesc=$"list capabilities supplemented by package(s)"
rpm alias --enhances --qf \
"[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \
--POPTdesc=$"list capabilities enhanced by package(s)"
rpm alias --info --qf '\
Name : %{NAME}\n\
%|EPOCH?{Epoch : %{EPOCH}\n}|\
Version : %{VERSION}\n\
Release : %{RELEASE}\n\
%|DISTTAG?{DistTag : %{DISTTAG}\n}|\
Architecture: %{ARCH}\n\
Install Date: %|INSTALLTIME?{%{INSTALLTIME:date}}:{(not installed)}|\n\
Group : %{GROUP}\n\
Size : %{LONGSIZE}\n\
%|LICENSE?{License : %{LICENSE}}|\n\
Signature : %|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{%|SIGGPG?{%{SIGGPG:pgpsig}}:{%|SIGPGP?{%{SIGPGP:pgpsig}}:{(none)}|}|}|}|\n\
Source RPM : %{SOURCERPM}\n\
Build Date : %{BUILDTIME:date}\n\
Build Host : %{BUILDHOST}\n\
%|PREFIXES?{Relocations : [%{PREFIXES} ]\n}|\
%|PACKAGER?{Packager : %{PACKAGER}\n}|\
%|VENDOR?{Vendor : %{VENDOR}\n}|\
%|VCS?{VCS : %{VCS}\n}|\
%|URL?{URL : %{URL}\n}|\
%|BUGURL?{Bug URL : %{BUGURL}\n}|\
Summary : %{SUMMARY}\n\
Description :\n%{DESCRIPTION}\n' \
--POPTdesc=$"list descriptive information from package(s)"
rpm alias --changelog --qf '[* %{CHANGELOGTIME:day} %{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]' \
--POPTdesc=$"list change logs for this package"
rpm alias --changes --qf '[* %{CHANGELOGTIME:date} %{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]' \
--POPTdesc=$"list changes for this package with full time stamps"
rpm alias --xml --qf '[%{*:xml}\n]' \
--POPTdesc=$"list metadata in xml"
rpm alias --triggerscripts --qf '\
[trigger%{TRIGGERTYPE} scriptlet (using %{TRIGGERSCRIPTPROG}) -- %{TRIGGERCONDS}\n\
%{TRIGGERSCRIPTS}\n]'
rpm alias --triggers --triggerscripts \
--POPTdesc=$"list trigger scriptlets from package(s)"
rpm alias --filetriggerscripts --qf '\
[filetrigger%{FILETRIGGERTYPE} scriptlet (using %{FILETRIGGERSCRIPTPROG}) -- \
%{FILETRIGGERCONDS}\n%{FILETRIGGERSCRIPTS}\n]\
[transfiletrigger%{TRANSFILETRIGGERTYPE} scriptlet (using %{TRANSFILETRIGGERSCRIPTPROG}) -- \
%{TRANSFILETRIGGERCONDS}\n%{TRANSFILETRIGGERSCRIPTS}\n]'
rpm alias --filetriggers --filetriggerscripts \
--POPTdesc=$"list filetrigger scriptlets from package(s)"
rpm alias --last --qf '%|INSTALLTIME?{%{INSTALLTIME}}:{000000000}| %-45{NVRA} %|INSTALLTIME?{%{INSTALLTIME:date}}:{(not installed)}|\n' \
--pipe "LC_NUMERIC=C sort -r -n | sed 's,^[0-9]\+ ,,' " \
--POPTdesc=$"list package(s) by install time, most recent first"
rpm alias --dupes --qf '%|SOURCERPM?{%{name}.%{arch}}:{%|ARCH?{%{name}}:{%{name}-%{version}}|}|\n' --pipe "sort | uniq -d" \
--POPTdesc=$"list duplicated packages"
rpm alias --filesbypkg --qf '[%-25{=NAME} %{FILENAMES}\n]' \
--POPTdesc=$"list all files from each package"
rpm alias --fileclass --qf '[%{FILENAMES}\t%{FILECLASS}\n]' \
--POPTdesc=$"list file names with their classes"
rpm alias --filecolor --qf '[%{FILENAMES}\t%{FILECOLORS}\n]' \
--POPTdesc=$"list file names with their colors"
rpm alias --fileprovide --qf '[%{FILENAMES}\t%{FILEPROVIDE}\n]' \
--POPTdesc=$"list file names with their provides"
rpm alias --filerequire --qf '[%{FILENAMES}\t%{FILEREQUIRE}\n]' \
--POPTdesc=$"list file names with requires"
rpm alias --filecaps --qf '[%{FILENAMES}\t%|FILECAPS?{%{FILECAPS}}|\n]' \
--POPTdesc=$"list file names with their POSIX1.e capabilities"
# colon separated i18n domains to use as PO catalogue lookaside for
# retrieving header group/description/summary.
rpm alias --i18ndomains --define '_i18ndomains !#:+'
rpm alias --color --define '_color_output !#:+'
#==============================================================================
# [--httpport <port>] "port number of http proxy"
rpm alias --httpport --define '_httpport !#:+'
# [--httpproxy <host>] "hostname or IP of http proxy"
rpm alias --httpproxy --define '_httpproxy !#:+'
# [--trace] "trace macro expansion"
rpm alias --trace --eval '%trace'
# Minimally preserve commonly used switches from cli split-up
rpm exec --addsign rpmsign --addsign
rpm exec --delsign rpmsign --delsign
rpm exec --resign rpmsign --resign
#rpm exec --signfiles rpmsign --signfiles
rpm exec --checksig rpmkeys --checksig
rpm exec -K rpmkeys --checksig
rpm exec --import rpmkeys --import
rpm exec --initdb rpmdb --initdb
rpm exec --rebuilddb rpmdb --rebuilddb
rpm exec --verifydb rpmdb --verifydb
rpm exec --specfile rpmspec -q
#==============================================================================
rpmbuild alias --httpport --define '_httpport !#:+'
rpmbuild alias --httpproxy --define '_httpproxy !#:+'
rpmbuild alias --with --define "_with_!#:+ --with-!#:+" \
--POPTdesc=$"enable configure <option> for build" \
--POPTargs=$"<option>"
rpmbuild alias --without --define "_without_!#:+ --without-!#:+" \
--POPTdesc=$"disable configure <option> for build" \
--POPTargs=$"<option>"
rpmbuild alias --scm --define '__scm !#:+' \
--POPTdesc=$"shortcut for '--define=\"__scm <scm>\"'" \
--POPTargs=$"<scm>"
# Build policies enabled from command line. Last policy applies.
rpmbuild alias --buildpolicy --define '__os_install_post %{_rpmconfigdir}/brp-!#:+' \
--POPTdesc=$"set buildroot <policy> (e.g. compress man pages)" \
--POPTargs=$"<policy>"
# Print error on rpmbuild --sign
rpmbuild alias --sign --eval "%{error:rpmbuild --sign is no longer supported. Use the rpmsign command instead!}"
--POPTdesc=$"Obsolete, use command rpmsign instead!"
rpmbuild alias --trace --eval '%trace' \
--POPTdesc=$"trace macro expansion"
rpmbuild alias --nodebuginfo --define 'debug_package %{nil}' \
--POPTdesc=$"do not generate debuginfo for this package"
rpmsign alias --key-id --define '_gpg_name !#:+' \
--POPTdesc=$"key id/name to sign with" \
--POPTargs=$"<id>"
rpmsign alias --digest-algo --define '_gpg_digest_algo !#:+' \
--POPTdesc=$"override default digest algorithm (eg sha1/sha256)" \
--POPTargs=$"<algorithm>"
rpmspec alias --conflicts --qf \
"[%|VERBOSE?{%{CONFLICTFLAGS:deptype}: }:{}|%{CONFLICTNEVRS}\n]" \
--POPTdesc=$"list capabilities this package conflicts with"
rpmspec alias --obsoletes --qf \
"[%|VERBOSE?{%{OBSOLETEFLAGS:deptype}: }:{}|%{OBSOLETENEVRS}\n]" \
--POPTdesc=$"list other packages removed by installing this package"
rpmspec alias --provides --qf \
"[%|VERBOSE?{%{PROVIDEFLAGS:deptype}: }:{}|%{PROVIDENEVRS}\n]" \
--POPTdesc=$"list capabilities that this package provides"
rpmspec alias --requires --qf \
"[%|VERBOSE?{%{REQUIREFLAGS:deptype}: }:{}|%{REQUIRENEVRS}\n]" \
--POPTdesc=$"list capabilities required by package(s)"
rpmspec alias --recommends --qf \
"[%|VERBOSE?{%{RECOMMENDFLAGS:deptype}: }:{}|%{RECOMMENDNEVRS}\n]" \
--POPTdesc=$"list capabilities recommended by package(s)"
rpmspec alias --suggests --qf \
"[%|VERBOSE?{%{SUGGESTFLAGS:deptype}: }:{}|%{SUGGESTNEVRS}\n]" \
--POPTdesc=$"list capabilities suggested by package(s)"
rpmspec alias --supplements --qf \
"[%|VERBOSE?{%{SUPPLEMENTFLAGS:deptype}: }:{}|%{SUPPLEMENTNEVRS}\n]" \
--POPTdesc=$"list capabilities supplemented by package(s)"
rpmspec alias --enhances --qf \
"[%|VERBOSE?{%{ENHANCEFLAGS:deptype}: }:{}|%{ENHANCENEVRS}\n]" \
--POPTdesc=$"list capabilities enhanced by package(s)"
rpmspec alias --buildconflicts --srpm --conflicts \
--POPTdesc=$"list capabilities conflicting with build of this package"
rpmspec alias --buildrequires --srpm --requires \
--POPTdesc=$"list capabilities required to build this package"
rpmspec alias --httpport --define '_httpport !#:+'
rpmspec alias --httpproxy --define '_httpproxy !#:+'
rpmspec alias --with --define "_with_!#:+ --with-!#:+" \
--POPTdesc=$"enable configure <option> for build" \
--POPTargs=$"<option>"
rpmspec alias --without --define "_without_!#:+ --without-!#:+" \
--POPTdesc=$"disable configure <option> for build" \
--POPTargs=$"<option>"
rpmspec alias --scm --define '__scm !#:+' \
--POPTdesc=$"shortcut for '--define=\"__scm <scm>\"'" \
--POPTargs=$"<scm>"
# Build policies enabled from command line. Last policy applies.
rpmspec alias --buildpolicy --define '__os_install_post %{_rpmconfigdir}/brp-!#:+' \
--POPTdesc=$"set buildroot <policy> (e.g. compress man pages)" \
--POPTargs=$"<policy>"
rpmspec alias --trace --eval '%trace' \
--POPTdesc=$"trace macro expansion"
rpmspec alias --nodebuginfo --define 'debug_package %{nil}' \
--POPTdesc=$"do not generate debuginfo for this package"
# \endverbatim
#*/
PK L�]ug��[# [# find-lang.shnu ȯ�� #!/bin/bash
# findlang - automagically generate list of language specific files
# for inclusion in an rpm spec file.
# This does assume that the *.mo files are under .../locale/...
# Run with no arguments gets a usage message.
# findlang is copyright (c) 1998 by W. L. Estes <wlestes@uncg.edu>
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, sublicense, and/or sell copies of the Software, and to
# permit persons to whom the Software is furnished to do so, subject to
# the following conditions:
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
usage () {
cat <<EOF
Usage: $0 TOP_DIR PACKAGE_NAME [prefix]
where TOP_DIR is
the top of the tree containing the files to be processed--should be
\$RPM_BUILD_ROOT usually. TOP_DIR gets sed'd out of the output list.
PACKAGE_NAME is the %{name} of the package. This should also be
the basename of the .mo files. the output is written to
PACKAGE_NAME.lang unless \$3 is given in which case output is written
to \$3.
Additional options:
--with-gnome find GNOME help files
--with-mate find MATE help files
--with-kde find KDE help files
--with-qt find Qt translation files
--with-html find HTML files
--with-man find localized man pages
--all-name match all package/domain names
--without-mo do not find locale files
EOF
exit 1
}
if [ -z "$1" ] ; then usage
elif [ $1 = / ] ; then echo $0: expects non-/ argument for '$1' 1>&2
elif [ ! -d $1 ] ; then
echo $0: $1: no such directory
exit 1
else TOP_DIR="`echo $1|sed -e 's:/$::'`"
fi
shift
if [ -z "$1" ] ; then usage
else NAMES[0]=$1
fi
shift
GNOME=#
MATE=#
KDE=#
QT=#
MAN=#
HTML=#
MO=
MO_NAME=${NAMES[0]}.lang
ALL_NAME=#
NO_ALL_NAME=
while test $# -gt 0 ; do
case "${1}" in
--with-gnome )
GNOME=
shift
;;
--with-mate )
MATE=
shift
;;
--with-kde )
KDE=
shift
;;
--with-qt )
QT=
shift
;;
--with-man )
MAN=
shift
;;
--with-html )
HTML=
shift
;;
--without-mo )
MO=#
shift
;;
--all-name )
ALL_NAME=
NO_ALL_NAME=#
shift
;;
* )
if [ $MO_NAME != ${NAMES[$#]}.lang ]; then
NAMES[${#NAMES[@]}]=$MO_NAME
fi
MO_NAME=${1}
shift
;;
esac
done
if [ -f $MO_NAME ]; then
rm $MO_NAME
fi
for NAME in ${NAMES[@]}; do
find "$TOP_DIR" -type f -o -type l|sed '
s:'"$TOP_DIR"'::
'"$ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3:
'"$NO_ALL_NAME$MO"'s:\(.*/locale/\)\([^/_]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) \1\2\3:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\([^/]*\)\(/'"$NAME"'\)$:%lang(\2) %doc \1\2\3\4/:
'"$ALL_NAME$GNOME"'s:\(.*/share/help/\)\([^/_]\+\)\([^/]*\)\(/[a-zA-Z0-9.\_\-]\+\)$:%lang(\2) %doc \1\2\3\4/:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%dir \1:
'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'/[a-zA-Z0-9.\_\-]/.\+\)::
'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'\/\)\([^/_]\+\):%lang(\2) \1\2:
'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+$\):%dir \1:
'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]/.\+\)::
'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+\/\)\([^/_]\+\):%lang(\2) \1\2:
s:%lang(.*) .*/gnome/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+/.*::
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$GNOME"'s:\(.*/omf/'"$NAME"'$\):%dir \1:
'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+$\):%dir \1:
s:^\([^%].*\)::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type f|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$GNOME"'s:\(.*/omf/'"$NAME"'/'"$NAME"'-\([^/.]\+\)\.omf\):%lang(\2) \1:
'"$ALL_NAME$GNOME"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2) \1:
s:^[^%].*::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find $TOP_DIR -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$MATE"'s:\(.*/mate/help/'"$NAME"'$\):%dir \1:
'"$NO_ALL_NAME$MATE"'s:\(.*/mate/help/'"$NAME"'/[a-zA-Z0-9.\_\-]/.\+\)::
'"$NO_ALL_NAME$MATE"'s:\(.*/mate/help/'"$NAME"'\/\)\([^/_]\+\):%lang(\2) \1\2:
'"$ALL_NAME$MATE"'s:\(.*/mate/help/[a-zA-Z0-9.\_\-]\+$\):%dir \1:
'"$ALL_NAME$MATE"'s:\(.*/mate/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]/.\+\)::
'"$ALL_NAME$MATE"'s:\(.*/mate/help/[a-zA-Z0-9.\_\-]\+\/\)\([^/_]\+\):%lang(\2) \1\2:
s:%lang(.*) .*/mate/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+/.*::
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$MATE"'s:\(.*/omf/'"$NAME"'$\):%dir \1:
'"$ALL_NAME$MATE"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+$\):%dir \1:
s:^\([^%].*\)::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type f|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$MATE"'s:\(.*/omf/'"$NAME"'/'"$NAME"'-\([^/.]\+\)\.omf\):%lang(\2) \1:
'"$ALL_NAME$MATE"'s:\(.*/omf/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+-\([^/.]\+\)\.omf\):%lang(\2) \1:
s:^[^%].*::
s:%lang(C) ::
/^$/d' >> $MO_NAME
KDE3_HTML=`kde-config --expandvars --install html 2>/dev/null`
if [ x"$KDE3_HTML" != x ] && [ -d "$TOP_DIR$KDE3_HTML" ]; then
find "$TOP_DIR$KDE3_HTML" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\)::
'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3:
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
fi
KDE4_HTML=`kde4-config --expandvars --install html 2>/dev/null`
if [ x"$KDE4_HTML" != x ] && [ -d "$TOP_DIR$KDE4_HTML" ]; then
find "$TOP_DIR$KDE4_HTML" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\)::
'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3:
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
fi
KF5_HTML=`kf5-config --expandvars --install html 2>/dev/null`
if [ x"$KF5_HTML" != x ] && [ -d "$TOP_DIR$KF5_HTML" ]; then
find "$TOP_DIR$KF5_HTML" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\)::
'"$NO_ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3:
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
'"$ALL_NAME$KDE"'s:\(.*/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
fi
find "$TOP_DIR" -type d|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$HTML"'s:\(.*/doc/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\)::
'"$NO_ALL_NAME$HTML"'s:\(.*/doc/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3:
'"$ALL_NAME$HTML"'s:\(.*/doc/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
'"$ALL_NAME$HTML"'s:\(.*/doc/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type f -o -type l|sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$QT"'s:\(.*/'"$NAME"'_\([a-zA-Z]\+\([_@].*\)\?\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/\([a-zA-Z]\+[_@].*\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/\([a-zA-Z]\+\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/_]\+_\([a-zA-Z]\+[_@].*\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/_]\+_\([a-zA-Z]\+\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\+[_@].*\)\.qm$\):%lang(\2) \1:
'"$ALL_NAME$QT"'s:^\([^%].*/[^/]\+_\([a-zA-Z]\+\)\.qm$\):%lang(\2) \1:
s:^[^%].*::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type d|sed '
s:'"$TOP_DIR"'::
'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/\)::
'"$ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+$\):%lang(\2) \1*:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
find "$TOP_DIR" -type f -o -type l|sed -r 's/\.(bz2|gz|xz|lzma|Z)$//g' | sed '
s:'"$TOP_DIR"'::
'"$NO_ALL_NAME$MAN"'s:\(.*/man/\([^/_]\+\).*/man[a-z0-9]\+/'"$NAME"'\.[a-z0-9].*\):%lang(\2) \1*:
s:^\([^%].*\)::
s:%lang(C) ::
/^$/d' >> $MO_NAME
done # for NAME in ${NAMES[@]}
if ! grep -q / $MO_NAME; then
echo "No translations found for ${NAME} in ${TOP_DIR}"
exit 1
fi
exit 0
PK L�]>�b(L (L rpmdepsnu ȯ�� ELF >