Compare commits

..

2 Commits

Author SHA1 Message Date
Allan McRae
7175062526 Store and read name of alternatives
Add the names of supplied alternatives to the .PKGINFO file.  Read and store
these values in libalpm.  This information is currently not used anywhere.

Signed-off-by: Allan McRae <allan@archlinux.org>
2021-12-12 11:54:51 +10:00
Allan McRae
7ceee8805b makepkg: add basic support for alternatives
Alternatives are specified in makepkg via (e.g.):

alternative=('sh')

There should be a file (e.g.) sh.alternative alongside the PKGBUILD containing
a list of symlinks to be created with the alternative is active.  This file is
stored in the root of the package as (e.g.) .ALTERNATIVE.sh.

Signed-off-by: Allan McRae <allan@archlinux.org>
2021-12-12 11:54:49 +10:00
220 changed files with 622 additions and 1552 deletions

View File

@@ -20,14 +20,14 @@ default:
arch: arch:
extends: .arch-test extends: .arch-test
script: script:
- meson setup build - meson build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
arch-debug: arch-debug:
extends: .arch-test extends: .arch-test
script: script:
- meson setup --buildtype=debug --werror build - meson --buildtype=debug --werror build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
@@ -35,14 +35,14 @@ arch-docs:
extends: .arch-test extends: .arch-test
script: script:
- pacman -Syu --needed --noconfirm asciidoc - pacman -Syu --needed --noconfirm asciidoc
- meson setup -Ddoc=enabled build - meson -Ddoc=enabled build
- ninja -C build - ninja -C build
arch-clang: arch-clang:
extends: .arch-test extends: .arch-test
script: script:
- pacman -Syu --needed --noconfirm clang - pacman -Syu --needed --noconfirm clang
- CC=clang meson setup build - CC=clang meson build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
@@ -50,36 +50,35 @@ arch-valgrind:
extends: .arch-test extends: .arch-test
script: script:
- pacman -Syu --needed --noconfirm valgrind - pacman -Syu --needed --noconfirm valgrind
- pacman -U --noconfirm https://geo.mirror.pkgbuild.com/core-debug/os/x86_64/glibc-debug-$(pacman -S --print-format %v glibc)-x86_64.pkg.tar.zst - meson build
- meson setup build
- ninja -C build - ninja -C build
- PACTEST_VALGRIND=1 fakechroot meson test -C build - PACTEST_VALGRIND=1 fakechroot meson test -C build
arch-nettle: arch-nettle:
extends: .arch-test extends: .arch-test
script: script:
- meson setup -Dcrypto=nettle --buildtype=debug build - meson -Dcrypto=nettle --buildtype=debug build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
arch-no-gpg: arch-no-gpg:
extends: .arch-test extends: .arch-test
script: script:
- meson setup -Dgpgme=disabled --buildtype=debug build - meson -Dgpgme=disabled --buildtype=debug build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
arch-no-curl: arch-no-curl:
extends: .arch-test extends: .arch-test
script: script:
- meson setup -Dcurl=disabled --buildtype=debug build - meson -Dcurl=disabled --buildtype=debug build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
arch-no-nls: arch-no-nls:
extends: .arch-test extends: .arch-test
script: script:
- meson setup -Di18n=false --buildtype=debug build - meson -Di18n=false --buildtype=debug build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
@@ -94,7 +93,7 @@ debian:
gettext python3 python3-setuptools dash gawk ca-certificates gettext python3 python3-setuptools dash gawk ca-certificates
fakeroot fakechroot fakeroot fakechroot
script: script:
- meson setup --buildtype=debug build - meson --buildtype=debug build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build
@@ -110,6 +109,6 @@ fedora:
fakeroot fakechroot fakeroot fakechroot
perl-Module-Load-Conditional perl-Module-Load-Conditional
script: script:
- meson setup --buildtype=debug build - meson --buildtype=debug build
- ninja -C build - ninja -C build
- fakechroot meson test -C build - fakechroot meson test -C build

View File

@@ -1,17 +1,17 @@
[main] [main]
host = https://www.transifex.com host = https://www.transifex.com
[o:toofishes:p:archlinux-pacman:r:libalpm-pot] [archlinux-pacman.libalpm-pot]
file_filter = lib/libalpm/po/<lang>.po file_filter = lib/libalpm/po/<lang>.po
source_file = lib/libalpm/po/libalpm.pot source_file = lib/libalpm/po/libalpm.pot
source_lang = en source_lang = en
[o:toofishes:p:archlinux-pacman:r:pacman-pot] [archlinux-pacman.pacman-pot]
file_filter = src/pacman/po/<lang>.po file_filter = src/pacman/po/<lang>.po
source_file = src/pacman/po/pacman.pot source_file = src/pacman/po/pacman.pot
source_lang = en source_lang = en
[o:toofishes:p:archlinux-pacman:r:pacman-scripts-pot] [archlinux-pacman.pacman-scripts-pot]
file_filter = scripts/po/<lang>.po file_filter = scripts/po/<lang>.po
source_file = scripts/po/pacman-scripts.pot source_file = scripts/po/pacman-scripts.pot
source_lang = en source_lang = en

View File

@@ -14,7 +14,7 @@ The following checklist should be used for making a pacman release.
- Update pacman website - Update pacman website
Transifex updates are handled using the transifex client. The basic process is: Transifex updates are handled using the transifex client. The basic process is:
- Pull updates from transifex ("tx pull -f --minimum-perc 75") - Pull updates from transifex ("tx pull -a -f --minimum-perc 75")
- Update po files ("./build-aux/update-po") - Update po files ("./build-aux/update-po")
- Fix all translation errors found - Fix all translation errors found
- Add any new locales to the relevant LINGUAS file - Add any new locales to the relevant LINGUAS file

View File

@@ -11,7 +11,6 @@ sed \
-e "s|@localstatedir[@]|@localstatedir@|g" \ -e "s|@localstatedir[@]|@localstatedir@|g" \
-e "s|@libmakepkgdir[@]|@LIBMAKEPKGDIR@|g" \ -e "s|@libmakepkgdir[@]|@LIBMAKEPKGDIR@|g" \
-e "s|@pkgdatadir[@]|@PKGDATADIR@|g" \ -e "s|@pkgdatadir[@]|@PKGDATADIR@|g" \
-e "s|@keyringdir[@]|@KEYRINGDIR@|g" \
-e "s|@prefix[@]|@PREFIX@|g" \ -e "s|@prefix[@]|@PREFIX@|g" \
-e "1s|#!/bin/bash|#!@BASH@|g" \ -e "1s|#!/bin/bash|#!@BASH@|g" \
-e "s|@PACKAGE_VERSION[@]|@PACKAGE_VERSION@|g" \ -e "s|@PACKAGE_VERSION[@]|@PACKAGE_VERSION@|g" \
@@ -21,7 +20,6 @@ sed \
-e "s|@DEBUGSUFFIX[@]|@DEBUGSUFFIX@|g" \ -e "s|@DEBUGSUFFIX[@]|@DEBUGSUFFIX@|g" \
-e "s|@INODECMD[@]|@INODECMD@|g" \ -e "s|@INODECMD[@]|@INODECMD@|g" \
-e "s|@FILECMD[@]|@FILECMD@|g" \ -e "s|@FILECMD[@]|@FILECMD@|g" \
-e "s|@BSDTAR_NO_READ_SPARSE[@]|@BSDTAR_NO_READ_SPARSE@|g" \
"$input" >"$output" "$input" >"$output"
if [[ $mode ]]; then if [[ $mode ]]; then

View File

@@ -18,7 +18,7 @@ value.
Description Description
----------- -----------
This is a description of the contents of version '2' of the This is a description of the contents of version '1' of the
BUILDINFO file format. BUILDINFO file format.
*format*:: *format*::
@@ -53,15 +53,6 @@ BUILDINFO file format.
*startdir*:: *startdir*::
The directory from which makepkg was executed. The directory from which makepkg was executed.
*buildtool*::
The name of the tool ecosystem used to set up the build environment. Used
for defining a spec for reproducible builds, e.g. the source of the
linkman:makepkg.conf[5] used.
*buildtoolver*::
The full version of the 'buildtool', for example:
"$pkgver-$pkgrel-$pkgarch".
*buildenv (array)*:: *buildenv (array)*::
The build environment specified in makepkg.conf. The build environment specified in makepkg.conf.

View File

@@ -1,4 +1,4 @@
# Doxyfile 1.9.3 # Doxyfile 1.8.20
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
@@ -12,6 +12,7 @@ OUTPUT_DIRECTORY = @OUTPUT_DIRECTORY@
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
ALLOW_UNICODE_NAMES = NO ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
OUTPUT_TEXT_DIRECTION = None
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \ ABBREVIATE_BRIEF = "The $name class" \
@@ -72,7 +73,6 @@ EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO EXTRACT_ANON_NSPACES = NO
RESOLVE_UNNAMED_PARAMS = YES
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO HIDE_FRIEND_COMPOUNDS = NO
@@ -81,7 +81,6 @@ INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO HIDE_SCOPE_NAMES = NO
HIDE_COMPOUND_REFERENCE= NO HIDE_COMPOUND_REFERENCE= NO
SHOW_HEADERFILE = YES
SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES
SHOW_GROUPED_MEMB_INC = NO SHOW_GROUPED_MEMB_INC = NO
FORCE_LOCAL_INCLUDES = NO FORCE_LOCAL_INCLUDES = NO
@@ -111,7 +110,6 @@ QUIET = NO
WARNINGS = YES WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES WARN_IF_DOC_ERROR = YES
WARN_IF_INCOMPLETE_DOC = YES
WARN_NO_PARAMDOC = NO WARN_NO_PARAMDOC = NO
WARN_AS_ERROR = NO WARN_AS_ERROR = NO
WARN_FORMAT = "$file:$line: $text" WARN_FORMAT = "$file:$line: $text"
@@ -154,6 +152,7 @@ VERBATIM_HEADERS = YES
# Configuration options related to the alphabetical class index # Configuration options related to the alphabetical class index
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX = IGNORE_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the HTML output # Configuration options related to the HTML output
@@ -175,7 +174,6 @@ HTML_DYNAMIC_SECTIONS = NO
HTML_INDEX_NUM_ENTRIES = 100 HTML_INDEX_NUM_ENTRIES = 100
GENERATE_DOCSET = NO GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs" DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_FEEDURL =
DOCSET_BUNDLE_ID = org.doxygen.Project DOCSET_BUNDLE_ID = org.doxygen.Project
DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_ID = org.doxygen.Publisher
DOCSET_PUBLISHER_NAME = Publisher DOCSET_PUBLISHER_NAME = Publisher
@@ -198,16 +196,14 @@ GENERATE_ECLIPSEHELP = NO
ECLIPSE_DOC_ID = org.doxygen.Project ECLIPSE_DOC_ID = org.doxygen.Project
DISABLE_INDEX = NO DISABLE_INDEX = NO
GENERATE_TREEVIEW = NO GENERATE_TREEVIEW = NO
FULL_SIDEBAR = NO
ENUM_VALUES_PER_LINE = 4 ENUM_VALUES_PER_LINE = 4
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO EXT_LINKS_IN_WINDOW = NO
OBFUSCATE_EMAILS = YES
HTML_FORMULA_FORMAT = png HTML_FORMULA_FORMAT = png
FORMULA_FONTSIZE = 10 FORMULA_FONTSIZE = 10
FORMULA_TRANSPARENT = YES
FORMULA_MACROFILE = FORMULA_MACROFILE =
USE_MATHJAX = NO USE_MATHJAX = NO
MATHJAX_VERSION = MathJax_2
MATHJAX_FORMAT = HTML-CSS MATHJAX_FORMAT = HTML-CSS
MATHJAX_RELPATH = http://www.mathjax.org/mathjax MATHJAX_RELPATH = http://www.mathjax.org/mathjax
MATHJAX_EXTENSIONS = MATHJAX_EXTENSIONS =
@@ -238,6 +234,7 @@ PDF_HYPERLINKS = NO
USE_PDFLATEX = NO USE_PDFLATEX = NO
LATEX_BATCHMODE = NO LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO LATEX_HIDE_INDICES = NO
LATEX_SOURCE_CODE = NO
LATEX_BIB_STYLE = plain LATEX_BIB_STYLE = plain
LATEX_TIMESTAMP = NO LATEX_TIMESTAMP = NO
LATEX_EMOJI_DIRECTORY = LATEX_EMOJI_DIRECTORY =
@@ -250,6 +247,7 @@ COMPACT_RTF = NO
RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE = RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE = RTF_EXTENSIONS_FILE =
RTF_SOURCE_CODE = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the man page output # Configuration options related to the man page output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
@@ -270,9 +268,7 @@ XML_NS_MEMB_FILE_SCOPE = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_DOCBOOK = NO GENERATE_DOCBOOK = NO
DOCBOOK_OUTPUT = docbook DOCBOOK_OUTPUT = docbook
#--------------------------------------------------------------------------- DOCBOOK_PROGRAMLISTING = NO
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO GENERATE_AUTOGEN_DEF = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the Perl module output # Configuration options related to the Perl module output
@@ -308,18 +304,19 @@ EXTERNAL_PAGES = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
DIA_PATH = DIA_PATH =
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES HAVE_DOT = YES
DOT_NUM_THREADS = 0 DOT_NUM_THREADS = 0
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
DOT_FONTPATH = DOT_FONTPATH =
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES GROUP_GRAPHS = YES
UML_LOOK = NO UML_LOOK = NO
UML_LIMIT_NUM_FIELDS = 10 UML_LIMIT_NUM_FIELDS = 10
DOT_UML_DETAILS = NO
DOT_WRAP_THRESHOLD = 17
TEMPLATE_RELATIONS = NO TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES INCLUDED_BY_GRAPH = YES
@@ -327,7 +324,6 @@ CALL_GRAPH = NO
CALLER_GRAPH = NO CALLER_GRAPH = NO
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES DIRECTORY_GRAPH = YES
DIR_GRAPH_MAX_DEPTH = 1
DOT_IMAGE_FORMAT = png DOT_IMAGE_FORMAT = png
INTERACTIVE_SVG = NO INTERACTIVE_SVG = NO
DOT_PATH = DOT_PATH =
@@ -339,6 +335,7 @@ PLANTUML_CFG_FILE =
PLANTUML_INCLUDE_PATH = PLANTUML_INCLUDE_PATH =
DOT_GRAPH_MAX_NODES = 50 DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 3 MAX_DOT_GRAPH_DEPTH = 3
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
DOT_CLEANUP = YES DOT_CLEANUP = YES

View File

@@ -3,7 +3,7 @@ PKGBUILD(5)
Name Name
---- ----
PKGBUILD - Package build description file PKGBUILD - Arch Linux package build description file
Synopsis Synopsis
@@ -84,7 +84,14 @@ systems (see below).
*license (array)*:: *license (array)*::
This field specifies the license(s) that apply to the package. This field specifies the license(s) that apply to the package.
If multiple licenses are applicable, list all of them: Commonly used licenses can be found in '/usr/share/licenses/common'. If you
see the package's license there, simply reference it in the license
field (e.g., `license=('GPL')`). If the package provides a license not
available in '/usr/share/licenses/common', then you should include it
in the package itself and set `license=('custom')` or
`license=('custom:LicenseName')`. The license should be placed in
'$pkgdir/usr/share/licenses/$pkgname/' when building the package. If
multiple licenses are applicable, list all of them:
`license=('GPL' 'FDL')`. `license=('GPL' 'FDL')`.
*install*:: *install*::
@@ -180,6 +187,11 @@ contain whitespace characters.
than or equal to), `<=` (less than or equal to), `=` (equal to), `>` than or equal to), `<=` (less than or equal to), `=` (equal to), `>`
(greater than), or `<` (less than). (greater than), or `<` (less than).
+ +
If the dependency name appears to be a library (ends with .so), makepkg will
try to find a binary that depends on the library in the built package and
append the version needed by the binary. Appending the version yourself
disables automatic detection.
+
Additional architecture-specific depends can be added by appending an Additional architecture-specific depends can be added by appending an
underscore and the architecture name e.g., 'depends_x86_64=()'. underscore and the architecture name e.g., 'depends_x86_64=()'.
@@ -233,6 +245,10 @@ example, dcron can provide 'cron=2.0' to satisfy the 'cron>=2.0' dependency of
other packages. Provisions involving the `>` and `<` operators are invalid as other packages. Provisions involving the `>` and `<` operators are invalid as
only specific versions of a package may be provided. only specific versions of a package may be provided.
+ +
If the provision name appears to be a library (ends with .so), makepkg will
try to find the library in the built package and append the correct
version. Appending the version yourself disables automatic detection.
+
Additional architecture-specific provides can be added by appending an Additional architecture-specific provides can be added by appending an
underscore and the architecture name e.g., 'provides_x86_64=()'. underscore and the architecture name e.g., 'provides_x86_64=()'.
@@ -386,8 +402,8 @@ All options and directives for the split packages default to the global values
given in the PKGBUILD. Nevertheless, the following ones can be overridden within given in the PKGBUILD. Nevertheless, the following ones can be overridden within
each split package's packaging function: each split package's packaging function:
`pkgdesc`, `arch`, `url`, `license`, `groups`, `depends`, `optdepends`, `pkgdesc`, `arch`, `url`, `license`, `groups`, `depends`, `optdepends`,
`provides`, `conflicts`, `replaces`, `backup`, `options`, `install`, and `provides`, `conflicts`, `replaces`, `backup`, `options`, `install`,
`changelog`. `changelog` and `alternative`.
Note that makepkg does not consider split package `depends` when checking Note that makepkg does not consider split package `depends` when checking
if dependencies are installed before package building and with `--syncdeps`. if dependencies are installed before package building and with `--syncdeps`.
@@ -508,7 +524,8 @@ The source URL is divided into four components:
Example Example
------- -------
The following is an example PKGBUILD for the 'patch' package. For more The following is an example PKGBUILD for the 'patch' package. For more
examples, look through the build files of your distribution's packages. examples, look through the build files of your distribution's packages. For
those using Arch Linux, consult the Arch Build System (ABS) tree.
[source,sh] [source,sh]
------------------------------- -------------------------------

View File

@@ -250,7 +250,7 @@ bugs under the Pacman project.
Copyright Copyright
--------- ---------
pacman is Copyright (C) 2006-2022 Pacman Development Team pacman is Copyright (C) 2006-2021 Pacman Development Team
<pacman-dev@lists.archlinux.org> and Copyright (C) 2002-2006 Judd Vinet <pacman-dev@lists.archlinux.org> and Copyright (C) 2002-2006 Judd Vinet
<jvinet@zeroflux.org> and is licensed through the GNU General Public License, <jvinet@zeroflux.org> and is licensed through the GNU General Public License,
version 2 or later. version 2 or later.

View File

@@ -75,7 +75,7 @@ Options
For each source file in the source array of PKGBUILD, download the file For each source file in the source array of PKGBUILD, download the file
if required and generate integrity checks. The integrity checks generated if required and generate integrity checks. The integrity checks generated
are determined by the checks present in the PKGBUILD, falling back to the are determined by the checks present in the PKGBUILD, falling back to the
value of the INTEGRITY_CHECK array in makepkg.conf(5) if these are absent. value of the INTEGRITY_CHECK array in makepkg.conf(5) if these are absent
This output can be redirected into your PKGBUILD for source validation This output can be redirected into your PKGBUILD for source validation
using "`makepkg -g >> PKGBUILD`". using "`makepkg -g >> PKGBUILD`".
@@ -287,10 +287,6 @@ Environment Variables
**BUILDTOOLVER=**"<version>":: **BUILDTOOLVER=**"<version>"::
The version of the '$BUILDTOOL' used. The version of the '$BUILDTOOL' used.
**GITFLAGS**::
The options to pass when checking out git sources, replacing the default
"--mirror".
Configuration Configuration
------------- -------------
See linkman:makepkg.conf[5] for more details on configuring makepkg using the See linkman:makepkg.conf[5] for more details on configuring makepkg using the

View File

@@ -81,11 +81,6 @@ Options
usage resembling ``-Wl,--hash-style=gnu''. Read ld(1) for more details on usage resembling ``-Wl,--hash-style=gnu''. Read ld(1) for more details on
available linker flags. available linker flags.
**LTOFLAGS=**"ltoflags"::
Additional compiler and linker flags appended to `CFLAGS`, `CXXFLAGS`
and `LDFLAGS` when building with link time optimization. If empty,
``-flto'' is used.
**MAKEFLAGS=**"makeflags":: **MAKEFLAGS=**"makeflags"::
This is often used to set the number of jobs used; for example, `-j2`. This is often used to set the number of jobs used; for example, `-j2`.
Other flags that make accepts can also be passed. Other flags that make accepts can also be passed.
@@ -195,14 +190,8 @@ Options
package containing the debug symbols when used with `strip'. package containing the debug symbols when used with `strip'.
*lto*;; *lto*;;
Enable building packages using link time optimization. Adds the Enable building packages using link time optimization. Adds '-flto'
flags specified in LTOFLAGS to CFLAGS, CXXFLAGS and LDFLAGS (or to both CFLAGS and CXXFLAGS.
``-flto'' if LTOFLAGS is empty).
*autodep*;;
Enable the automatic addition of libraries to the depends and
provides arrays. Search library directories are controlled by
the LIB_DIRS variable defined below.
**INTEGRITY_CHECK=(**check1 ...**)**:: **INTEGRITY_CHECK=(**check1 ...**)**::
File integrity checks to use. Multiple checks may be specified; this File integrity checks to use. Multiple checks may be specified; this
@@ -234,12 +223,6 @@ Options
that are located in opt/, you may need to add the directory to this that are located in opt/, you may need to add the directory to this
array. *NOTE:* Do not add the leading slash to the directory name. array. *NOTE:* Do not add the leading slash to the directory name.
**LIB_DIRS=(**lib:usr/lib ...**)**::
If `autodeps` is specified in the `OPTIONS` array, this variable will
instruct makepkg where to look to find librarys to add to the `provides`
array. The format is "prefix:path", where provides will be added for
libraries found in "path" with the specified prefix added.
**PURGE_TARGETS=(**usr/{,share}/info/dir .podlist *.pod...**)**:: **PURGE_TARGETS=(**usr/{,share}/info/dir .podlist *.pod...**)**::
If `purge` is specified in the `OPTIONS` array, this variable will If `purge` is specified in the `OPTIONS` array, this variable will
instruct makepkg which files to remove from the package. This is instruct makepkg which files to remove from the package. This is
@@ -291,10 +274,9 @@ Options
**PKGEXT=**"{pkgext}", **SRCEXT=**"{srcext}":: **PKGEXT=**"{pkgext}", **SRCEXT=**"{srcext}"::
Sets the compression used when making compiled or source packages. Sets the compression used when making compiled or source packages.
Valid suffixes are `.pkg` or `.src` (for PKGEXT and SRCEXT resepectively) Valid suffixes are `.tar.gz`, `.tar.bz2`, `.tar.xz`, `.tar.zst`,
followed by one of `.tar.gz`, `.tar.bz2`, `.tar.xz`, `.tar.zst`, `.tar.lzo`, `.tar.lzo`, `.tar.lrz`, `.tar.lz4`, `.tar.lz` and `.tar.Z`, or
`.tar.lrz`, `.tar.lz4`, `.tar.lz` and `.tar.Z`, or simply `.tar` to simply `.tar` to disable compression entirely.
disable compression entirely.
**PACMAN_AUTH=()**:: **PACMAN_AUTH=()**::
Specify a command prefix for running pacman as root. If unset, makepkg will Specify a command prefix for running pacman as root. If unset, makepkg will

View File

@@ -5,9 +5,7 @@ manpages = [
{ 'name': 'makepkg-template.1' }, { 'name': 'makepkg-template.1' },
{ 'name': 'repo-add.8' }, { 'name': 'repo-add.8' },
{ 'name': 'vercmp.8' }, { 'name': 'vercmp.8' },
{ 'name': 'testpkg.8' },
{ 'name': 'pacman-key.8' }, { 'name': 'pacman-key.8' },
{ 'name': 'pacman-db-upgrade.8' },
{ 'name': 'PKGBUILD.5', 'extra_depends' : [ 'PKGBUILD-example.txt' ] }, { 'name': 'PKGBUILD.5', 'extra_depends' : [ 'PKGBUILD-example.txt' ] },
{ 'name': 'makepkg.conf.5' }, { 'name': 'makepkg.conf.5' },
{ 'name': 'pacman.conf.5' }, { 'name': 'pacman.conf.5' },
@@ -30,7 +28,6 @@ asciidoc_opts = [
'-a', 'srcext=@0@'.format(get_option('src-ext')), '-a', 'srcext=@0@'.format(get_option('src-ext')),
'-a', 'pkgext=@0@'.format(get_option('pkg-ext')), '-a', 'pkgext=@0@'.format(get_option('pkg-ext')),
'-a', 'pkgdatadir=@0@'.format(PKGDATADIR), '-a', 'pkgdatadir=@0@'.format(PKGDATADIR),
'-a', 'keyringdir=@0@'.format(KEYRINGDIR),
'-a', 'localstatedir=@0@'.format(LOCALSTATEDIR), '-a', 'localstatedir=@0@'.format(LOCALSTATEDIR),
'-a', 'sysconfdir=@0@'.format(SYSCONFDIR), '-a', 'sysconfdir=@0@'.format(SYSCONFDIR),
'-a', 'datarootdir=@0@'.format(DATAROOTDIR), '-a', 'datarootdir=@0@'.format(DATAROOTDIR),

View File

@@ -34,7 +34,7 @@ Options
*-R, \--rootdir* <path>:: *-R, \--rootdir* <path>::
Specify an alternate installation root (default is `/`). Specify an alternate installation root (default is `/`).
*-r, \--repo* <repository>:: *-r, \--repo* <remote>::
Query options for a specific repository. Query options for a specific repository.
*-v, \--verbose*:: *-v, \--verbose*::

View File

@@ -1,36 +0,0 @@
pacman-db-upgrade(8)
====================
Name
----
pacman-db-upgrade - upgrade the local pacman database to a newer format
Synopsis
--------
'pacman-db-upgrade' [options]
Description
-----------
'pacman-db-upgrade' is a script that upgrades the local database used
by linkman:pacman[8] to a newer format.
Options
--------------
*-h, \--help*::
Show the built-in help message and exit.
*-V, \--version*::
Show version information and exit.
*-d, \--dbpath* <path>::
Set an alternate database location.
*-r, \--root* <path>::
Set an alternate installation root.
*\--config* <path>::
Set an alternate configuration file.
*\--nocolor*::
Remove color from output.
See Also
--------
linkman:pacman[8]
include::footer.asciidoc[]

View File

@@ -86,7 +86,7 @@ Operations
*\--populate*:: *\--populate*::
Reload the default keys from the (optionally provided) keyrings in Reload the default keys from the (optionally provided) keyrings in
+{keyringdir}+. For more information, see +{pkgdatadir}/keyrings+. For more information, see
<<PK,Providing a Keyring for Import>> below. <<PK,Providing a Keyring for Import>> below.
*-u, \--updatedb*:: *-u, \--updatedb*::
@@ -129,7 +129,7 @@ A distribution or other repository provided may want to provide a set of
PGP keys used in the signing of its packages and repository databases that can PGP keys used in the signing of its packages and repository databases that can
be readily imported into the pacman keyring. This is achieved by providing a be readily imported into the pacman keyring. This is achieved by providing a
PGP keyring file `foo.gpg` that contains the keys for the foo keyring in the PGP keyring file `foo.gpg` that contains the keys for the foo keyring in the
directory +{keyringdir}+. directory +{pkgdatadir}/keyrings+.
Optionally, the file `foo-trusted` can be provided containing a list of trusted Optionally, the file `foo-trusted` can be provided containing a list of trusted
key IDs for that keyring. This is a file in a format compatible with 'gpg key IDs for that keyring. This is a file in a format compatible with 'gpg

View File

@@ -212,7 +212,7 @@ Transaction Options (apply to '-S', '-R' and '-U')
*\--assume-installed* <package=version>:: *\--assume-installed* <package=version>::
Add a virtual package "package" with version "version" to the transaction Add a virtual package "package" with version "version" to the transaction
to satisfy dependencies. This allows disabling the specific dependency checks to satisfy dependencies. This allows to disable specific dependency checks
without affecting all dependency checks. To disable all dependency without affecting all dependency checks. To disable all dependency
checking, see the '\--nodeps' option. checking, see the '\--nodeps' option.
@@ -235,13 +235,8 @@ Transaction Options (apply to '-S', '-R' and '-U')
*\--print-format* <format>:: *\--print-format* <format>::
Specify a printf-like format to control the output of the '\--print' Specify a printf-like format to control the output of the '\--print'
operation. The possible attributes are: "%a" for arch, "%b" for operation. The possible attributes are: "%n" for pkgname, "%v" for pkgver,
builddate, "%d" for description, "%e" for pkgbase, "%f" for filename, "%l" for location, "%r" for repository, and "%s" for size. Implies '\--print'.
"%g" for base64 encoded PGP signature, "%h" for sha256sum, "%n" for
pkgname, "%p" for packager, "%v" for pkgver, "%l" for location, "%r"
for repository, "%s" for size, "%C" for checkdepends, "%D" for depends
and "%M" for makedepends.
Implies '\--print'.
Upgrade Options (apply to '-S' and '-U')[[UO]] Upgrade Options (apply to '-S' and '-U')[[UO]]

View File

@@ -121,7 +121,7 @@ Options
architecture 'any' can always be installed, as they are meant to be architecture 'any' can always be installed, as they are meant to be
architecture independent. architecture independent.
*XferCommand =* /path/to/command %u [%o]:: *XferCommand =* /path/to/command %u::
If set, an external program will be used to download all remote files. If set, an external program will be used to download all remote files.
All instances of `%u` will be replaced with the download URL. If present, All instances of `%u` will be replaced with the download URL. If present,
instances of `%o` will be replaced with the local filename, plus a instances of `%o` will be replaced with the local filename, plus a

View File

@@ -1,20 +0,0 @@
testpkg(8)
==========
Name
----
testpkg - test a pacman package for validity
Synopsis
--------
'testpkg' <package file>
Description
-----------
'testpkg' is a script used to make sure that a pacman package is valid.
See Also
--------
linkman:pacman[8]
include::footer.asciidoc[]

View File

@@ -41,7 +41,6 @@ CHOST="@CHOST@"
#CFLAGS="-O2 -pipe" #CFLAGS="-O2 -pipe"
#CXXFLAGS="-O2 -pipe" #CXXFLAGS="-O2 -pipe"
#LDFLAGS="" #LDFLAGS=""
#LTOFLAGS="-flto"
#RUSTFLAGS="-C opt-level=2" #RUSTFLAGS="-C opt-level=2"
#-- Make Flags: change this for DistCC/SMP systems #-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2" #MAKEFLAGS="-j2"
@@ -77,8 +76,7 @@ BUILDENV=(!distcc color !ccache check !sign)
# These are default values for the options=() settings # These are default values for the options=() settings
######################################################################### #########################################################################
# #
# Makepkg defaults: # Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto)
# OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug !lto !autodeps)
# A negated option will do the opposite of the comments below. # A negated option will do the opposite of the comments below.
# #
#-- strip: Strip symbols from binaries/libraries #-- strip: Strip symbols from binaries/libraries
@@ -90,9 +88,8 @@ BUILDENV=(!distcc color !ccache check !sign)
#-- purge: Remove files specified by PURGE_TARGETS #-- purge: Remove files specified by PURGE_TARGETS
#-- debug: Add debugging flags as specified in DEBUG_* variables #-- debug: Add debugging flags as specified in DEBUG_* variables
#-- lto: Add compile flags for building with link time optimization #-- lto: Add compile flags for building with link time optimization
#-- autodeps: Automatically add depends/provides
# #
OPTIONS=(strip docs libtool staticlibs emptydirs zipman purge !debug !lto !autodeps) OPTIONS=(strip docs libtool staticlibs emptydirs zipman purge !debug !lto)
#-- File integrity checks to use. Valid: ck, md5, sha1, sha224, sha256, sha384, sha512, b2 #-- File integrity checks to use. Valid: ck, md5, sha1, sha224, sha256, sha384, sha512, b2
INTEGRITY_CHECK=(ck) INTEGRITY_CHECK=(ck)
@@ -110,8 +107,6 @@ DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod) PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#-- Directory to store source code in for debug packages #-- Directory to store source code in for debug packages
DBGSRCDIR="/usr/src/debug" DBGSRCDIR="/usr/src/debug"
#-- Prefix and directories for library autodeps
LIB_DIRS=('lib:/usr/lib' 'lib32:/usr/lib32')
######################################################################### #########################################################################
# PACKAGE OUTPUT # PACKAGE OUTPUT

View File

@@ -74,4 +74,4 @@ ParallelDownloads = 5
# tips on creating your own repositories. # tips on creating your own repositories.
#[custom] #[custom]
#SigLevel = Optional TrustAll #SigLevel = Optional TrustAll
#Server = file:///home/packages #Server = file:///home/custompkgs

View File

@@ -1,7 +1,7 @@
/* /*
* add.c * add.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* add.h * add.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* alpm.c * alpm.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View File

@@ -1,7 +1,7 @@
/* /*
* alpm.h * alpm.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@@ -107,20 +107,12 @@ typedef struct _alpm_db_t alpm_db_t;
* Packages from databases are automatically freed when the database is unregistered. Packages loaded * Packages from databases are automatically freed when the database is unregistered. Packages loaded
* from a file must be freed manually. * from a file must be freed manually.
* *
* Packages can then be queried for metadata or added to a transaction * Packages can then be queried for metadata or added to a \link alpm_trans_t transaction \endlink
* to be added or removed from the system. * to be added or removed from the system.
* @ingroup libalpm_packages * @ingroup libalpm_packages
*/ */
typedef struct _alpm_pkg_t alpm_pkg_t; typedef struct _alpm_pkg_t alpm_pkg_t;
/** The extended data type used to store non-standard package data fields
* @ingroup libalpm_packages
*/
typedef struct _alpm_pkg_xdata_t {
char *name;
char *value;
} alpm_pkg_xdata_t;
/** The time type used by libalpm. Represents a unix time stamp /** The time type used by libalpm. Represents a unix time stamp
* @ingroup libalpm_misc */ * @ingroup libalpm_misc */
typedef int64_t alpm_time_t; typedef int64_t alpm_time_t;
@@ -164,7 +156,7 @@ typedef struct _alpm_backup_t {
* @param path the path to search for in the package * @param path the path to search for in the package
* @return a pointer to the matching file or NULL if not found * @return a pointer to the matching file or NULL if not found
*/ */
alpm_file_t *alpm_filelist_contains(const alpm_filelist_t *filelist, const char *path); alpm_file_t *alpm_filelist_contains(alpm_filelist_t *filelist, const char *path);
/* End of libalpm_files */ /* End of libalpm_files */
/** @} */ /** @} */
@@ -975,7 +967,7 @@ typedef union _alpm_event_t {
* Called when an event occurs * Called when an event occurs
* @param ctx user-provided context * @param ctx user-provided context
* @param event the event that occurred */ * @param event the event that occurred */
typedef void (*alpm_cb_event)(void *ctx, alpm_event_t *event); typedef void (*alpm_cb_event)(void *ctx, alpm_event_t *);
/** /**
* Type of question. * Type of question.
@@ -1122,7 +1114,7 @@ typedef union _alpm_question_t {
* @param ctx user-provided context * @param ctx user-provided context
* @param question the question being asked. * @param question the question being asked.
*/ */
typedef void (*alpm_cb_question)(void *ctx, alpm_question_t *question); typedef void (*alpm_cb_question)(void *ctx, alpm_question_t *);
/** An enum over different kinds of progress alerts. */ /** An enum over different kinds of progress alerts. */
typedef enum _alpm_progress_t { typedef enum _alpm_progress_t {
@@ -1289,12 +1281,6 @@ int alpm_unregister_all_syncdbs(alpm_handle_t *handle);
*/ */
int alpm_db_unregister(alpm_db_t *db); int alpm_db_unregister(alpm_db_t *db);
/** Get the handle of a package database.
* @param db pointer to the package database
* @return the alpm handle that the package database belongs to
*/
alpm_handle_t *alpm_db_get_handle(alpm_db_t *db);
/** Get the name of a package database. /** Get the name of a package database.
* @param db pointer to the package database * @param db pointer to the package database
* @return the name of the package database, NULL on error * @return the name of the package database, NULL on error
@@ -1844,7 +1830,7 @@ const char *alpm_option_get_gpgdir(alpm_handle_t *handle);
* @param gpgdir the gpgdir to set * @param gpgdir the gpgdir to set
*/ */
int alpm_option_set_gpgdir(alpm_handle_t *handle, const char *gpgdir); int alpm_option_set_gpgdir(alpm_handle_t *handle, const char *gpgdir);
/* End of gpgdir accessors */ /* End of gpdir accessors */
/** @} */ /** @} */
@@ -2400,12 +2386,6 @@ int alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg);
* @{ * @{
*/ */
/** Gets the handle of a package
* @param pkg a pointer to package
* @return the alpm handle that the package belongs to
*/
alpm_handle_t *alpm_pkg_get_handle(alpm_pkg_t *pkg);
/** Gets the name of the file from which the package was loaded. /** Gets the name of the file from which the package was loaded.
* @param pkg a pointer to package * @param pkg a pointer to package
* @return a reference to an internal string * @return a reference to an internal string
@@ -2575,6 +2555,12 @@ alpm_filelist_t *alpm_pkg_get_files(alpm_pkg_t *pkg);
*/ */
alpm_list_t *alpm_pkg_get_backup(alpm_pkg_t *pkg); alpm_list_t *alpm_pkg_get_backup(alpm_pkg_t *pkg);
/** Returns the list of alternatives provided by the package
* @param pkg a pointer to package
* @return a reference to a list of char* objects
*/
alpm_list_t *alpm_pkg_get_alternatives(alpm_pkg_t *pkg);
/** Returns the database containing pkg. /** Returns the database containing pkg.
* Returns a pointer to the alpm_db_t structure the package is * Returns a pointer to the alpm_db_t structure the package is
* originating from, or NULL if the package was loaded from a file. * originating from, or NULL if the package was loaded from a file.
@@ -2606,12 +2592,6 @@ int alpm_pkg_get_sig(alpm_pkg_t *pkg, unsigned char **sig, size_t *sig_len);
*/ */
int alpm_pkg_get_validation(alpm_pkg_t *pkg); int alpm_pkg_get_validation(alpm_pkg_t *pkg);
/** Gets the extended data field of a package.
* @param pkg a pointer to package
* @return a reference to a list of alpm_pkg_xdata_t objects
*/
alpm_list_t *alpm_pkg_get_xdata(alpm_pkg_t *pkg);
/** Returns whether the package has an install scriptlet. /** Returns whether the package has an install scriptlet.
* @return 0 if FALSE, TRUE otherwise * @return 0 if FALSE, TRUE otherwise
*/ */
@@ -2913,9 +2893,6 @@ int alpm_capabilities(void);
/* End of libalpm_api */ /* End of libalpm_api */
/** @} */ /** @} */
size_t alpm_info_print_pkg(const char *format, alpm_pkg_t *pkg);
size_t alpm_info_print_pkgs(const char *format, alpm_list_t *pkgs);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -1,7 +1,7 @@
/* /*
* alpm_list.c * alpm_list.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* alpm_list.h * alpm_list.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* backup.c * backup.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View File

@@ -1,7 +1,7 @@
/* /*
* backup.h * backup.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* be_local.c : backend for the local database * be_local.c : backend for the local database
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@@ -195,10 +195,10 @@ static alpm_list_t *_cache_get_backup(alpm_pkg_t *pkg)
return pkg->backup; return pkg->backup;
} }
static alpm_list_t *_cache_get_xdata(alpm_pkg_t *pkg) static alpm_list_t *_cache_get_alternatives(alpm_pkg_t *pkg)
{ {
LAZY_LOAD(INFRQ_DESC); LAZY_LOAD(INFRQ_DESC);
return pkg->xdata; return pkg->alternatives;
} }
/** /**
@@ -355,7 +355,7 @@ static const struct pkg_operations local_pkg_ops = {
.get_replaces = _cache_get_replaces, .get_replaces = _cache_get_replaces,
.get_files = _cache_get_files, .get_files = _cache_get_files,
.get_backup = _cache_get_backup, .get_backup = _cache_get_backup,
.get_xdata = _cache_get_xdata, .get_alternatives = _cache_get_alternatives,
.changelog_open = _cache_changelog_open, .changelog_open = _cache_changelog_open,
.changelog_read = _cache_changelog_read, .changelog_read = _cache_changelog_read,
@@ -811,18 +811,8 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
READ_AND_SPLITDEP(info->conflicts); READ_AND_SPLITDEP(info->conflicts);
} else if(strcmp(line, "%PROVIDES%") == 0) { } else if(strcmp(line, "%PROVIDES%") == 0) {
READ_AND_SPLITDEP(info->provides); READ_AND_SPLITDEP(info->provides);
} else if(strcmp(line, "%XDATA%") == 0) { } else if(strcmp(line, "%ALTERNATIVES%") == 0) {
alpm_list_t *i, *lines = NULL; READ_AND_STORE_ALL(info->alternatives);
READ_AND_STORE_ALL(lines);
for(i = lines; i; i = i->next) {
alpm_pkg_xdata_t *pd = _alpm_pkg_parse_xdata(i->data);
if(pd == NULL || !alpm_list_append(&info->xdata, pd)) {
_alpm_pkg_xdata_free(pd);
FREELIST(lines);
goto error;
}
}
FREELIST(lines);
} }
} }
fclose(fp); fclose(fp);
@@ -1059,11 +1049,11 @@ int _alpm_local_db_write(alpm_db_t *db, alpm_pkg_t *info, int inforeq)
write_deps(fp, "%CONFLICTS%", info->conflicts); write_deps(fp, "%CONFLICTS%", info->conflicts);
write_deps(fp, "%PROVIDES%", info->provides); write_deps(fp, "%PROVIDES%", info->provides);
if(info->xdata) { if(info->alternatives) {
fputs("%XDATA%\n", fp); fputs("%ALTERNATIVES%\n", fp);
for(lp = info->xdata; lp; lp = lp->next) { for(lp = info->alternatives; lp; lp = lp->next) {
alpm_pkg_xdata_t *pd = lp->data; fputs(lp->data, fp);
fprintf(fp, "%s=%s\n", pd->name, pd->value); fputc('\n', fp);
} }
fputc('\n', fp); fputc('\n', fp);
} }

View File

@@ -1,7 +1,7 @@
/* /*
* be_package.c : backend for packages * be_package.c : backend for packages
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@@ -244,12 +244,12 @@ static int parse_descfile(alpm_handle_t *handle, struct archive *a, alpm_pkg_t *
CALLOC(backup, 1, sizeof(alpm_backup_t), return -1); CALLOC(backup, 1, sizeof(alpm_backup_t), return -1);
STRDUP(backup->name, ptr, FREE(backup); return -1); STRDUP(backup->name, ptr, FREE(backup); return -1);
newpkg->backup = alpm_list_add(newpkg->backup, backup); newpkg->backup = alpm_list_add(newpkg->backup, backup);
} else if(strcmp(key, "xdata") == 0) { } else if(strcmp(key, "alternative") == 0) {
alpm_pkg_xdata_t *pd = _alpm_pkg_parse_xdata(ptr); newpkg->alternatives = alpm_list_add(newpkg->alternatives, strdup(ptr));
if(pd == NULL || !alpm_list_append(&newpkg->xdata, pd)) { } else if(strcmp(key, "force") == 0) {
_alpm_pkg_xdata_free(pd); /* deprecated, skip it */
return -1; } else if(strcmp(key, "makepkgopt") == 0) {
} /* not used atm */
} else { } else {
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: unknown key '%s' in description file line %d\n", _alpm_log(handle, ALPM_LOG_DEBUG, "%s: unknown key '%s' in description file line %d\n",
newpkg->name ? newpkg->name : "error", key, linenum); newpkg->name ? newpkg->name : "error", key, linenum);
@@ -653,6 +653,7 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
} }
_alpm_archive_read_free(archive); _alpm_archive_read_free(archive);
close(fd);
/* internal fields for package struct */ /* internal fields for package struct */
newpkg->origin = ALPM_PKG_FROM_FILE; newpkg->origin = ALPM_PKG_FROM_FILE;
@@ -675,7 +676,6 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
newpkg->infolevel |= INFRQ_FILES; newpkg->infolevel |= INFRQ_FILES;
} }
close(fd);
return newpkg; return newpkg;
pkg_invalid: pkg_invalid:
@@ -725,6 +725,7 @@ int SYMEXPORT alpm_pkg_load(alpm_handle_t *handle, const char *filename, int ful
int validation = 0; int validation = 0;
char *sigpath; char *sigpath;
alpm_pkg_t *pkg_temp; alpm_pkg_t *pkg_temp;
char *packager;
CHECK_HANDLE(handle, return -1); CHECK_HANDLE(handle, return -1);
ASSERT(pkg != NULL, RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1)); ASSERT(pkg != NULL, RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1));
@@ -750,7 +751,13 @@ int SYMEXPORT alpm_pkg_load(alpm_handle_t *handle, const char *filename, int ful
char *key = k->data; char *key = k->data;
if(_alpm_key_in_keychain(handle, key) == 0) { if(_alpm_key_in_keychain(handle, key) == 0) {
pkg_temp = _alpm_pkg_load_internal(handle, filename, full); pkg_temp = _alpm_pkg_load_internal(handle, filename, full);
if(_alpm_key_import(handle, NULL, key) == -1) { if(pkg_temp) {
packager = pkg_temp->packager;
} else {
packager = NULL;
}
if(_alpm_key_import(handle, packager, key) == -1) {
fail = 1; fail = 1;
} }
_alpm_pkg_free(pkg_temp); _alpm_pkg_free(pkg_temp);

View File

@@ -1,7 +1,7 @@
/* /*
* be_sync.c : backend for sync databases * be_sync.c : backend for sync databases
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@@ -666,18 +666,6 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
pkg->files.count = files_count; pkg->files.count = files_count;
pkg->files.files = files; pkg->files.files = files;
_alpm_filelist_sort(&pkg->files); _alpm_filelist_sort(&pkg->files);
} else if(strcmp(line, "%DATA%") == 0) {
alpm_list_t *i, *lines = NULL;
READ_AND_STORE_ALL(lines);
for(i = lines; i; i = i->next) {
alpm_pkg_xdata_t *pd = _alpm_pkg_parse_xdata(i->data);
if(pd == NULL || !alpm_list_append(&pkg->xdata, pd)) {
_alpm_pkg_xdata_free(pd);
FREELIST(lines);
goto error;
}
}
FREELIST(lines);
} }
} }
if(ret != ARCHIVE_EOF) { if(ret != ARCHIVE_EOF) {

View File

@@ -1,7 +1,7 @@
/* /*
* conflict.c * conflict.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org> * Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>

View File

@@ -1,7 +1,7 @@
/* /*
* conflict.h * conflict.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* db.c * db.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@@ -212,12 +212,6 @@ int SYMEXPORT alpm_db_remove_server(alpm_db_t *db, const char *url)
return ret; return ret;
} }
alpm_handle_t SYMEXPORT *alpm_db_get_handle(alpm_db_t *db)
{
ASSERT(db != NULL, return NULL);
return db->handle;
}
const char SYMEXPORT *alpm_db_get_name(const alpm_db_t *db) const char SYMEXPORT *alpm_db_get_name(const alpm_db_t *db)
{ {
ASSERT(db != NULL, return NULL); ASSERT(db != NULL, return NULL);

View File

@@ -1,7 +1,7 @@
/* /*
* db.h * db.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>

View File

@@ -1,7 +1,7 @@
/* /*
* deps.c * deps.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>

View File

@@ -1,7 +1,7 @@
/* /*
* deps.h * deps.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>

View File

@@ -1,7 +1,7 @@
/* /*
* diskspace.c * diskspace.c
* *
* Copyright (c) 2010-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2010-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* diskspace.h * diskspace.h
* *
* Copyright (c) 2010-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2010-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* dload.c * dload.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@@ -153,7 +153,8 @@ static char *get_fullpath(const char *path, const char *filename,
} }
enum { enum {
ABORT_OVER_MAXFILESIZE = 1, ABORT_SIGINT = 1,
ABORT_OVER_MAXFILESIZE
}; };
static int dload_interrupted; static int dload_interrupted;
@@ -294,11 +295,8 @@ static size_t dload_parseheader_cb(void *ptr, size_t size, size_t nmemb, void *u
endptr--; endptr--;
} }
/* avoid information leakage with badly formed headers */ STRNDUP(payload->content_disp_name, fptr, endptr - fptr + 1,
if(endptr > fptr) { RET_ERR(payload->handle, ALPM_ERR_MEMORY, realsize));
STRNDUP(payload->content_disp_name, fptr, endptr - fptr + 1,
RET_ERR(payload->handle, ALPM_ERR_MEMORY, realsize));
}
} }
} }
@@ -473,9 +471,10 @@ static int curl_retry_next_server(CURLM *curlm, CURL *curl, struct dload_payload
* Returns -1 if an error happened for a required file * Returns -1 if an error happened for a required file
* Returns -2 if an error happened for an optional file * Returns -2 if an error happened for an optional file
*/ */
static int curl_check_finished_download(alpm_handle_t *handle, CURLM *curlm, CURLMsg *msg, static int curl_check_finished_download(CURLM *curlm, CURLMsg *msg,
const char *localpath, int *active_downloads_num) const char *localpath, int *active_downloads_num)
{ {
alpm_handle_t *handle = NULL;
struct dload_payload *payload = NULL; struct dload_payload *payload = NULL;
CURL *curl = msg->easy_handle; CURL *curl = msg->easy_handle;
CURLcode curlerr; CURLcode curlerr;
@@ -490,6 +489,7 @@ static int curl_check_finished_download(alpm_handle_t *handle, CURLM *curlm, CUR
curlerr = curl_easy_getinfo(curl, CURLINFO_PRIVATE, &payload); curlerr = curl_easy_getinfo(curl, CURLINFO_PRIVATE, &payload);
ASSERT(curlerr == CURLE_OK, RET_ERR(handle, ALPM_ERR_LIBCURL, -1)); ASSERT(curlerr == CURLE_OK, RET_ERR(handle, ALPM_ERR_LIBCURL, -1));
handle = payload->handle;
curl_gethost(payload->fileurl, hostname, sizeof(hostname)); curl_gethost(payload->fileurl, hostname, sizeof(hostname));
curlerr = msg->data.result; curlerr = msg->data.result;
@@ -917,7 +917,7 @@ static int curl_download_internal(alpm_handle_t *handle,
break; break;
} }
if(msg->msg == CURLMSG_DONE) { if(msg->msg == CURLMSG_DONE) {
int ret = curl_check_finished_download(handle, curlm, msg, int ret = curl_check_finished_download(curlm, msg,
localpath, &active_downloads_num); localpath, &active_downloads_num);
if(ret == -1) { if(ret == -1) {
/* if current payload failed to download then stop adding new payloads but wait for the /* if current payload failed to download then stop adding new payloads but wait for the

View File

@@ -1,7 +1,7 @@
/* /*
* dload.h * dload.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* error.c * error.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* filelist.c * filelist.c
* *
* Copyright (c) 2012-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2012-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -118,7 +118,7 @@ static int _alpm_files_cmp(const void *f1, const void *f2)
return strcmp(file1->name, file2->name); return strcmp(file1->name, file2->name);
} }
alpm_file_t SYMEXPORT *alpm_filelist_contains(const alpm_filelist_t *filelist, alpm_file_t SYMEXPORT *alpm_filelist_contains(alpm_filelist_t *filelist,
const char *path) const char *path)
{ {
alpm_file_t key; alpm_file_t key;

View File

@@ -1,7 +1,7 @@
/* /*
* filelist.h * filelist.h
* *
* Copyright (c) 2012-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2012-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* graph.c - helpful graph structure and setup/teardown methods * graph.c - helpful graph structure and setup/teardown methods
* *
* Copyright (c) 2007-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2007-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* graph.h - helpful graph structure and setup/teardown methods * graph.h - helpful graph structure and setup/teardown methods
* *
* Copyright (c) 2007-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2007-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* group.c * group.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* group.h * group.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* handle.c * handle.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>

View File

@@ -1,7 +1,7 @@
/* /*
* handle.h * handle.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* hook.c * hook.c
* *
* Copyright (c) 2015-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2015-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* hook.h * hook.h
* *
* Copyright (c) 2015-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2015-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,226 +0,0 @@
#include <errno.h>
#include <string.h>
#include "alpm.h"
#include "util.h"
#include "mfmt.h"
typedef enum field_t {
FILENAME,
NAME,
BASE,
DESCRIPTION,
VERSION,
ORIGIN,
REASON,
LICENSE,
GROUP,
DEPENDS,
OPTDEPENDS,
CONFLICTS,
PROVIDES,
REPLACES,
REQUIREDBY,
DELTAS,
FILES,
BACKUP,
DB,
VALIDATION,
URL,
BUILDDATE,
INSTALLDATE,
PACKAGER,
MD5SUM,
SHA256SUM,
ARCH,
SIZE,
ISIZE,
BASE64SIG,
UNKNOWN,
} field_t;
static struct field_map_t {
const char *input;
field_t field;
} field_map[] = {
{"filename", FILENAME},
{"name", NAME},
{"base", BASE},
{"description", DESCRIPTION},
{"version", VERSION},
{"license", LICENSE},
{"group", GROUP},
{"groups", GROUP},
{"depends", DEPENDS},
{"optdepends", OPTDEPENDS},
{"conflicts", CONFLICTS},
{"provides", PROVIDES},
{"replaces", REPLACES},
{"requiredby", REQUIREDBY},
{"url", URL},
{"builddate", BUILDDATE},
{"installdate", INSTALLDATE},
{"packager", PACKAGER},
{"md5sum", MD5SUM},
{"sha256sum", SHA256SUM},
{"arch", ARCH},
{"size", SIZE},
{"isize", ISIZE},
{"base64sig", BASE64SIG},
{NULL, 0}
};
static char *_alpm_hr_size(off_t bytes, char *dest)
{
static const char *suff[] = {"B", "K", "M", "G", "T", "P", "E", NULL};
float hrsize;
int s = 0;
while((bytes >= 1000000 || bytes <= -1000000) && suff[s + 1]) {
bytes /= 1024;
++s;
}
hrsize = bytes;
if((hrsize >= 1000 || hrsize <= -1000) && suff[s + 1]) {
hrsize /= 1024;
++s;
}
sprintf(dest, "%.2f %s", hrsize, suff[s]);
return dest;
}
static field_t _alpm_info_lookup_field(const char *name) {
struct field_map_t *m;
for(m = field_map; m->input; m++) {
if(strcmp(name, m->input) == 0) { return m->field; }
}
return UNKNOWN;
}
static size_t _alpm_info_print_str(mfmt_token_callback_t *t, const char *str, FILE *f) {
return mfmt_render_str(t, str ? str : "NULL", f);
}
static size_t _alpm_info_print_size(mfmt_token_callback_t *t, const off_t s, FILE *f) {
if(s) {
char hrsize[50];
if(t->conversion == 'd') {
snprintf(hrsize, 50, "%lld", (long long)s);
} else {
_alpm_hr_size(s, hrsize);
}
return mfmt_render_str(t, hrsize, f);
} else {
return mfmt_render_str(t, "NULL", f);
}
}
static size_t _alpm_info_print_strlist(mfmt_token_callback_t *t, alpm_list_t *l, FILE *f) {
if(l) {
size_t len = 0;
while(l) {
len += mfmt_render_str(t, l->data, f) + 1;
fputc('\n', f);
l = l->next;
}
return len;
} else {
return mfmt_render_str(t, "NULL", f);
}
}
static size_t _alpm_info_print_deplist(mfmt_token_callback_t *t, alpm_list_t *l, FILE *f) {
if(l) {
size_t len = 0;
while(l) {
char *s = alpm_dep_compute_string(l->data);
len += mfmt_render_str(t, s, f) + 1;
fputc('\n', f);
l = l->next;
free(s);
}
return len;
} else {
return mfmt_render_str(t, "NULL", f);
}
}
static size_t _alpm_info_print_timestamp(mfmt_token_callback_t *t, const alpm_time_t s, FILE *f) {
if(s) {
char datestr[50] = "";
if(strftime(datestr, 50, " %c", localtime(&s)) == 0) { return 0; }
return mfmt_render_str(t, datestr + 1, f);
} else {
return mfmt_render_str(t, "NULL", f);
}
}
static size_t _alpm_info_process_token(FILE *f, mfmt_token_callback_t *t, void *ctx, void *arg) {
alpm_pkg_t *p = arg;
(void)ctx;
switch(_alpm_info_lookup_field(t->name)) {
case NAME: return _alpm_info_print_str(t, alpm_pkg_get_name(p), f);
case DESCRIPTION: return _alpm_info_print_str(t, alpm_pkg_get_desc(p), f);
case PACKAGER: return _alpm_info_print_str(t, alpm_pkg_get_packager(p), f);
case MD5SUM: return _alpm_info_print_str(t, alpm_pkg_get_md5sum(p), f);
case FILENAME: return _alpm_info_print_str(t, alpm_pkg_get_filename(p), f);
case BASE: return _alpm_info_print_str(t, alpm_pkg_get_base(p), f);
case VERSION: return _alpm_info_print_str(t, alpm_pkg_get_version(p), f);
case URL: return _alpm_info_print_str(t, alpm_pkg_get_url(p), f);
case SHA256SUM: return _alpm_info_print_str(t, alpm_pkg_get_sha256sum(p), f);
case ARCH: return _alpm_info_print_str(t, alpm_pkg_get_arch(p), f);
case BASE64SIG: return _alpm_info_print_str(t, alpm_pkg_get_base64_sig(p), f);
case SIZE: return _alpm_info_print_size(t, alpm_pkg_get_size(p), f);
case ISIZE: return _alpm_info_print_size(t, alpm_pkg_get_isize(p), f);
case BUILDDATE: return _alpm_info_print_timestamp(t, alpm_pkg_get_builddate(p), f);
case INSTALLDATE: return _alpm_info_print_timestamp(t, alpm_pkg_get_installdate(p), f);
case DEPENDS: return _alpm_info_print_deplist(t, alpm_pkg_get_depends(p), f);
case OPTDEPENDS: return _alpm_info_print_deplist(t, alpm_pkg_get_optdepends(p), f);
case CONFLICTS: return _alpm_info_print_deplist(t, alpm_pkg_get_conflicts(p), f);
case PROVIDES: return _alpm_info_print_deplist(t, alpm_pkg_get_provides(p), f);
case REPLACES: return _alpm_info_print_deplist(t, alpm_pkg_get_replaces(p), f);
case REQUIREDBY: {
alpm_list_t *rb = alpm_pkg_compute_requiredby(p);
size_t len = _alpm_info_print_strlist(t, rb, f);
FREELIST(rb);
return len;
}
default: errno = EINVAL; return 0;
}
}
size_t SYMEXPORT alpm_info_print_pkg(const char *format, alpm_pkg_t *pkg) {
alpm_list_t l = {
.data = pkg,
.next = NULL,
};
l.prev = &l;
return alpm_info_print_pkgs(format, &l);
}
size_t SYMEXPORT alpm_info_print_pkgs(const char *format, alpm_list_t *pkgs) {
mfmt_t *mfmt = mfmt_parse(format, _alpm_info_process_token, NULL);
size_t len = 0;
if(mfmt == NULL) {
return 0;
}
for(alpm_list_t *i = pkgs; i; i = i->next) {
size_t plen = mfmt_printf(mfmt, i->data, stdout);
if(plen == 0) { return 0; }
len += plen;
}
return len;
}
/* vim: set ts=2 sw=2 et: */

View File

@@ -4,7 +4,7 @@
/* /*
* libarchive-compat.h * libarchive-compat.h
* *
* Copyright (c) 2013-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2013-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* log.c * log.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* log.h * log.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -28,7 +28,5 @@ libalpm_sources = files('''
sync.h sync.c sync.h sync.c
trans.h trans.c trans.h trans.c
util.h util.c util.h util.c
info.c
mfmt.c mfmt.h
version.c version.c
'''.split()) '''.split())

View File

@@ -1,193 +0,0 @@
#define _GNU_SOURCE
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include "mfmt.h"
char *_mfmt_find_unescaped_char(char *haystack, char needle) {
while(1) {
haystack = strchrnul(haystack, needle);
if(*haystack && *(haystack + 1) == needle) { haystack += 2; continue; }
else { break; }
}
return haystack;
}
void _mfmt_brace_dedup(char *str) {
char *c = str, *end = str + strlen(str);
while((c = strchr(c, '{'))) {
memmove(c, c + 1, end - c);
c++;
}
c = str;
while((c = strchr(c, '}'))) {
memmove(c, c + 1, end - c);
c++;
}
}
mfmt_t *mfmt_parse(const char *tmpl, mfmt_callback_t *cb, void *ctx) {
mfmt_t *mfmt;
char *c;
mfmt = calloc(sizeof(mfmt_t), 1);
if(mfmt == NULL) { return NULL; }
mfmt->cb = cb;
mfmt->ctx = ctx;
for(c = (char*) tmpl; c && *c; ) {
mfmt->token_count++;
if(*c == '{' && *(c + 1) != '{') {
/* replacement */
if(!*(c = _mfmt_find_unescaped_char(c + 1, '}'))) {
errno = EINVAL;
free(mfmt);
return NULL;
} else {
c++;
}
} else {
/* literal */
c = _mfmt_find_unescaped_char(c, '{');
}
}
if((mfmt->tokens = calloc(sizeof(mfmt_token_t), mfmt->token_count)) == NULL) {
free(mfmt);
return NULL;
}
size_t i;
for(c = (char*) tmpl, i = 0; c && *c; i++) {
if(*c == '{' && *(c + 1) != '{') {
/* replacement */
mfmt_token_callback_t *t = &mfmt->tokens[i].callback;
char *end = _mfmt_find_unescaped_char(c + 1, '}');
t->type = MFMT_TOKEN_CALLBACK;
t->name = strndup(c + 1, end - c - 1);
c = end + 1;
} else {
/* literal */
char *end = _mfmt_find_unescaped_char(c, '{');
mfmt_token_literal_t *t = &mfmt->tokens[i].literal;
t->type = MFMT_TOKEN_LITERAL;
t->string = strndup(c, end - c);
_mfmt_brace_dedup(t->string);
c = end;
}
}
return mfmt;
}
size_t mfmt_printf(mfmt_t *mfmt, void *args, FILE *f) {
size_t len = 0;
size_t i;
for(i = 0; i < mfmt->token_count; i++) {
mfmt_token_t *t = &mfmt->tokens[i];
switch(t->base.type) {
case MFMT_TOKEN_LITERAL:
len += fputs(t->literal.string, f);
break;
case MFMT_TOKEN_CALLBACK:
len += mfmt->cb(f, &t->callback, mfmt->ctx, args);
break;
default:
errno = EINVAL;
return 0;
}
}
return len;
}
static size_t _mfmt_printf_close(mfmt_t *mfmt, void *args, FILE *f) {
if(f) {
size_t len = mfmt_printf(mfmt, args, f);
fclose(f);
return len;
}
return -1;
}
size_t mfmt_printd(mfmt_t *mfmt, void *args, int fd) {
return _mfmt_printf_close(mfmt, args, fdopen(fd, "w"));
}
size_t mfmt_printb(mfmt_t *mfmt, void *args, char *buf, size_t buflen) {
return _mfmt_printf_close(mfmt, args, fmemopen(buf, buflen, "w"));
}
size_t mfmt_prints(mfmt_t *mfmt, void *args, char **buf, size_t *buflen) {
return _mfmt_printf_close(mfmt, args, open_memstream(buf, buflen));
}
size_t mfmt_fmt(const char *tmpl, mfmt_val_t *args, FILE *f) {
mfmt_t *mfmt = mfmt_parse(tmpl, NULL, NULL);
size_t len;
for(size_t i = 0; i < mfmt->token_count; i++) {
mfmt_token_t *t = &mfmt->tokens[i];
switch(t->base.type) {
case MFMT_TOKEN_LITERAL:
len += fputs(t->literal.string, f);
break;
case MFMT_TOKEN_CALLBACK:
/* fprintf(stderr, "token: %s\n", t->callback.name); */
if(t->callback.name[0]) {
for(mfmt_val_t *v = args; v; v++) {
/* fprintf(stderr, "val: %s\n", v->name); */
if(strcmp(v->name, t->callback.name) == 0) {
len += fputs(v->string, f);
break;
}
}
} else {
len += fputs(args->string, f);
args++;
}
break;
}
}
return len;
}
size_t mfmt_mfmt(mfmt_t *mfmt, mfmt_val_t *args, FILE *f) {
size_t len;
for(size_t i = 0; i < mfmt->token_count; i++) {
mfmt_token_t *t = &mfmt->tokens[i];
switch(t->base.type) {
case MFMT_TOKEN_LITERAL:
len += fputs(t->literal.string, f);
break;
case MFMT_TOKEN_CALLBACK:
/* fprintf(stderr, "token: %s\n", t->callback.name); */
if(t->callback.name[0]) {
for(mfmt_val_t *v = args; v; v++) {
/* fprintf(stderr, "val: %s\n", v->name); */
if(strcmp(v->name, t->callback.name) == 0) {
len += fputs(v->string, f);
break;
}
}
} else {
len += fputs(args->string, f);
args++;
}
break;
}
}
return len;
}
size_t mfmt_render_int(mfmt_token_callback_t *t, const intmax_t i, FILE *f) {
(void)t;
return fprintf(f, "%jd", i);
}
size_t mfmt_render_str(mfmt_token_callback_t *t, const char *str, FILE *f) {
(void)t;
return fputs(str, f);
}

View File

@@ -1,66 +0,0 @@
#include <stdio.h>
#include <stddef.h>
#include <inttypes.h>
typedef enum mfmt_token_type_t {
MFMT_TOKEN_LITERAL,
MFMT_TOKEN_CALLBACK,
} mfmt_token_type_t;
typedef struct mfmt_token_literal_t {
mfmt_token_type_t type;
char *string;
} mfmt_token_literal_t;
typedef struct mfmt_token_base_t {
mfmt_token_type_t type;
} mfmt_token_base_t;
typedef struct mfmt_token_callback_t {
mfmt_token_type_t type;
size_t position;
char *name;
size_t width;
size_t precision;
char align;
char fill;
char conversion;
int sign;
} mfmt_token_callback_t;
typedef union mfmt_token_t {
mfmt_token_base_t base;
mfmt_token_literal_t literal;
mfmt_token_callback_t callback;
} mfmt_token_t;
typedef size_t (mfmt_callback_t)(FILE *f, mfmt_token_callback_t *token, void *ctx, void *args);
typedef struct mfmt_t {
mfmt_callback_t *cb;
void *ctx;
size_t token_count;
mfmt_token_t *tokens;
} mfmt_t;
typedef struct mfmt_val_t {
const char *name;
const char *string;
} mfmt_val_t;
mfmt_t *mfmt_parse(const char *tmpl, mfmt_callback_t *cb, void *ctx);
size_t mfmt_printf(mfmt_t *mfmt, void *args, FILE *f);
size_t mfmt_printd(mfmt_t *mfmt, void *args, int fd);
size_t mfmt_printb(mfmt_t *mfmt, void *args, char *buf, size_t buflen);
size_t mfmt_prints(mfmt_t *mfmt, void *args, char **buf, size_t *buflen);
void mfmt_free(mfmt_t *mfmt);
size_t mfmt_render_int(mfmt_token_callback_t *token, intmax_t i, FILE *f);
size_t mfmt_render_uint(mfmt_token_callback_t *token, uintmax_t i, FILE *f);
size_t mfmt_render_str(mfmt_token_callback_t *token, const char *str, FILE *f);
size_t mfmt_formatf(const char *tmpl, mfmt_callback_t *cb, void *ctx, FILE *f);
size_t mfmt_formatd(const char *tmpl, mfmt_callback_t *cb, void *ctx, int fd);
size_t mfmt_formatb(const char *tmpl, mfmt_callback_t *cb, void *ctx, char *buf, size_t buflen);
size_t mfmt_formats(const char *tmpl, mfmt_callback_t *cb, void *ctx, char **buf);

View File

@@ -1,7 +1,7 @@
/* /*
* package.c * package.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005, 2006 by Christian Hamar <krics@linuxforum.hu>
@@ -98,7 +98,7 @@ static alpm_list_t *_pkg_get_provides(alpm_pkg_t *pkg) { return pkg->provides;
static alpm_list_t *_pkg_get_replaces(alpm_pkg_t *pkg) { return pkg->replaces; } static alpm_list_t *_pkg_get_replaces(alpm_pkg_t *pkg) { return pkg->replaces; }
static alpm_filelist_t *_pkg_get_files(alpm_pkg_t *pkg) { return &(pkg->files); } static alpm_filelist_t *_pkg_get_files(alpm_pkg_t *pkg) { return &(pkg->files); }
static alpm_list_t *_pkg_get_backup(alpm_pkg_t *pkg) { return pkg->backup; } static alpm_list_t *_pkg_get_backup(alpm_pkg_t *pkg) { return pkg->backup; }
static alpm_list_t *_pkg_get_xdata(alpm_pkg_t *pkg) { return pkg->xdata; } static alpm_list_t *_pkg_get_alternatives(alpm_pkg_t *pkg) { return pkg->alternatives; }
static void *_pkg_changelog_open(alpm_pkg_t UNUSED *pkg) static void *_pkg_changelog_open(alpm_pkg_t UNUSED *pkg)
{ {
@@ -163,7 +163,7 @@ const struct pkg_operations default_pkg_ops = {
.get_replaces = _pkg_get_replaces, .get_replaces = _pkg_get_replaces,
.get_files = _pkg_get_files, .get_files = _pkg_get_files,
.get_backup = _pkg_get_backup, .get_backup = _pkg_get_backup,
.get_xdata = _pkg_get_xdata, .get_alternatives = _pkg_get_alternatives,
.changelog_open = _pkg_changelog_open, .changelog_open = _pkg_changelog_open,
.changelog_read = _pkg_changelog_read, .changelog_read = _pkg_changelog_read,
@@ -193,12 +193,6 @@ const char SYMEXPORT *alpm_pkg_get_base(alpm_pkg_t *pkg)
return pkg->ops->get_base(pkg); return pkg->ops->get_base(pkg);
} }
alpm_handle_t SYMEXPORT *alpm_pkg_get_handle(alpm_pkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
return pkg->handle;
}
const char SYMEXPORT *alpm_pkg_get_name(alpm_pkg_t *pkg) const char SYMEXPORT *alpm_pkg_get_name(alpm_pkg_t *pkg)
{ {
ASSERT(pkg != NULL, return NULL); ASSERT(pkg != NULL, return NULL);
@@ -426,6 +420,13 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_backup(alpm_pkg_t *pkg)
return pkg->ops->get_backup(pkg); return pkg->ops->get_backup(pkg);
} }
alpm_list_t SYMEXPORT *alpm_pkg_get_alternatives(alpm_pkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
pkg->handle->pm_errno = ALPM_ERR_OK;
return pkg->ops->get_alternatives(pkg);
}
alpm_db_t SYMEXPORT *alpm_pkg_get_db(alpm_pkg_t *pkg) alpm_db_t SYMEXPORT *alpm_pkg_get_db(alpm_pkg_t *pkg)
{ {
/* Sanity checks */ /* Sanity checks */
@@ -487,13 +488,6 @@ int SYMEXPORT alpm_pkg_has_scriptlet(alpm_pkg_t *pkg)
return pkg->ops->has_scriptlet(pkg); return pkg->ops->has_scriptlet(pkg);
} }
alpm_list_t SYMEXPORT *alpm_pkg_get_xdata(alpm_pkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
pkg->handle->pm_errno = ALPM_ERR_OK;
return pkg->ops->get_xdata(pkg);
}
static void find_requiredby(alpm_pkg_t *pkg, alpm_db_t *db, alpm_list_t **reqs, static void find_requiredby(alpm_pkg_t *pkg, alpm_db_t *db, alpm_list_t **reqs,
int optional) int optional)
{ {
@@ -647,6 +641,7 @@ int _alpm_pkg_dup(alpm_pkg_t *pkg, alpm_pkg_t **new_ptr)
newpkg->optdepends = list_depdup(pkg->optdepends); newpkg->optdepends = list_depdup(pkg->optdepends);
newpkg->conflicts = list_depdup(pkg->conflicts); newpkg->conflicts = list_depdup(pkg->conflicts);
newpkg->provides = list_depdup(pkg->provides); newpkg->provides = list_depdup(pkg->provides);
newpkg->alternatives = alpm_list_strdup(pkg->alternatives);
if(pkg->files.count) { if(pkg->files.count) {
size_t filenum; size_t filenum;
@@ -686,30 +681,6 @@ static void free_deplist(alpm_list_t *deps)
alpm_list_free(deps); alpm_list_free(deps);
} }
alpm_pkg_xdata_t *_alpm_pkg_parse_xdata(const char *string)
{
alpm_pkg_xdata_t *pd;
const char *sep;
if(string == NULL || (sep = strchr(string, '=')) == NULL) {
return NULL;
}
CALLOC(pd, 1, sizeof(alpm_pkg_xdata_t), return NULL);
STRNDUP(pd->name, string, sep - string, FREE(pd); return NULL);
STRDUP(pd->value, sep + 1, FREE(pd->name); FREE(pd); return NULL);
return pd;
}
void _alpm_pkg_xdata_free(alpm_pkg_xdata_t *pd)
{
if(pd) {
free(pd->name);
free(pd->value);
free(pd);
}
}
void _alpm_pkg_free(alpm_pkg_t *pkg) void _alpm_pkg_free(alpm_pkg_t *pkg)
{ {
if(pkg == NULL) { if(pkg == NULL) {
@@ -740,8 +711,6 @@ void _alpm_pkg_free(alpm_pkg_t *pkg)
} }
alpm_list_free_inner(pkg->backup, (alpm_list_fn_free)_alpm_backup_free); alpm_list_free_inner(pkg->backup, (alpm_list_fn_free)_alpm_backup_free);
alpm_list_free(pkg->backup); alpm_list_free(pkg->backup);
alpm_list_free_inner(pkg->xdata, (alpm_list_fn_free)_alpm_pkg_xdata_free);
alpm_list_free(pkg->xdata);
free_deplist(pkg->depends); free_deplist(pkg->depends);
free_deplist(pkg->optdepends); free_deplist(pkg->optdepends);
free_deplist(pkg->checkdepends); free_deplist(pkg->checkdepends);
@@ -750,6 +719,7 @@ void _alpm_pkg_free(alpm_pkg_t *pkg)
free_deplist(pkg->provides); free_deplist(pkg->provides);
alpm_list_free(pkg->removes); alpm_list_free(pkg->removes);
_alpm_pkg_free(pkg->oldpkg); _alpm_pkg_free(pkg->oldpkg);
FREELIST(pkg->alternatives);
if(pkg->origin == ALPM_PKG_FROM_FILE) { if(pkg->origin == ALPM_PKG_FROM_FILE) {
FREE(pkg->origin_data.file); FREE(pkg->origin_data.file);

View File

@@ -1,7 +1,7 @@
/* /*
* package.h * package.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org> * Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
@@ -66,8 +66,7 @@ struct pkg_operations {
alpm_list_t *(*get_replaces) (alpm_pkg_t *); alpm_list_t *(*get_replaces) (alpm_pkg_t *);
alpm_filelist_t *(*get_files) (alpm_pkg_t *); alpm_filelist_t *(*get_files) (alpm_pkg_t *);
alpm_list_t *(*get_backup) (alpm_pkg_t *); alpm_list_t *(*get_backup) (alpm_pkg_t *);
alpm_list_t *(*get_alternatives) (alpm_pkg_t *);
alpm_list_t *(*get_xdata) (alpm_pkg_t *);
void *(*changelog_open) (alpm_pkg_t *); void *(*changelog_open) (alpm_pkg_t *);
size_t (*changelog_read) (void *, size_t, const alpm_pkg_t *, void *); size_t (*changelog_read) (void *, size_t, const alpm_pkg_t *, void *);
@@ -122,6 +121,7 @@ struct _alpm_pkg_t {
alpm_list_t *provides; alpm_list_t *provides;
alpm_list_t *removes; /* in transaction targets only */ alpm_list_t *removes; /* in transaction targets only */
alpm_pkg_t *oldpkg; /* in transaction targets only */ alpm_pkg_t *oldpkg; /* in transaction targets only */
alpm_list_t *alternatives;
const struct pkg_operations *ops; const struct pkg_operations *ops;
@@ -138,8 +138,6 @@ struct _alpm_pkg_t {
alpm_pkgreason_t reason; alpm_pkgreason_t reason;
int scriptlet; int scriptlet;
alpm_list_t *xdata;
/* Bitfield from alpm_dbinfrq_t */ /* Bitfield from alpm_dbinfrq_t */
int infolevel; int infolevel;
/* Bitfield from alpm_pkgvalidation_t */ /* Bitfield from alpm_pkgvalidation_t */
@@ -162,7 +160,4 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
int _alpm_pkg_cmp(const void *p1, const void *p2); int _alpm_pkg_cmp(const void *p1, const void *p2);
int _alpm_pkg_compare_versions(alpm_pkg_t *local_pkg, alpm_pkg_t *pkg); int _alpm_pkg_compare_versions(alpm_pkg_t *local_pkg, alpm_pkg_t *pkg);
alpm_pkg_xdata_t *_alpm_pkg_parse_xdata(const char *string);
void _alpm_pkg_xdata_free(alpm_pkg_xdata_t *pd);
#endif /* ALPM_PACKAGE_H */ #endif /* ALPM_PACKAGE_H */

View File

@@ -1,7 +1,7 @@
/* /*
* pkghash.c * pkghash.c
* *
* Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* pkghash.h * pkghash.h
* *
* Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -15,7 +15,7 @@ XGETTEXT_OPTIONS = \
# This is the copyright holder that gets inserted into the header of the # This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. # package.
COPYRIGHT_HOLDER = Pacman Development Team <pacman-dev@lists.archlinux.org> COPYRIGHT_HOLDER = Pacman Development Team <pacman-dev@archlinux.org>
# This is the email address or URL to which the translators shall report # This is the email address or URL to which the translators shall report
# bugs in the untranslated strings. # bugs in the untranslated strings.

View File

@@ -1,7 +1,7 @@
/* /*
* remove.c * remove.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View File

@@ -1,7 +1,7 @@
/* /*
* remove.h * remove.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@@ -1,7 +1,7 @@
/* /*
* signing.c * signing.c
* *
* Copyright (c) 2008-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2008-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -253,10 +253,9 @@ error:
* This requires GPGME to call the gpg binary. * This requires GPGME to call the gpg binary.
* @param handle the context handle * @param handle the context handle
* @param email the email address of the key to import * @param email the email address of the key to import
* @param fpr the fingerprint key ID to look up (or NULL)
* @return 0 on success, -1 on error * @return 0 on success, -1 on error
*/ */
static int key_import_wkd(alpm_handle_t *handle, const char *email, const char *fpr) static int key_import_wkd(alpm_handle_t *handle, const char *email)
{ {
gpgme_error_t gpg_err; gpgme_error_t gpg_err;
gpgme_ctx_t ctx = {0}; gpgme_ctx_t ctx = {0};
@@ -275,12 +274,7 @@ static int key_import_wkd(alpm_handle_t *handle, const char *email, const char *
_alpm_log(handle, ALPM_LOG_DEBUG, _("looking up key %s using WKD\n"), email); _alpm_log(handle, ALPM_LOG_DEBUG, _("looking up key %s using WKD\n"), email);
gpg_err = gpgme_get_key(ctx, email, &key, 0); gpg_err = gpgme_get_key(ctx, email, &key, 0);
if(gpg_err_code(gpg_err) == GPG_ERR_NO_ERROR) { if(gpg_err_code(gpg_err) == GPG_ERR_NO_ERROR) {
/* check if correct key was imported via WKD */ ret = 0;
if(fpr && _alpm_key_in_keychain(handle, fpr)) {
ret = 0;
} else {
_alpm_log(handle, ALPM_LOG_DEBUG, "key lookup failed: WKD imported wrong fingerprint\n");
}
} }
gpgme_key_unref(key); gpgme_key_unref(key);
@@ -359,18 +353,14 @@ static int key_search_keyserver(alpm_handle_t *handle, const char *fpr,
} else { } else {
pgpkey->fingerprint = key->subkeys->keyid; pgpkey->fingerprint = key->subkeys->keyid;
} }
pgpkey->uid = key->uids->uid;
/* we are probably going to fail importing, but continue anyway... */ pgpkey->name = key->uids->name;
if(key->uids != NULL) { pgpkey->email = key->uids->email;
pgpkey->uid = key->uids->uid;
pgpkey->name = key->uids->name;
pgpkey->email = key->uids->email;
}
pgpkey->created = key->subkeys->timestamp; pgpkey->created = key->subkeys->timestamp;
pgpkey->expires = key->subkeys->expires; pgpkey->expires = key->subkeys->expires;
pgpkey->length = key->subkeys->length; pgpkey->length = key->subkeys->length;
pgpkey->revoked = key->subkeys->revoked; pgpkey->revoked = key->subkeys->revoked;
/* Initialize with '?', this is overwritten unless public key /* Initialize with '?', this is overwritten unless public key
* algorithm is unknown. */ * algorithm is unknown. */
pgpkey->pubkey_algo = '?'; pgpkey->pubkey_algo = '?';
@@ -526,7 +516,7 @@ int _alpm_key_import(alpm_handle_t *handle, const char *uid, const char *fpr)
if(question.import) { if(question.import) {
/* Try to import the key from a WKD first */ /* Try to import the key from a WKD first */
if(email_from_uid(uid, &email) == 0) { if(email_from_uid(uid, &email) == 0) {
ret = key_import_wkd(handle, email, fpr); ret = key_import_wkd(handle, email);
free(email); free(email);
} }
@@ -539,7 +529,7 @@ int _alpm_key_import(alpm_handle_t *handle, const char *uid, const char *fpr)
ret = 0; ret = 0;
} else { } else {
_alpm_log(handle, ALPM_LOG_ERROR, _alpm_log(handle, ALPM_LOG_ERROR,
_("key \"%s\" could not be imported\n"), fpr); _("key \"%s\" could not be imported\n"), fetch_key.uid);
} }
} else { } else {
_alpm_log(handle, ALPM_LOG_ERROR, _alpm_log(handle, ALPM_LOG_ERROR,

View File

@@ -1,7 +1,7 @@
/* /*
* signing.h * signing.h
* *
* Copyright (c) 2008-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2008-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -1,7 +1,7 @@
/* /*
* sync.c * sync.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@@ -470,6 +470,7 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
for(j = i->next; j; j = j->next) { for(j = i->next; j; j = j->next) {
alpm_pkg_t *pkg2 = j->data; alpm_pkg_t *pkg2 = j->data;
if(strcmp(pkg1->filename, pkg2->filename) == 0) { if(strcmp(pkg1->filename, pkg2->filename) == 0) {
alpm_list_free(resolved);
ret = -1; ret = -1;
handle->pm_errno = ALPM_ERR_TRANS_DUP_FILENAME; handle->pm_errno = ALPM_ERR_TRANS_DUP_FILENAME;
_alpm_log(handle, ALPM_LOG_ERROR, _("packages %s and %s have the same filename: %s\n"), _alpm_log(handle, ALPM_LOG_ERROR, _("packages %s and %s have the same filename: %s\n"),
@@ -479,7 +480,6 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
} }
if(ret != 0) { if(ret != 0) {
alpm_list_free(resolved);
goto cleanup; goto cleanup;
} }
@@ -732,7 +732,7 @@ static int find_dl_candidates(alpm_handle_t *handle, alpm_list_t **files)
handle->pm_errno = ALPM_ERR_SERVER_NONE; handle->pm_errno = ALPM_ERR_SERVER_NONE;
_alpm_log(handle, ALPM_LOG_ERROR, "%s: %s\n", _alpm_log(handle, ALPM_LOG_ERROR, "%s: %s\n",
alpm_strerror(handle->pm_errno), repo->treename); alpm_strerror(handle->pm_errno), repo->treename);
return -1; return 1;
} }
ASSERT(spkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1)); ASSERT(spkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1));
@@ -1109,7 +1109,6 @@ static int load_packages(alpm_handle_t *handle, alpm_list_t **data,
errors++; errors++;
*data = alpm_list_add(*data, strdup(spkg->filename)); *data = alpm_list_add(*data, strdup(spkg->filename));
free(filepath); free(filepath);
_alpm_pkg_free(pkgfile);
continue; continue;
} }
free(filepath); free(filepath);

View File

@@ -1,7 +1,7 @@
/* /*
* sync.h * sync.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>

View File

@@ -1,7 +1,7 @@
/* /*
* trans.c * trans.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View File

@@ -1,7 +1,7 @@
/* /*
* trans.h * trans.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View File

@@ -1,7 +1,7 @@
/* /*
* util.c * util.c
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@@ -40,7 +40,8 @@
#include <archive_entry.h> #include <archive_entry.h>
#ifdef HAVE_LIBSSL #ifdef HAVE_LIBSSL
#include <openssl/evp.h> #include <openssl/md5.h>
#include <openssl/sha.h>
#endif #endif
#ifdef HAVE_LIBNETTLE #ifdef HAVE_LIBNETTLE
@@ -348,11 +349,6 @@ int _alpm_unpack(alpm_handle_t *handle, const char *path, const char *prefix,
entryname = archive_entry_pathname(entry); entryname = archive_entry_pathname(entry);
if(entryname == NULL) {
ret = 1;
goto cleanup;
}
/* If specific files were requested, skip entries that don't match. */ /* If specific files were requested, skip entries that don't match. */
if(list) { if(list) {
char *entry_prefix = NULL; char *entry_prefix = NULL;
@@ -663,13 +659,6 @@ int _alpm_run_chroot(alpm_handle_t *handle, const char *cmd, char *const argv[],
"/", strerror(errno)); "/", strerror(errno));
exit(1); exit(1);
} }
/* bash assumes it's being run under rsh/ssh if stdin is a socket and
* sources ~/.bashrc if it thinks it's the top-level shell.
* set SHLVL before running to indicate that it's a child shell and
* disable this behavior */
setenv("SHLVL", "1", 0);
/* bash sources $BASH_ENV when run non-interactively */
unsetenv("BASH_ENV");
umask(0022); umask(0022);
_alpm_reset_signals(); _alpm_reset_signals();
execv(cmd, argv); execv(cmd, argv);
@@ -927,8 +916,7 @@ const char *_alpm_filecache_setup(alpm_handle_t *handle)
static int md5_file(const char *path, unsigned char output[16]) static int md5_file(const char *path, unsigned char output[16])
{ {
#if HAVE_LIBSSL #if HAVE_LIBSSL
EVP_MD_CTX *ctx; MD5_CTX ctx;
const EVP_MD *md = EVP_get_digestbyname("MD5");
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
struct md5_ctx ctx; struct md5_ctx ctx;
#endif #endif
@@ -945,8 +933,7 @@ static int md5_file(const char *path, unsigned char output[16])
} }
#if HAVE_LIBSSL #if HAVE_LIBSSL
ctx = EVP_MD_CTX_create(); MD5_Init(&ctx);
EVP_DigestInit_ex(ctx, md, NULL);
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
md5_init(&ctx); md5_init(&ctx);
#endif #endif
@@ -956,7 +943,7 @@ static int md5_file(const char *path, unsigned char output[16])
continue; continue;
} }
#if HAVE_LIBSSL #if HAVE_LIBSSL
EVP_DigestUpdate(ctx, buf, n); MD5_Update(&ctx, buf, n);
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
md5_update(&ctx, n, buf); md5_update(&ctx, n, buf);
#endif #endif
@@ -970,8 +957,7 @@ static int md5_file(const char *path, unsigned char output[16])
} }
#if HAVE_LIBSSL #if HAVE_LIBSSL
EVP_DigestFinal_ex(ctx, output, NULL); MD5_Final(output, &ctx);
EVP_MD_CTX_destroy(ctx);
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
md5_digest(&ctx, MD5_DIGEST_SIZE, output); md5_digest(&ctx, MD5_DIGEST_SIZE, output);
#endif #endif
@@ -986,8 +972,7 @@ static int md5_file(const char *path, unsigned char output[16])
static int sha256_file(const char *path, unsigned char output[32]) static int sha256_file(const char *path, unsigned char output[32])
{ {
#if HAVE_LIBSSL #if HAVE_LIBSSL
EVP_MD_CTX *ctx; SHA256_CTX ctx;
const EVP_MD *md = EVP_get_digestbyname("SHA256");
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
struct sha256_ctx ctx; struct sha256_ctx ctx;
#endif #endif
@@ -1004,8 +989,7 @@ static int sha256_file(const char *path, unsigned char output[32])
} }
#if HAVE_LIBSSL #if HAVE_LIBSSL
ctx = EVP_MD_CTX_create(); SHA256_Init(&ctx);
EVP_DigestInit_ex(ctx, md, NULL);
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
sha256_init(&ctx); sha256_init(&ctx);
#endif #endif
@@ -1015,7 +999,7 @@ static int sha256_file(const char *path, unsigned char output[32])
continue; continue;
} }
#if HAVE_LIBSSL #if HAVE_LIBSSL
EVP_DigestUpdate(ctx, buf, n); SHA256_Update(&ctx, buf, n);
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
sha256_update(&ctx, n, buf); sha256_update(&ctx, n, buf);
#endif #endif
@@ -1029,8 +1013,7 @@ static int sha256_file(const char *path, unsigned char output[32])
} }
#if HAVE_LIBSSL #if HAVE_LIBSSL
EVP_DigestFinal_ex(ctx, output, NULL); SHA256_Final(output, &ctx);
EVP_MD_CTX_destroy(ctx);
#else /* HAVE_LIBNETTLE */ #else /* HAVE_LIBNETTLE */
sha256_digest(&ctx, SHA256_DIGEST_SIZE, output); sha256_digest(&ctx, SHA256_DIGEST_SIZE, output);
#endif #endif

View File

@@ -1,7 +1,7 @@
/* /*
* util.h * util.h
* *
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2006-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> * Copyright (c) 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View File

@@ -8,7 +8,7 @@ project('pacman',
'sysconfdir=/etc', 'sysconfdir=/etc',
'localstatedir=/var', 'localstatedir=/var',
], ],
meson_version : '>= 0.56') meson_version : '>= 0.51')
libalpm_version = '13.0.1' libalpm_version = '13.0.1'
@@ -26,15 +26,14 @@ MANDIR = join_paths(PREFIX, get_option('mandir'))
BUILDSCRIPT = get_option('buildscript') BUILDSCRIPT = get_option('buildscript')
LIBMAKEPKGDIR = join_paths(PREFIX, DATAROOTDIR, 'makepkg') LIBMAKEPKGDIR = join_paths(PREFIX, DATAROOTDIR, 'makepkg')
PKGDATADIR = join_paths(PREFIX, DATAROOTDIR, meson.project_name()) PKGDATADIR = join_paths(PREFIX, DATAROOTDIR, meson.project_name())
KEYRINGDIR = join_paths(PREFIX, DATAROOTDIR, get_option('keyringdir'))
PYTHON = import('python').find_installation('python3') PYTHON = import('python').find_installation('python3')
LDCONFIG = get_option('ldconfig') LDCONFIG = get_option('ldconfig')
MESON_MAKE_SYMLINK = join_paths(meson.project_source_root(), 'build-aux/meson-make-symlink.sh') MESON_MAKE_SYMLINK = join_paths(meson.source_root(), 'build-aux/meson-make-symlink.sh')
BASH = find_program('bash4', 'bash') BASH = find_program('bash4', 'bash')
if BASH.found() if BASH.found()
bash_version = run_command(BASH, '-c', 'IFS=.; echo "${BASH_VERSINFO[*]:0:3}"', check: true).stdout() bash_version = run_command(BASH, '-c', 'IFS=.; echo "${BASH_VERSINFO[*]:0:3}"').stdout()
have_bash = bash_version.version_compare('>= 4.4.0') have_bash = bash_version.version_compare('>= 4.4.0')
endif endif
@@ -44,7 +43,7 @@ endif
bashcompletion = dependency('bash-completion', required : false) bashcompletion = dependency('bash-completion', required : false)
if bashcompletion.found() if bashcompletion.found()
BASHCOMPDIR = bashcompletion.get_variable(pkgconfig: 'completionsdir') BASHCOMPDIR = bashcompletion.get_pkgconfig_variable('completionsdir')
else else
BASHCOMPDIR = join_paths(DATAROOTDIR, 'bash-completion/completions') BASHCOMPDIR = join_paths(DATAROOTDIR, 'bash-completion/completions')
endif endif
@@ -54,8 +53,7 @@ if get_option('use-git-version')
find_program('git'), find_program('git'),
'describe', 'describe',
'--abbrev=4', '--abbrev=4',
'--dirty', '--dirty').stdout().strip().strip('v')
check: true).stdout().strip().strip('v')
else else
PACKAGE_VERSION = meson.project_version() PACKAGE_VERSION = meson.project_version()
endif endif
@@ -92,11 +90,6 @@ endif
libarchive = dependency('libarchive', libarchive = dependency('libarchive',
version : '>=3.0.0', version : '>=3.0.0',
static : get_option('buildstatic')) static : get_option('buildstatic'))
if libarchive.version().version_compare('>=3.6.0')
bsdtar_no_read_sparse = '--no-read-sparse'
else
bsdtar_no_read_sparse = ''
endif
libcurl = dependency('libcurl', libcurl = dependency('libcurl',
version : '>=7.55.0', version : '>=7.55.0',
@@ -104,7 +97,7 @@ libcurl = dependency('libcurl',
static : get_option('buildstatic')) static : get_option('buildstatic'))
conf.set('HAVE_LIBCURL', libcurl.found()) conf.set('HAVE_LIBCURL', libcurl.found())
needed_gpgme_version = '>=1.12.0' needed_gpgme_version = '>=1.3.0'
gpgme = dependency('gpgme', gpgme = dependency('gpgme',
version : needed_gpgme_version, version : needed_gpgme_version,
required : get_option('gpgme'), required : get_option('gpgme'),
@@ -237,7 +230,7 @@ strip_static = '--strip-debug'
file_seccomp = get_option('file-seccomp') file_seccomp = get_option('file-seccomp')
# meson-git has find_program('file', required: false, version: '>=5.38') # meson-git has find_program('file', required: false, version: '>=5.38')
filever = run_command('sh', '-c', 'file --version | sed -n "s/^file-\(.*\)/\\1/p"', check: true).stdout() filever = run_command('sh', '-c', 'file --version | sed -n "s/^file-\(.*\)/\\1/p"').stdout()
if file_seccomp.enabled() or ( file_seccomp.auto() and filever.version_compare('>= 5.38') ) if file_seccomp.enabled() or ( file_seccomp.auto() and filever.version_compare('>= 5.38') )
filecmd = 'file -S' filecmd = 'file -S'
endif endif
@@ -252,7 +245,7 @@ elif os.contains('bsd') or os == 'dragonfly'
inodecmd = 'stat -f \'%i %N\'' inodecmd = 'stat -f \'%i %N\''
endif endif
chost = run_command(cc, '-dumpmachine', check: true).stdout().strip() chost = run_command(cc, '-dumpmachine').stdout().strip()
carch = chost.split('-')[0] carch = chost.split('-')[0]
# annoyingly, we have to maintain two sets of configuration_data which is # annoyingly, we have to maintain two sets of configuration_data which is
@@ -267,9 +260,8 @@ substs.set('LOCALEDIR', LOCALEDIR)
substs.set('sysconfdir', SYSCONFDIR) substs.set('sysconfdir', SYSCONFDIR)
substs.set('localstatedir', LOCALSTATEDIR) substs.set('localstatedir', LOCALSTATEDIR)
substs.set('PKGDATADIR', PKGDATADIR) substs.set('PKGDATADIR', PKGDATADIR)
substs.set('KEYRINGDIR', KEYRINGDIR)
substs.set('PREFIX', PREFIX) substs.set('PREFIX', PREFIX)
substs.set('BASH', BASH.full_path()) substs.set('BASH', BASH.path())
substs.set('PACKAGE_VERSION', PACKAGE_VERSION) substs.set('PACKAGE_VERSION', PACKAGE_VERSION)
substs.set('PACKAGE_NAME', meson.project_name()) substs.set('PACKAGE_NAME', meson.project_name())
substs.set('BUILDSCRIPT', BUILDSCRIPT) substs.set('BUILDSCRIPT', BUILDSCRIPT)
@@ -281,7 +273,6 @@ substs.set('LIBMAKEPKGDIR', LIBMAKEPKGDIR)
substs.set('STRIP_BINARIES', strip_binaries) substs.set('STRIP_BINARIES', strip_binaries)
substs.set('STRIP_SHARED', strip_shared) substs.set('STRIP_SHARED', strip_shared)
substs.set('STRIP_STATIC', strip_static) substs.set('STRIP_STATIC', strip_static)
substs.set('BSDTAR_NO_READ_SPARSE', bsdtar_no_read_sparse)
subdir('lib/libalpm') subdir('lib/libalpm')
subdir('src/common') subdir('src/common')
@@ -320,7 +311,7 @@ libalpm_a = static_library(
'alpm_objlib', 'alpm_objlib',
libalpm_sources, libalpm_sources,
# https://github.com/mesonbuild/meson/issues/3937 # https://github.com/mesonbuild/meson/issues/3937
objects : libcommon.extract_all_objects(recursive: true), objects : libcommon.extract_all_objects(),
include_directories : includes, include_directories : includes,
gnu_symbol_visibility : 'hidden', gnu_symbol_visibility : 'hidden',
dependencies : alpm_deps) dependencies : alpm_deps)
@@ -382,7 +373,7 @@ executable(
foreach wrapper : script_wrappers foreach wrapper : script_wrappers
cdata = configuration_data() cdata = configuration_data()
cdata.set_quoted('BASH', BASH.full_path()) cdata.set_quoted('BASH', BASH.path())
cdata.set_quoted('BUILDDIR', wrapper[2]) cdata.set_quoted('BUILDDIR', wrapper[2])
cdata.set_quoted('REAL_PROGPATH', wrapper[1].full_path()) cdata.set_quoted('REAL_PROGPATH', wrapper[1].full_path())
@@ -390,7 +381,7 @@ foreach wrapper : script_wrappers
# directory. Use configure_file instead of a custom_target to ensure that # directory. Use configure_file instead of a custom_target to ensure that
# permissions on the input script wrapper are preserved. # permissions on the input script wrapper are preserved.
configure_file( configure_file(
input : join_paths(meson.project_source_root(), 'build-aux', 'script-wrapper.sh.in'), input : join_paths(meson.source_root(), 'build-aux', 'script-wrapper.sh.in'),
output : wrapper[0], output : wrapper[0],
configuration : cdata) configuration : cdata)
endforeach endforeach
@@ -424,10 +415,10 @@ foreach path : [
endforeach endforeach
TEST_ENV = environment() TEST_ENV = environment()
TEST_ENV.set('PMTEST_SCRIPTLIB_DIR', join_paths(meson.project_source_root(), 'scripts/library/')) TEST_ENV.set('PMTEST_SCRIPTLIB_DIR', join_paths(meson.source_root(), 'scripts/library/'))
TEST_ENV.set('PMTEST_LIBMAKEPKG_DIR', join_paths(meson.project_build_root(), 'scripts/libmakepkg/')) TEST_ENV.set('PMTEST_LIBMAKEPKG_DIR', join_paths(meson.build_root(), 'scripts/libmakepkg/'))
TEST_ENV.set('PMTEST_UTIL_DIR', meson.project_build_root() + '/') TEST_ENV.set('PMTEST_UTIL_DIR', meson.build_root() + '/')
TEST_ENV.set('PMTEST_SCRIPT_DIR', join_paths(meson.project_build_root(), 'scripts/')) TEST_ENV.set('PMTEST_SCRIPT_DIR', join_paths(meson.build_root(), 'scripts/'))
subdir('test/pacman') subdir('test/pacman')
subdir('test/scripts') subdir('test/scripts')
@@ -442,7 +433,6 @@ message('\n '.join([
' localstatedir : @0@'.format(LOCALSTATEDIR), ' localstatedir : @0@'.format(LOCALSTATEDIR),
' database dir : @0@'.format(join_paths(LOCALSTATEDIR, 'lib/pacman/')), ' database dir : @0@'.format(join_paths(LOCALSTATEDIR, 'lib/pacman/')),
' cache dir : @0@'.format(join_paths(LOCALSTATEDIR, 'cache/pacman/pkg/')), ' cache dir : @0@'.format(join_paths(LOCALSTATEDIR, 'cache/pacman/pkg/')),
' keyringdir : @0@'.format(KEYRINGDIR),
' compiler : @0@ @1@'.format(cc.get_id(), cc.version()), ' compiler : @0@ @1@'.format(cc.get_id(), cc.version()),
'', '',
' Architecture : @0@'.format(carch), ' Architecture : @0@'.format(carch),

View File

@@ -26,9 +26,6 @@ option('buildscript', type : 'string', value : 'PKGBUILD',
option('datarootdir', type : 'string', value : 'share', option('datarootdir', type : 'string', value : 'share',
description : 'FIXME') description : 'FIXME')
option('keyringdir', type : 'string', value: 'pacman/keyrings',
description : 'Where to look for keyring files under datarootdir')
option('makepkg-template-dir', type : 'string', value : '/usr/share/makepkg-template', option('makepkg-template-dir', type : 'string', value : '/usr/share/makepkg-template',
description : 'template dir used by makepkg-template') description : 'template dir used by makepkg-template')

View File

@@ -616,7 +616,7 @@ _key_longopts=(
'--init[Ensure the keyring is properly initialized]' '--init[Ensure the keyring is properly initialized]'
'--list-sigs[List keys and their signatures]:*: :_keys' '--list-sigs[List keys and their signatures]:*: :_keys'
'--lsign-key[Locally sign the specified keyid]:*: :_keys' '--lsign-key[Locally sign the specified keyid]:*: :_keys'
'--populate[Reload the default keys from the (given) keyrings in '@keyringdir@']: :_path_files -W @keyringdir@' '--populate[Reload the default keys from the (given) keyrings in '/usr/share/pacman/keyrings']: :_path_files -W /usr/share/pacman/keyrings'
'--refresh-keys[Update specified or all keys from a keyserver]:*: :_keys' '--refresh-keys[Update specified or all keys from a keyserver]:*: :_keys'
) )

View File

@@ -1,75 +0,0 @@
#!/bin/bash
#
# library_depends.sh - Automatically add library requirements to depends
#
# Copyright (c) 2021-2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
[[ -n "$LIBMAKEPKG_AUTODEP_LIBRARY_DEPENDS_SH" ]] && return
LIBMAKEPKG_AUTODEP_LIBRARY_DEPENDS_SH=1
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
autodep_functions+=('library_depends')
library_depends() {
if check_option "autodeps" "y"; then
local dep filename libdeps libdir libpath prefix sofile
declare -a libdeps
while IFS= read -rd '' filename; do
for sofile in $(LC_ALL=C readelf -d $filename 2>/dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p'); do
# get the full path of the library
libpath=$(ldd $filename | sed -nr "s/.$sofile => (.*) \(.*\)/\1/p")
# if ldd can not find the library, it is likely part of the package and not in filesystem
if [[ -z $libpath ]]; then
continue
fi
# skip if the library is part of the package
if [[ -e "$pkgdir/$libpath" ]]; then
continue
fi
# find the prefix for the dependency
libpath=${libpath#/}
libpath=${libpath%/*}
unset prefix
for libdir in ${LIB_DIRS[@]}; do
if [[ ${libdir/*:} == ${libpath} ]]; then
prefix=${libdir/:*}
fi
done
if [[ -z ${prefix} ]]; then
continue
fi
# only add library dependency if it exists - this helps bootstraping dependencies
if [[ $(run_pacman -T "$prefix:$sofile") ]]; then
continue
fi
libdeps+=("$prefix:$sofile")
done
done < <(find "$pkgdir" -type f -perm -u+x -print0)
depends+=($(printf '%s\n' "${libdeps[@]}" | LC_ALL=C sort -u))
fi
}

View File

@@ -1,56 +0,0 @@
#!/bin/bash
#
# library_provides.sh - Automatically add a packages libraries to provides
#
# Copyright (c) 2021-2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
[[ -n "$LIBMAKEPKG_AUTODEP_LIBRARY_PROVIDES_SH" ]] && return
LIBMAKEPKG_AUTODEP_LIBRARY_PROVIDES_SH=1
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
autodep_functions+=('library_provides')
library_provides() {
if check_option "autodeps" "y"; then
for lib in ${LIB_DIRS[@]}; do
dir=${lib/*:}
prefix=${lib/:*}
if [[ ! -d "$pkgdir/$dir" ]]; then
continue;
fi
mapfile -t filenames < <(find "$pkgdir/$dir" -type f | LC_ALL=C sort)
for fn in "${filenames[@]}"; do
# check we have a shared library
if LC_ALL=C readelf -h "$fn" 2>/dev/null | grep -q '.*Type:.*DYN (Shared object file).*'; then
# extract library soname
local sofile=$(LC_ALL=C readelf -d "$fn" 2>/dev/null | sed -n 's/.*Library soname: \[\(.*\)\].*/\1/p')
if [[ -z "$sofile" ]]; then
# the library is not versioned
continue
fi
provides+=("$prefix:$sofile")
fi
done
done
fi
}

View File

@@ -1,18 +0,0 @@
libmakepkg_module = 'autodep'
sources = [
'library_depends.sh.in',
'library_provides.sh.in',
]
foreach src : sources
output_dir = join_paths(get_option('datadir'), 'makepkg', libmakepkg_module)
custom_target(
libmakepkg_module + '_' + src.underscorify(),
command : [ SCRIPT_EDITOR, '@INPUT@', '@OUTPUT@' ],
input : src,
output : '@BASENAME@',
install : true,
install_dir : output_dir)
endforeach

View File

@@ -3,7 +3,7 @@
# buildenv.sh - functions for altering the build environment before # buildenv.sh - functions for altering the build environment before
# compilation # compilation
# #
# Copyright (c) 2015-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2015-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# buildflags.sh - Clear user-specified buildflags if requested # buildflags.sh - Clear user-specified buildflags if requested
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -30,6 +30,6 @@ buildenv_functions+=('buildenv_buildflags')
buildenv_buildflags() { buildenv_buildflags() {
if check_option "buildflags" "n"; then if check_option "buildflags" "n"; then
unset CPPFLAGS CFLAGS DEBUG_CFLAGS CXXFLAGS DEBUG_CXXFLAGS LDFLAGS LTOFLAGS RUSTFLAGS DEBUG_RUSTFLAGS unset CPPFLAGS CFLAGS DEBUG_CFLAGS CXXFLAGS DEBUG_CXXFLAGS LDFLAGS RUSTFLAGS DEBUG_RUSTFLAGS
fi fi
} }

View File

@@ -4,7 +4,7 @@
# ccache - Cache compilations and reuse them to save time on repetitions # ccache - Cache compilations and reuse them to save time on repetitions
# distcc - Distribute compilation of C and C++ across machines # distcc - Distribute compilation of C and C++ across machines
# #
# Copyright (c) 2007-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2007-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -3,7 +3,7 @@
# debugflags.sh - Specify flags for building a package with debugging # debugflags.sh - Specify flags for building a package with debugging
# symbols # symbols
# #
# Copyright (c) 2012-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2012-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -29,10 +29,10 @@ source "$LIBRARY/util/option.sh"
buildenv_functions+=('buildenv_debugflags') buildenv_functions+=('buildenv_debugflags')
buildenv_debugflags() { buildenv_debugflags() {
if check_option "debug" "y" && ! check_option "buildflags" "n"; then if check_option "debug" "y"; then
DEBUG_CFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}" DEBUG_CFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}"
DEBUG_CXXFLAGS+=" -ffile-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}" DEBUG_CXXFLAGS+=" -fdebug-prefix-map=$srcdir=${DBGSRCDIR:-/usr/src/debug}"
DEBUG_RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}" DEBUG_RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}"
CFLAGS+=" $DEBUG_CFLAGS" CFLAGS+=" $DEBUG_CFLAGS"
CXXFLAGS+=" $DEBUG_CXXFLAGS" CXXFLAGS+=" $DEBUG_CXXFLAGS"
RUSTFLAGS+=" $DEBUG_RUSTFLAGS" RUSTFLAGS+=" $DEBUG_RUSTFLAGS"

View File

@@ -3,7 +3,7 @@
# lto.sh - Specify flags for building a package with link-time # lto.sh - Specify flags for building a package with link-time
# optimisation # optimisation
# #
# Copyright (c) 2021-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
@@ -30,9 +30,8 @@ build_options+=('lto')
buildenv_functions+=('buildenv_lto') buildenv_functions+=('buildenv_lto')
buildenv_lto() { buildenv_lto() {
if check_option "lto" "y" && ! check_option "buildflags" "n"; then if check_option "lto" "y"; then
CFLAGS+=" ${LTOFLAGS:--flto}" CFLAGS+=" -flto"
CXXFLAGS+=" ${LTOFLAGS:--flto}" CXXFLAGS+=" -flto"
LDFLAGS+=" ${LTOFLAGS:--flto}"
fi fi
} }

View File

@@ -2,7 +2,7 @@
# #
# makeflags.sh - Clear user-specified makeflags if requested # makeflags.sh - Clear user-specified makeflags if requested
# #
# Copyright (c) 2007-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2007-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# executable.sh - confirm presence of dependent executables # executable.sh - confirm presence of dependent executables
# #
# Copyright (c) 2018-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2018-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# ccache.sh - Confirm presence of ccache binary # ccache.sh - Confirm presence of ccache binary
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# checksum.sh - Confirm presence of binaries for checksum operations # checksum.sh - Confirm presence of binaries for checksum operations
# #
# Copyright (c) 2016-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2016-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -1,38 +0,0 @@
#!/usr/bin/bash
#
# debugedit.sh - Confirm presence of debugedit binary
#
# Copyright (c) 2022 Pacman Development Team <pacman-dev@lists.archlinux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
[[ -n "$LIBMAKEPKG_EXECUTABLE_DEBUGEDIT_SH" ]] && return
LIBMAKEPKG_EXECUTABLE_DEBUGEDIT_SH=1
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
source "$LIBRARY/util/message.sh"
source "$LIBRARY/util/option.sh"
executable_functions+=('executable_debugedit')
executable_debugedit() {
if check_option "debug" "y"; then
if ! type -p debugedit >/dev/null; then
error "$(gettext "Cannot find the %s binary required for including source files in debug packages.")" "debugedit"
return 1
fi
fi
}

View File

@@ -2,7 +2,7 @@
# #
# distcc.sh - Confirm presence of distcc binary # distcc.sh - Confirm presence of distcc binary
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# fakeroot.sh - Confirm presence of fakeroot binary # fakeroot.sh - Confirm presence of fakeroot binary
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# gpg.sh - Confirm presence of gpg binary # gpg.sh - Confirm presence of gpg binary
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# gzip.sh - Confirm presence of gzip binary # gzip.sh - Confirm presence of gzip binary
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -5,7 +5,6 @@ sources = [
'checksum.sh.in', 'checksum.sh.in',
'distcc.sh.in', 'distcc.sh.in',
'fakeroot.sh.in', 'fakeroot.sh.in',
'debugedit.sh.in',
'gpg.sh.in', 'gpg.sh.in',
'gzip.sh.in', 'gzip.sh.in',
'pacman.sh.in', 'pacman.sh.in',

View File

@@ -2,7 +2,7 @@
# #
# pacman.sh - Confirm presence of pacman binary # pacman.sh - Confirm presence of pacman binary
# #
# Copyright (c) 2012-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2012-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# strip.sh - Confirm presence of strip binary # strip.sh - Confirm presence of strip binary
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# sudo.sh - Confirm presence of sudo binary # sudo.sh - Confirm presence of sudo binary
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# vcs.sh - Confirm presence of binaries for VCS operations # vcs.sh - Confirm presence of binaries for VCS operations
# #
# Copyright (c) 2014-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2014-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View File

@@ -2,7 +2,7 @@
# #
# integrity.sh - functions relating to source integrity checking # integrity.sh - functions relating to source integrity checking
# #
# Copyright (c) 2011-2022 Pacman Development Team <pacman-dev@lists.archlinux.org> # Copyright (c) 2011-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

Some files were not shown because too many files have changed in this diff Show More