forked from mirrors/pacman
Compare commits
31 Commits
morganamil
...
morganamil
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
219941734a | ||
|
|
fe055bec1f | ||
|
|
ee31b4c12e | ||
|
|
cde562bb4d | ||
|
|
15eb65c839 | ||
|
|
40f59fd6ac | ||
|
|
3c68d11f3c | ||
|
|
2200dd8797 | ||
|
|
c7c280115f | ||
|
|
564fd18c9a | ||
|
|
5c55ef2db5 | ||
|
|
de5fb9ae2f | ||
|
|
d4b4d315aa | ||
|
|
97d127588e | ||
|
|
c301327ad5 | ||
|
|
841236a1c9 | ||
|
|
6ce85053c5 | ||
|
|
e877472509 | ||
|
|
2b4c022925 | ||
|
|
689223f40d | ||
|
|
8d48332069 | ||
|
|
a61c500557 | ||
|
|
8fa9a69683 | ||
|
|
1340b5336e | ||
|
|
2b1ca6c298 | ||
|
|
ef05b4e31e | ||
|
|
c7c88f880a | ||
|
|
753083d241 | ||
|
|
36d3d8401c | ||
|
|
ddcceb9314 | ||
|
|
0c701af590 |
@@ -16,22 +16,18 @@ default:
|
|||||||
python
|
python
|
||||||
fakeroot fakechroot
|
fakeroot fakechroot
|
||||||
meson
|
meson
|
||||||
artifacts:
|
|
||||||
when: always
|
|
||||||
paths:
|
|
||||||
- build/meson-logs/meson-log.txt
|
|
||||||
|
|
||||||
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 build
|
||||||
- ninja -C build
|
- ninja -C build
|
||||||
- fakechroot meson test -C build
|
- fakechroot meson test -C build
|
||||||
|
|
||||||
@@ -39,51 +35,50 @@ 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
|
||||||
|
|
||||||
#arch-valgrind:
|
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
|
||||||
|
|
||||||
@@ -98,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
|
||||||
|
|
||||||
@@ -114,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
250
.ycm_extra_conf.py
Normal file
250
.ycm_extra_conf.py
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: Unlicense
|
||||||
|
#
|
||||||
|
# Based on the template file provided by the 'YCM-Generator' project authored by
|
||||||
|
# Reuben D'Netto.
|
||||||
|
# Jiahui Xie has re-reformatted and expanded the original script in accordance
|
||||||
|
# to the requirements of the PEP 8 style guide and 'systemd' project,
|
||||||
|
# respectively.
|
||||||
|
#
|
||||||
|
# The original license is preserved as it is.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# This is free and unencumbered software released into the public domain.
|
||||||
|
#
|
||||||
|
# Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||||
|
# distribute this software, either in source code form or as a compiled
|
||||||
|
# binary, for any purpose, commercial or non-commercial, and by any
|
||||||
|
# means.
|
||||||
|
#
|
||||||
|
# In jurisdictions that recognize copyright laws, the author or authors
|
||||||
|
# of this software dedicate any and all copyright interest in the
|
||||||
|
# software to the public domain. We make this dedication for the benefit
|
||||||
|
# of the public at large and to the detriment of our heirs and
|
||||||
|
# successors. We intend this dedication to be an overt act of
|
||||||
|
# relinquishment in perpetuity of all present and future rights to this
|
||||||
|
# software under copyright law.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||||
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||||
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
# OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
#
|
||||||
|
# For more information, please refer to <http://unlicense.org/>
|
||||||
|
|
||||||
|
"""
|
||||||
|
YouCompleteMe configuration file tailored to support the 'meson' build system
|
||||||
|
used by the 'systemd' project.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import glob
|
||||||
|
import os
|
||||||
|
import ycm_core
|
||||||
|
|
||||||
|
|
||||||
|
SOURCE_EXTENSIONS = (".C", ".cpp", ".cxx", ".cc", ".c", ".m", ".mm")
|
||||||
|
HEADER_EXTENSIONS = (".H", ".h", ".hxx", ".hpp", ".hh")
|
||||||
|
|
||||||
|
|
||||||
|
def DirectoryOfThisScript():
|
||||||
|
"""
|
||||||
|
Return the absolute path of the parent directory containing this
|
||||||
|
script.
|
||||||
|
"""
|
||||||
|
return os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
def GuessBuildDirectory():
|
||||||
|
"""
|
||||||
|
Guess the build directory using the following heuristics:
|
||||||
|
|
||||||
|
1. Returns the current directory of this script plus 'build'
|
||||||
|
subdirectory in absolute path if this subdirectory exists.
|
||||||
|
|
||||||
|
2. Otherwise, probes whether there exists any directory
|
||||||
|
containing '.ninja_log' file two levels above the current directory;
|
||||||
|
returns this single directory only if there is one candidate.
|
||||||
|
"""
|
||||||
|
result = os.path.join(DirectoryOfThisScript(), "build")
|
||||||
|
|
||||||
|
if os.path.exists(result):
|
||||||
|
return result
|
||||||
|
|
||||||
|
result = glob.glob(os.path.join(DirectoryOfThisScript(),
|
||||||
|
"..", "..", "*", ".ninja_log"))
|
||||||
|
|
||||||
|
if not result:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
if 1 != len(result):
|
||||||
|
return ""
|
||||||
|
|
||||||
|
return os.path.split(result[0])[0]
|
||||||
|
|
||||||
|
|
||||||
|
def TraverseByDepth(root, include_extensions):
|
||||||
|
"""
|
||||||
|
Return a set of child directories of the 'root' containing file
|
||||||
|
extensions specified in 'include_extensions'.
|
||||||
|
|
||||||
|
NOTE:
|
||||||
|
1. The 'root' directory itself is excluded from the result set.
|
||||||
|
2. No subdirectories would be excluded if 'include_extensions' is left
|
||||||
|
to 'None'.
|
||||||
|
3. Each entry in 'include_extensions' must begin with string '.'.
|
||||||
|
"""
|
||||||
|
is_root = True
|
||||||
|
result = set()
|
||||||
|
# Perform a depth first top down traverse of the given directory tree.
|
||||||
|
for root_dir, subdirs, file_list in os.walk(root):
|
||||||
|
if not is_root:
|
||||||
|
# print("Relative Root: ", root_dir)
|
||||||
|
# print(subdirs)
|
||||||
|
if include_extensions:
|
||||||
|
get_ext = os.path.splitext
|
||||||
|
subdir_extensions = {
|
||||||
|
get_ext(f)[-1] for f in file_list if get_ext(f)[-1]
|
||||||
|
}
|
||||||
|
if subdir_extensions & include_extensions:
|
||||||
|
result.add(root_dir)
|
||||||
|
else:
|
||||||
|
result.add(root_dir)
|
||||||
|
else:
|
||||||
|
is_root = False
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
_project_src_dir = os.path.join(DirectoryOfThisScript(), "src")
|
||||||
|
_include_dirs_set = TraverseByDepth(_project_src_dir, frozenset({".h"}))
|
||||||
|
flags = [
|
||||||
|
"-x",
|
||||||
|
"c"
|
||||||
|
# The following flags are partially redundant due to the existence of
|
||||||
|
# 'compile_commands.json'.
|
||||||
|
# '-Wall',
|
||||||
|
# '-Wextra',
|
||||||
|
# '-Wfloat-equal',
|
||||||
|
# '-Wpointer-arith',
|
||||||
|
# '-Wshadow',
|
||||||
|
# '-std=gnu99',
|
||||||
|
]
|
||||||
|
|
||||||
|
for include_dir in _include_dirs_set:
|
||||||
|
flags.append("-I" + include_dir)
|
||||||
|
|
||||||
|
# Set this to the absolute path to the folder (NOT the file!) containing the
|
||||||
|
# compile_commands.json file to use that instead of 'flags'. See here for
|
||||||
|
# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html
|
||||||
|
#
|
||||||
|
# You can get CMake to generate this file for you by adding:
|
||||||
|
# set( CMAKE_EXPORT_COMPILE_COMMANDS 1 )
|
||||||
|
# to your CMakeLists.txt file.
|
||||||
|
#
|
||||||
|
# Most projects will NOT need to set this to anything; you can just change the
|
||||||
|
# 'flags' list of compilation flags. Notice that YCM itself uses that approach.
|
||||||
|
compilation_database_folder = GuessBuildDirectory()
|
||||||
|
|
||||||
|
if os.path.exists(compilation_database_folder):
|
||||||
|
database = ycm_core.CompilationDatabase(compilation_database_folder)
|
||||||
|
else:
|
||||||
|
database = None
|
||||||
|
|
||||||
|
|
||||||
|
def MakeRelativePathsInFlagsAbsolute(flags, working_directory):
|
||||||
|
"""
|
||||||
|
Iterate through 'flags' and replace the relative paths prefixed by
|
||||||
|
'-isystem', '-I', '-iquote', '--sysroot=' with absolute paths
|
||||||
|
start with 'working_directory'.
|
||||||
|
"""
|
||||||
|
if not working_directory:
|
||||||
|
return list(flags)
|
||||||
|
new_flags = []
|
||||||
|
make_next_absolute = False
|
||||||
|
path_flags = ["-isystem", "-I", "-iquote", "--sysroot="]
|
||||||
|
for flag in flags:
|
||||||
|
new_flag = flag
|
||||||
|
|
||||||
|
if make_next_absolute:
|
||||||
|
make_next_absolute = False
|
||||||
|
if not flag.startswith("/"):
|
||||||
|
new_flag = os.path.join(working_directory, flag)
|
||||||
|
|
||||||
|
for path_flag in path_flags:
|
||||||
|
if flag == path_flag:
|
||||||
|
make_next_absolute = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if flag.startswith(path_flag):
|
||||||
|
path = flag[len(path_flag):]
|
||||||
|
new_flag = path_flag + os.path.join(working_directory, path)
|
||||||
|
break
|
||||||
|
|
||||||
|
if new_flag:
|
||||||
|
new_flags.append(new_flag)
|
||||||
|
return new_flags
|
||||||
|
|
||||||
|
|
||||||
|
def IsHeaderFile(filename):
|
||||||
|
"""
|
||||||
|
Check whether 'filename' is considered as a header file.
|
||||||
|
"""
|
||||||
|
extension = os.path.splitext(filename)[1]
|
||||||
|
return extension in HEADER_EXTENSIONS
|
||||||
|
|
||||||
|
|
||||||
|
def GetCompilationInfoForFile(filename):
|
||||||
|
"""
|
||||||
|
Helper function to look up compilation info of 'filename' in the 'database'.
|
||||||
|
"""
|
||||||
|
# The compilation_commands.json file generated by CMake does not have
|
||||||
|
# entries for header files. So we do our best by asking the db for flags for
|
||||||
|
# a corresponding source file, if any. If one exists, the flags for that
|
||||||
|
# file should be good enough.
|
||||||
|
if not database:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if IsHeaderFile(filename):
|
||||||
|
basename = os.path.splitext(filename)[0]
|
||||||
|
for extension in SOURCE_EXTENSIONS:
|
||||||
|
replacement_file = basename + extension
|
||||||
|
if os.path.exists(replacement_file):
|
||||||
|
compilation_info = \
|
||||||
|
database.GetCompilationInfoForFile(replacement_file)
|
||||||
|
if compilation_info.compiler_flags_:
|
||||||
|
return compilation_info
|
||||||
|
return None
|
||||||
|
return database.GetCompilationInfoForFile(filename)
|
||||||
|
|
||||||
|
|
||||||
|
def FlagsForFile(filename, **kwargs):
|
||||||
|
"""
|
||||||
|
Callback function to be invoked by YouCompleteMe in order to get the
|
||||||
|
information necessary to compile 'filename'.
|
||||||
|
|
||||||
|
It returns a dictionary with a single element 'flags'. This element is a
|
||||||
|
list of compiler flags to pass to libclang for the file 'filename'.
|
||||||
|
"""
|
||||||
|
if database:
|
||||||
|
# Bear in mind that compilation_info.compiler_flags_ does NOT return a
|
||||||
|
# python list, but a "list-like" StringVec object
|
||||||
|
compilation_info = GetCompilationInfoForFile(filename)
|
||||||
|
if not compilation_info:
|
||||||
|
return None
|
||||||
|
|
||||||
|
final_flags = MakeRelativePathsInFlagsAbsolute(
|
||||||
|
compilation_info.compiler_flags_,
|
||||||
|
compilation_info.compiler_working_dir_)
|
||||||
|
|
||||||
|
else:
|
||||||
|
relative_to = DirectoryOfThisScript()
|
||||||
|
final_flags = MakeRelativePathsInFlagsAbsolute(flags, relative_to)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"flags": final_flags,
|
||||||
|
"do_cache": True
|
||||||
|
}
|
||||||
2
RELEASE
2
RELEASE
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ depends=('glibc')
|
|||||||
makedepends=('ed')
|
makedepends=('ed')
|
||||||
optdepends=('ed: for "patch -e" functionality')
|
optdepends=('ed: for "patch -e" functionality')
|
||||||
source=("ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig})
|
source=("ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz"{,.sig})
|
||||||
sha256sums=('9124ba46db0abd873d0995c2ca880e81252676bb6c03e0a37dfc5f608a9b0ceb'
|
md5sums=('e9ae5393426d3ad783a300a338c09b72'
|
||||||
'SKIP')
|
'SKIP')
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
cd "$srcdir/$pkgname-$pkgver"
|
cd "$srcdir/$pkgname-$pkgver"
|
||||||
|
|||||||
@@ -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=()'.
|
||||||
|
|
||||||
@@ -464,9 +480,6 @@ Currently makepkg supports the Bazaar, Git, Subversion, Fossil and Mercurial
|
|||||||
version control systems. For other version control systems, manual cloning of
|
version control systems. For other version control systems, manual cloning of
|
||||||
upstream repositories must be done in the `prepare()` function.
|
upstream repositories must be done in the `prepare()` function.
|
||||||
|
|
||||||
Some <<VCS,VCS Sources>> like Git support pinning the checkout by a checksum of
|
|
||||||
its content using deterministic export functionality like ``git archive''.
|
|
||||||
|
|
||||||
The source URL is divided into four components:
|
The source URL is divided into four components:
|
||||||
|
|
||||||
*directory*::
|
*directory*::
|
||||||
@@ -511,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]
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ Example PKGBUILD
|
|||||||
license=('PerlArtistic' 'GPL')
|
license=('PerlArtistic' 'GPL')
|
||||||
depends=('perl')
|
depends=('perl')
|
||||||
source=("http://search.cpan.org/CPAN/authors/id/S/SH/SHERZODR/Config-Simple-${pkgver}.tar.gz")
|
source=("http://search.cpan.org/CPAN/authors/id/S/SH/SHERZODR/Config-Simple-${pkgver}.tar.gz")
|
||||||
sha256sums=('dd9995706f0f9384a15ccffe116c3b6e22f42ba2e58d8f24ed03c4a0e386edb4')
|
md5sums=('f014aec54f0a1e2e880d317180fce502')
|
||||||
_distname="Config-Simple"
|
_distname="Config-Simple"
|
||||||
|
|
||||||
# template start; name=perl-module; version=1.0;
|
# template start; name=perl-module; version=1.0;
|
||||||
|
|||||||
@@ -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`".
|
||||||
|
|
||||||
@@ -146,9 +146,6 @@ Options
|
|||||||
*-C, \--cleanbuild*::
|
*-C, \--cleanbuild*::
|
||||||
Remove the $srcdir before building the package.
|
Remove the $srcdir before building the package.
|
||||||
|
|
||||||
*-D* <dir>, *\--dir* <dir> ::
|
|
||||||
Change to directory <dir> before reading the PKGBUILD or doing anything else.
|
|
||||||
|
|
||||||
*\--allsource*::
|
*\--allsource*::
|
||||||
Do not actually build the package, but build a source-only tarball that
|
Do not actually build the package, but build a source-only tarball that
|
||||||
includes all sources, including those that are normally downloaded via
|
includes all sources, including those that are normally downloaded via
|
||||||
@@ -290,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
|
||||||
|
|||||||
@@ -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).
|
|
||||||
|
|
||||||
*autodeps*;;
|
|
||||||
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 libraries 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
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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*::
|
||||||
|
|||||||
@@ -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[]
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -210,9 +210,14 @@ Transaction Options (apply to '-S', '-R' and '-U')
|
|||||||
dependencies are installed and there are no package conflicts in the
|
dependencies are installed and there are no package conflicts in the
|
||||||
system. Specify this option twice to skip all dependency checks.
|
system. Specify this option twice to skip all dependency checks.
|
||||||
|
|
||||||
|
*-n, \--nosave*::
|
||||||
|
Instructs pacman to ignore file backup designations. Normally, when a
|
||||||
|
file is removed from the system, the database is checked to see if the
|
||||||
|
file should be renamed with a '.pacsave' extension.
|
||||||
|
|
||||||
*\--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,15 +240,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, "%m" for
|
|
||||||
md5sum, "%n" for pkgname, "%p" for packager, "%v" for pkgver, "%l" for
|
|
||||||
location, "%r" for repository, "%s" for size, "%C" for checkdepends,
|
|
||||||
"%D" for depends, "%G" for groups, "%H" for conflicts, "%L" for
|
|
||||||
licenses, "%M" for makedepends, "%O" for optional depends, "%P" for
|
|
||||||
provides and "%R" for replaces.
|
|
||||||
Implies '\--print'.
|
|
||||||
|
|
||||||
|
|
||||||
Upgrade Options (apply to '-S' and '-U')[[UO]]
|
Upgrade Options (apply to '-S' and '-U')[[UO]]
|
||||||
@@ -263,6 +261,12 @@ Upgrade Options (apply to '-S' and '-U')[[UO]]
|
|||||||
as explicitly installed so it will not be removed by the '\--recursive'
|
as explicitly installed so it will not be removed by the '\--recursive'
|
||||||
remove operation.
|
remove operation.
|
||||||
|
|
||||||
|
*\--note*::
|
||||||
|
Add an install note to packages. This will only apply to targets explicitly
|
||||||
|
listed and not their dependencies. The note can be used to keep track of why
|
||||||
|
a package was installed or any other info of note. The note can later be
|
||||||
|
edited or removed with '\--D \--note' or '\--D \--rmnote' respectively.
|
||||||
|
|
||||||
*\--ignore* <package>::
|
*\--ignore* <package>::
|
||||||
Directs pacman to ignore upgrades of package even if there is one
|
Directs pacman to ignore upgrades of package even if there is one
|
||||||
available. Multiple packages can be specified by separating them
|
available. Multiple packages can be specified by separating them
|
||||||
@@ -276,6 +280,9 @@ Upgrade Options (apply to '-S' and '-U')[[UO]]
|
|||||||
*\--needed*::
|
*\--needed*::
|
||||||
Do not reinstall the targets that are already up-to-date.
|
Do not reinstall the targets that are already up-to-date.
|
||||||
|
|
||||||
|
*\--nokeep*::
|
||||||
|
Overwrite backup files when installing packages.
|
||||||
|
|
||||||
*\--overwrite* <glob>::
|
*\--overwrite* <glob>::
|
||||||
Bypass file conflict checks and overwrite conflicting files. If the
|
Bypass file conflict checks and overwrite conflicting files. If the
|
||||||
package that is about to be installed contains files that are already
|
package that is about to be installed contains files that are already
|
||||||
@@ -371,6 +378,9 @@ Query Options (apply to '-Q')[[QO]]
|
|||||||
replacements are not checked here. This option works best if the sync
|
replacements are not checked here. This option works best if the sync
|
||||||
database is refreshed using '-Sy'.
|
database is refreshed using '-Sy'.
|
||||||
|
|
||||||
|
*-w, \--backup*::
|
||||||
|
List all modified backup files owened by a given package. Multiple packages can
|
||||||
|
be specified on the command line. Pass twice to print all backup files.
|
||||||
|
|
||||||
Remove Options (apply to '-R')[[RO]]
|
Remove Options (apply to '-R')[[RO]]
|
||||||
------------------------------------
|
------------------------------------
|
||||||
@@ -379,11 +389,6 @@ Remove Options (apply to '-R')[[RO]]
|
|||||||
or more target packages. This operation is recursive and must be used
|
or more target packages. This operation is recursive and must be used
|
||||||
with care, since it can remove many potentially needed packages.
|
with care, since it can remove many potentially needed packages.
|
||||||
|
|
||||||
*-n, \--nosave*::
|
|
||||||
Instructs pacman to ignore file backup designations. Normally, when a
|
|
||||||
file is removed from the system, the database is checked to see if the
|
|
||||||
file should be renamed with a '.pacsave' extension.
|
|
||||||
|
|
||||||
*-s, \--recursive*::
|
*-s, \--recursive*::
|
||||||
Remove each target specified including all of their dependencies, provided
|
Remove each target specified including all of their dependencies, provided
|
||||||
that (A) they are not required by other packages; and (B) they were not
|
that (A) they are not required by other packages; and (B) they were not
|
||||||
@@ -456,11 +461,11 @@ Additional targets can also be specified manually, so that '-Su foo' will do a
|
|||||||
system upgrade and install/upgrade the "foo" package in the same operation.
|
system upgrade and install/upgrade the "foo" package in the same operation.
|
||||||
|
|
||||||
*-y, \--refresh*::
|
*-y, \--refresh*::
|
||||||
Download a fresh copy of the master package databases '(repo.db)' from the
|
Download a fresh copy of the master package database from the server(s)
|
||||||
server(s) defined in linkman:pacman.conf[5]. This should typically be used
|
defined in linkman:pacman.conf[5]. This should typically be used each time
|
||||||
each time you use '\--sysupgrade' or '-u'. Passing two '\--refresh' or '-y'
|
you use '\--sysupgrade' or '-u'. Passing two '\--refresh' or '-y' flags
|
||||||
flags will force a refresh of all package databases, even if they appear to
|
will force a refresh of all package databases, even if they appear to be
|
||||||
be up-to-date.
|
up-to-date.
|
||||||
|
|
||||||
|
|
||||||
Database Options (apply to '-D')[[QO]]
|
Database Options (apply to '-D')[[QO]]
|
||||||
@@ -475,6 +480,13 @@ Database Options (apply to '-D')[[QO]]
|
|||||||
package installed even when it was initially installed as a dependency
|
package installed even when it was initially installed as a dependency
|
||||||
of another package.
|
of another package.
|
||||||
|
|
||||||
|
*\--note*::
|
||||||
|
Add or edit a package's install note. The note can be used to keep track of why
|
||||||
|
a package was installed or any other info of note.
|
||||||
|
|
||||||
|
*\--rmnote*::
|
||||||
|
Remove a package's install note.
|
||||||
|
|
||||||
*-k, \--check*::
|
*-k, \--check*::
|
||||||
Check the local package database is internally consistent. This will
|
Check the local package database is internally consistent. This will
|
||||||
check all required files are present and that installed packages have
|
check all required files are present and that installed packages have
|
||||||
@@ -489,8 +501,8 @@ Database Options (apply to '-D')[[QO]]
|
|||||||
File Options (apply to '-F')[[FO]]
|
File Options (apply to '-F')[[FO]]
|
||||||
----------------------------------
|
----------------------------------
|
||||||
*-y, --refresh*::
|
*-y, --refresh*::
|
||||||
Download fresh package file databases '(repo.files)' from the server.
|
Download fresh package databases from the server. Use twice to force a
|
||||||
Use twice to force a refresh even if databases are up to date.
|
refresh even if databases are up to date.
|
||||||
|
|
||||||
*-l, \--list*::
|
*-l, \--list*::
|
||||||
List the files owned by the queried package.
|
List the files owned by the queried package.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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[]
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/hint/bash
|
|
||||||
#
|
|
||||||
# @sysconfdir@/makepkg.conf.d/rust.conf
|
|
||||||
#
|
|
||||||
|
|
||||||
#########################################################################
|
|
||||||
# RUST LANGUAGE SUPPORT
|
|
||||||
#########################################################################
|
|
||||||
#
|
|
||||||
#RUSTFLAGS="-C opt-level=2"
|
|
||||||
#DEBUG_RUSTFLAGS="-C debuginfo=2"
|
|
||||||
@@ -9,10 +9,10 @@
|
|||||||
#
|
#
|
||||||
#-- The download utilities that makepkg should use to acquire sources
|
#-- The download utilities that makepkg should use to acquire sources
|
||||||
# Format: 'protocol::agent'
|
# Format: 'protocol::agent'
|
||||||
DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
|
DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
|
||||||
'ftp::/usr/bin/curl -qgfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
|
'ftp::/usr/bin/curl -gqfC - --ftp-pasv --retry 3 --retry-delay 3 -o %o %u'
|
||||||
'http::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
|
'http::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
|
||||||
'https::/usr/bin/curl -qgb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
|
'https::/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o %o %u'
|
||||||
'rsync::/usr/bin/rsync --no-motd -z %u %o'
|
'rsync::/usr/bin/rsync --no-motd -z %u %o'
|
||||||
'scp::/usr/bin/scp -C %u %o')
|
'scp::/usr/bin/scp -C %u %o')
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
|
|||||||
|
|
||||||
#-- The package required by makepkg to download VCS sources
|
#-- The package required by makepkg to download VCS sources
|
||||||
# Format: 'protocol::package'
|
# Format: 'protocol::package'
|
||||||
VCSCLIENTS=('bzr::breezy'
|
VCSCLIENTS=('bzr::bzr'
|
||||||
'fossil::fossil'
|
'fossil::fossil'
|
||||||
'git::git'
|
'git::git'
|
||||||
'hg::mercurial'
|
'hg::mercurial'
|
||||||
@@ -41,12 +41,13 @@ CHOST="@CHOST@"
|
|||||||
#CFLAGS="-O2 -pipe"
|
#CFLAGS="-O2 -pipe"
|
||||||
#CXXFLAGS="-O2 -pipe"
|
#CXXFLAGS="-O2 -pipe"
|
||||||
#LDFLAGS=""
|
#LDFLAGS=""
|
||||||
#LTOFLAGS="-flto"
|
#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"
|
||||||
#-- Debugging flags
|
#-- Debugging flags
|
||||||
#DEBUG_CFLAGS="-g"
|
#DEBUG_CFLAGS="-g"
|
||||||
#DEBUG_CXXFLAGS="-g"
|
#DEBUG_CXXFLAGS="-g"
|
||||||
|
#DEBUG_RUSTFLAGS="-C debuginfo=2"
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
# BUILD ENVIRONMENT
|
# BUILD ENVIRONMENT
|
||||||
@@ -75,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
|
||||||
@@ -88,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)
|
||||||
@@ -108,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -431,8 +431,22 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
|
|||||||
|
|
||||||
ASSERT(trans != NULL, return -1);
|
ASSERT(trans != NULL, return -1);
|
||||||
|
|
||||||
|
|
||||||
|
if(_alpm_db_get_pkgfromcache(db, newpkg->name)) {
|
||||||
|
oldpkg = newpkg->oldpkg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set note on package only if it was explicitly added to transaction */
|
||||||
|
if(trans->note && newpkg->reason == ALPM_PKG_REASON_EXPLICIT) {
|
||||||
|
STRDUP(newpkg->note, trans->note,
|
||||||
|
RET_ERR(handle, ALPM_ERR_MEMORY, -1));
|
||||||
|
} else if(oldpkg && oldpkg->note) {
|
||||||
|
STRDUP(newpkg->note,oldpkg->note,
|
||||||
|
RET_ERR(handle, ALPM_ERR_MEMORY, -1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(oldpkg) {
|
||||||
/* see if this is an upgrade. if so, remove the old package first */
|
/* see if this is an upgrade. if so, remove the old package first */
|
||||||
if(_alpm_db_get_pkgfromcache(db, newpkg->name) && (oldpkg = newpkg->oldpkg)) {
|
|
||||||
int cmp = _alpm_pkg_compare_versions(newpkg, oldpkg);
|
int cmp = _alpm_pkg_compare_versions(newpkg, oldpkg);
|
||||||
if(cmp < 0) {
|
if(cmp < 0) {
|
||||||
log_msg = "downgrading";
|
log_msg = "downgrading";
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -101,26 +101,23 @@ typedef struct _alpm_handle_t alpm_handle_t;
|
|||||||
typedef struct _alpm_db_t alpm_db_t;
|
typedef struct _alpm_db_t alpm_db_t;
|
||||||
|
|
||||||
|
|
||||||
|
/** A Database file iterator
|
||||||
|
* @ingroup libalpm_databases
|
||||||
|
*/
|
||||||
|
typedef struct __alpm_db_files_t alpm_db_files_t;
|
||||||
|
|
||||||
/** A package.
|
/** A package.
|
||||||
*
|
*
|
||||||
* A package can be loaded from disk via \link alpm_pkg_load \endlink or retrieved from a database.
|
* A package can be loaded from disk via \link alpm_pkg_load \endlink or retrieved from a database.
|
||||||
* 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 +161,10 @@ 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);
|
||||||
|
|
||||||
|
/** Frees a file list */
|
||||||
|
void alpm_filelist_free(alpm_filelist_t *files);
|
||||||
|
|
||||||
/* End of libalpm_files */
|
/* End of libalpm_files */
|
||||||
/** @} */
|
/** @} */
|
||||||
@@ -600,10 +600,16 @@ typedef struct _alpm_depmissing_t {
|
|||||||
|
|
||||||
/** A conflict that has occurred between two packages. */
|
/** A conflict that has occurred between two packages. */
|
||||||
typedef struct _alpm_conflict_t {
|
typedef struct _alpm_conflict_t {
|
||||||
/** The first package */
|
/** Hash of the first package name
|
||||||
alpm_pkg_t *package1;
|
* (used internally to speed up conflict checks) */
|
||||||
/** The second package */
|
unsigned long package1_hash;
|
||||||
alpm_pkg_t *package2;
|
/** Hash of the second package name
|
||||||
|
* (used internally to speed up conflict checks) */
|
||||||
|
unsigned long package2_hash;
|
||||||
|
/** Name of the first package */
|
||||||
|
char *package1;
|
||||||
|
/** Name of the second package */
|
||||||
|
char *package2;
|
||||||
/** The conflict */
|
/** The conflict */
|
||||||
alpm_depend_t *reason;
|
alpm_depend_t *reason;
|
||||||
} alpm_conflict_t;
|
} alpm_conflict_t;
|
||||||
@@ -969,7 +975,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.
|
||||||
@@ -1116,7 +1122,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 {
|
||||||
@@ -1452,6 +1458,42 @@ int alpm_db_get_usage(alpm_db_t *db, int *usage);
|
|||||||
/* End of usage accessors */
|
/* End of usage accessors */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
/** @name File iterators
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Opens a handle to the db files iterator.
|
||||||
|
* @param db the db files to iterate over
|
||||||
|
* @return handle to the iterator
|
||||||
|
*/
|
||||||
|
alpm_db_files_t *alpm_db_files_open(alpm_db_t *db);
|
||||||
|
|
||||||
|
/** Goes to the next package.
|
||||||
|
* @param files handle to the file iterator
|
||||||
|
* @param pkgname stores the pkgname of the current package
|
||||||
|
* @return 0 on success, 1 if end of iterator, -1 on error
|
||||||
|
*/
|
||||||
|
int alpm_db_files_next(alpm_db_files_t *files, char** pkgname);
|
||||||
|
|
||||||
|
/** Loads the files for a package into a file list.
|
||||||
|
*
|
||||||
|
* This extends the file list as needed, reusing the memory alloced.
|
||||||
|
* You can reuse the same file list for calls to this function but
|
||||||
|
* the list should be freed with \link alpm_filelist_free alpm_filelist_free \endlink
|
||||||
|
* after use.
|
||||||
|
* @param files handle to the file iterator
|
||||||
|
* @param filelist the filelist to load files into
|
||||||
|
* @return 0 on success, -1 on error
|
||||||
|
*/
|
||||||
|
int alpm_db_files_load(alpm_db_files_t *files, alpm_filelist_t *filelist);
|
||||||
|
|
||||||
|
/** Close the db file iterator
|
||||||
|
* @param files handle to the file iterator
|
||||||
|
*/
|
||||||
|
void alpm_db_files_close(alpm_db_files_t *files);
|
||||||
|
|
||||||
|
/* End of file iterators */
|
||||||
|
/** @} */
|
||||||
|
|
||||||
/* End of libalpm_databases */
|
/* End of libalpm_databases */
|
||||||
/** @} */
|
/** @} */
|
||||||
@@ -1838,7 +1880,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 */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|
||||||
@@ -2443,6 +2485,12 @@ const char *alpm_pkg_get_desc(alpm_pkg_t *pkg);
|
|||||||
*/
|
*/
|
||||||
const char *alpm_pkg_get_url(alpm_pkg_t *pkg);
|
const char *alpm_pkg_get_url(alpm_pkg_t *pkg);
|
||||||
|
|
||||||
|
/** Returns the package note.
|
||||||
|
* @param pkg a pointer to package
|
||||||
|
* @return a reference to an internal string
|
||||||
|
*/
|
||||||
|
char *alpm_pkg_get_note(alpm_pkg_t *pkg);
|
||||||
|
|
||||||
/** Returns the build timestamp of the package.
|
/** Returns the build timestamp of the package.
|
||||||
* @param pkg a pointer to package
|
* @param pkg a pointer to package
|
||||||
* @return the timestamp of the build time
|
* @return the timestamp of the build time
|
||||||
@@ -2600,12 +2648,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
|
||||||
*/
|
*/
|
||||||
@@ -2627,6 +2669,15 @@ off_t alpm_pkg_download_size(alpm_pkg_t *newpkg);
|
|||||||
*/
|
*/
|
||||||
int alpm_pkg_set_reason(alpm_pkg_t *pkg, alpm_pkgreason_t reason);
|
int alpm_pkg_set_reason(alpm_pkg_t *pkg, alpm_pkgreason_t reason);
|
||||||
|
|
||||||
|
/** Set install note for a package in the local database.
|
||||||
|
* The provided package object must be from the local database or this method
|
||||||
|
* will fail. The write to the local database is performed immediately.
|
||||||
|
* @param pkg the package to edit
|
||||||
|
* @param note the new install note, null to remove a note
|
||||||
|
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||||
|
*/
|
||||||
|
int alpm_pkg_set_note(alpm_pkg_t *pkg, char *note);
|
||||||
|
|
||||||
|
|
||||||
/* End of libalpm_pkg_t accessors */
|
/* End of libalpm_pkg_t accessors */
|
||||||
/** @} */
|
/** @} */
|
||||||
@@ -2698,7 +2749,6 @@ int alpm_pkg_mtree_close(const alpm_pkg_t *pkg, struct archive *archive);
|
|||||||
/* End of mtree accessors */
|
/* End of mtree accessors */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|
||||||
/* End of libalpm_packages */
|
/* End of libalpm_packages */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
@@ -2724,7 +2774,8 @@ int alpm_pkg_mtree_close(const alpm_pkg_t *pkg, struct archive *archive);
|
|||||||
typedef enum _alpm_transflag_t {
|
typedef enum _alpm_transflag_t {
|
||||||
/** Ignore dependency checks. */
|
/** Ignore dependency checks. */
|
||||||
ALPM_TRANS_FLAG_NODEPS = 1,
|
ALPM_TRANS_FLAG_NODEPS = 1,
|
||||||
/* (1 << 1) flag can go here */
|
/** Don't keep backup files when installing packages. */
|
||||||
|
ALPM_TRANS_FLAG_NOKEEP = (1 << 1),
|
||||||
/** Delete files even if they are tagged as backup. */
|
/** Delete files even if they are tagged as backup. */
|
||||||
ALPM_TRANS_FLAG_NOSAVE = (1 << 2),
|
ALPM_TRANS_FLAG_NOSAVE = (1 << 2),
|
||||||
/** Ignore version numbers when checking dependencies. */
|
/** Ignore version numbers when checking dependencies. */
|
||||||
@@ -2776,6 +2827,16 @@ alpm_list_t *alpm_trans_get_add(alpm_handle_t *handle);
|
|||||||
*/
|
*/
|
||||||
alpm_list_t *alpm_trans_get_remove(alpm_handle_t *handle);
|
alpm_list_t *alpm_trans_get_remove(alpm_handle_t *handle);
|
||||||
|
|
||||||
|
/** Sets the install note for a transaction
|
||||||
|
*
|
||||||
|
* All target packages will gain the note, dependencies will not.
|
||||||
|
*
|
||||||
|
* @param handle the context handle
|
||||||
|
* @note the the note, may not contain new lines
|
||||||
|
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||||
|
*/
|
||||||
|
int alpm_trans_set_note(alpm_handle_t *handle, char *note);
|
||||||
|
|
||||||
/** Initialize the transaction.
|
/** Initialize the transaction.
|
||||||
* @param handle the context handle
|
* @param handle the context handle
|
||||||
* @param flags flags of the transaction (like nodeps, etc; see alpm_transflag_t)
|
* @param flags flags of the transaction (like nodeps, etc; see alpm_transflag_t)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -81,6 +81,12 @@ static const char *_cache_get_url(alpm_pkg_t *pkg)
|
|||||||
return pkg->url;
|
return pkg->url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *_cache_get_note(alpm_pkg_t *pkg)
|
||||||
|
{
|
||||||
|
LAZY_LOAD(INFRQ_DESC);
|
||||||
|
return pkg->note;
|
||||||
|
}
|
||||||
|
|
||||||
static alpm_time_t _cache_get_builddate(alpm_pkg_t *pkg)
|
static alpm_time_t _cache_get_builddate(alpm_pkg_t *pkg)
|
||||||
{
|
{
|
||||||
LAZY_LOAD(INFRQ_DESC);
|
LAZY_LOAD(INFRQ_DESC);
|
||||||
@@ -195,12 +201,6 @@ 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)
|
|
||||||
{
|
|
||||||
LAZY_LOAD(INFRQ_DESC);
|
|
||||||
return pkg->xdata;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open a package changelog for reading. Similar to fopen in functionality,
|
* Open a package changelog for reading. Similar to fopen in functionality,
|
||||||
* except that the returned 'file stream' is from the database.
|
* except that the returned 'file stream' is from the database.
|
||||||
@@ -336,6 +336,7 @@ static const struct pkg_operations local_pkg_ops = {
|
|||||||
.get_base = _cache_get_base,
|
.get_base = _cache_get_base,
|
||||||
.get_desc = _cache_get_desc,
|
.get_desc = _cache_get_desc,
|
||||||
.get_url = _cache_get_url,
|
.get_url = _cache_get_url,
|
||||||
|
.get_note = _cache_get_note,
|
||||||
.get_builddate = _cache_get_builddate,
|
.get_builddate = _cache_get_builddate,
|
||||||
.get_installdate = _cache_get_installdate,
|
.get_installdate = _cache_get_installdate,
|
||||||
.get_packager = _cache_get_packager,
|
.get_packager = _cache_get_packager,
|
||||||
@@ -355,7 +356,6 @@ 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,
|
|
||||||
|
|
||||||
.changelog_open = _cache_changelog_open,
|
.changelog_open = _cache_changelog_open,
|
||||||
.changelog_read = _cache_changelog_read,
|
.changelog_read = _cache_changelog_read,
|
||||||
@@ -759,6 +759,8 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
|
|||||||
READ_AND_STORE_ALL(info->groups);
|
READ_AND_STORE_ALL(info->groups);
|
||||||
} else if(strcmp(line, "%URL%") == 0) {
|
} else if(strcmp(line, "%URL%") == 0) {
|
||||||
READ_AND_STORE(info->url);
|
READ_AND_STORE(info->url);
|
||||||
|
} else if(strcmp(line, "%NOTE%") == 0) {
|
||||||
|
READ_AND_STORE(info->note);
|
||||||
} else if(strcmp(line, "%LICENSE%") == 0) {
|
} else if(strcmp(line, "%LICENSE%") == 0) {
|
||||||
READ_AND_STORE_ALL(info->licenses);
|
READ_AND_STORE_ALL(info->licenses);
|
||||||
} else if(strcmp(line, "%ARCH%") == 0) {
|
} else if(strcmp(line, "%ARCH%") == 0) {
|
||||||
@@ -811,18 +813,6 @@ 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) {
|
|
||||||
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(&info->xdata, pd)) {
|
|
||||||
_alpm_pkg_xdata_free(pd);
|
|
||||||
FREELIST(lines);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FREELIST(lines);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
@@ -1059,13 +1049,9 @@ 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->note) {
|
||||||
fputs("%XDATA%\n", fp);
|
fprintf(fp, "%%NOTE%%\n"
|
||||||
for(lp = info->xdata; lp; lp = lp->next) {
|
"%s\n\n", info->note);
|
||||||
alpm_pkg_xdata_t *pd = lp->data;
|
|
||||||
fprintf(fp, "%s=%s\n", pd->name, pd->value);
|
|
||||||
}
|
|
||||||
fputc('\n', fp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
@@ -1186,6 +1172,31 @@ int SYMEXPORT alpm_pkg_set_reason(alpm_pkg_t *pkg, alpm_pkgreason_t reason)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SYMEXPORT alpm_pkg_set_note(alpm_pkg_t *pkg, char *note)
|
||||||
|
{
|
||||||
|
ASSERT(pkg != NULL, return -1);
|
||||||
|
ASSERT(pkg->origin == ALPM_PKG_FROM_LOCALDB,
|
||||||
|
RET_ERR(pkg->handle, ALPM_ERR_WRONG_ARGS, -1));
|
||||||
|
ASSERT(pkg->origin_data.db == pkg->handle->db_local,
|
||||||
|
RET_ERR(pkg->handle, ALPM_ERR_WRONG_ARGS, -1));
|
||||||
|
|
||||||
|
_alpm_log(pkg->handle, ALPM_LOG_DEBUG,
|
||||||
|
"setting note for %s: %s\n", pkg->name, note);
|
||||||
|
LAZY_LOAD(INFRQ_DESC);
|
||||||
|
FREE(pkg->note);
|
||||||
|
if(note) {
|
||||||
|
ASSERT(!strchr(note, '\n'), RET_ERR(pkg->handle, ALPM_ERR_WRONG_ARGS, -1));
|
||||||
|
STRDUP(pkg->note, note,
|
||||||
|
RET_ERR(pkg->handle, ALPM_ERR_MEMORY, -1));
|
||||||
|
}
|
||||||
|
/* write DESC */
|
||||||
|
if(_alpm_local_db_write(pkg->handle->db_local, pkg, INFRQ_DESC)) {
|
||||||
|
RET_ERR(pkg->handle, ALPM_ERR_DB_WRITE, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct db_operations local_db_ops = {
|
static const struct db_operations local_db_ops = {
|
||||||
.validate = local_db_validate,
|
.validate = local_db_validate,
|
||||||
.populate = local_db_populate,
|
.populate = local_db_populate,
|
||||||
|
|||||||
@@ -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,10 @@ 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, "force") == 0) {
|
||||||
alpm_pkg_xdata_t *pd = _alpm_pkg_parse_xdata(ptr);
|
/* deprecated, skip it */
|
||||||
if(pd == NULL || !alpm_list_append(&newpkg->xdata, pd)) {
|
} else if(strcmp(key, "makepkgopt") == 0) {
|
||||||
_alpm_pkg_xdata_free(pd);
|
/* not used atm */
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
} 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 +651,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 +674,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 +723,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 +749,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);
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -566,8 +566,7 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(strcmp(filename, "desc") == 0 || strcmp(filename, "depends") == 0
|
if(strcmp(filename, "desc") == 0 || strcmp(filename, "depends") == 0) {
|
||||||
|| strcmp(filename, "files") == 0) {
|
|
||||||
int ret;
|
int ret;
|
||||||
while((ret = _alpm_archive_fgets(archive, &buf)) == ARCHIVE_OK) {
|
while((ret = _alpm_archive_fgets(archive, &buf)) == ARCHIVE_OK) {
|
||||||
char *line = buf.line;
|
char *line = buf.line;
|
||||||
@@ -636,48 +635,6 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
|
|||||||
READ_AND_SPLITDEP(pkg->conflicts);
|
READ_AND_SPLITDEP(pkg->conflicts);
|
||||||
} else if(strcmp(line, "%PROVIDES%") == 0) {
|
} else if(strcmp(line, "%PROVIDES%") == 0) {
|
||||||
READ_AND_SPLITDEP(pkg->provides);
|
READ_AND_SPLITDEP(pkg->provides);
|
||||||
} else if(strcmp(line, "%FILES%") == 0) {
|
|
||||||
/* TODO: this could lazy load if there is future demand */
|
|
||||||
size_t files_count = 0, files_size = 0;
|
|
||||||
alpm_file_t *files = NULL;
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
if(_alpm_archive_fgets(archive, &buf) != ARCHIVE_OK) {
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
line = buf.line;
|
|
||||||
if(_alpm_strip_newline(line, buf.real_line_size) == 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!_alpm_greedy_grow((void **)&files, &files_size,
|
|
||||||
(files_count ? (files_count + 1) * sizeof(alpm_file_t) : 8 * sizeof(alpm_file_t)))) {
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
STRDUP(files[files_count].name, line, goto error);
|
|
||||||
files_count++;
|
|
||||||
}
|
|
||||||
/* attempt to hand back any memory we don't need */
|
|
||||||
if(files_count > 0) {
|
|
||||||
REALLOC(files, sizeof(alpm_file_t) * files_count, (void)0);
|
|
||||||
} else {
|
|
||||||
FREE(files);
|
|
||||||
}
|
|
||||||
pkg->files.count = files_count;
|
|
||||||
pkg->files.files = 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) {
|
||||||
@@ -728,3 +685,152 @@ alpm_db_t *_alpm_db_register_sync(alpm_handle_t *handle, const char *treename,
|
|||||||
handle->dbs_sync = alpm_list_add(handle->dbs_sync, db);
|
handle->dbs_sync = alpm_list_add(handle->dbs_sync, db);
|
||||||
return db;
|
return db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int load_files(struct archive *archive, alpm_filelist_t *filelist)
|
||||||
|
{
|
||||||
|
struct archive_read_buffer buf = {0};
|
||||||
|
|
||||||
|
/* 512K for a line length seems reasonable */
|
||||||
|
buf.max_line_size = 512 * 1024;
|
||||||
|
|
||||||
|
_alpm_filelist_truncate(filelist);
|
||||||
|
|
||||||
|
int ret;
|
||||||
|
while((ret = _alpm_archive_fgets(archive, &buf)) == ARCHIVE_OK) {
|
||||||
|
char *line = buf.line;
|
||||||
|
if(_alpm_strip_newline(line, buf.real_line_size) == 0) {
|
||||||
|
/* length of stripped line was zero */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strcmp(line, "%FILES%") == 0) {
|
||||||
|
size_t files_size = 0;
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
if(_alpm_archive_fgets(archive, &buf) != ARCHIVE_OK) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
line = buf.line;
|
||||||
|
if(_alpm_strip_newline(line, buf.real_line_size) == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!_alpm_greedy_grow((void **)&filelist->files, &files_size,
|
||||||
|
(filelist->count ? (filelist->count + 1) * sizeof(alpm_file_t) : 8 * sizeof(alpm_file_t)))) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
STRDUP(filelist->files[filelist->count].name, line, goto error);
|
||||||
|
filelist->count++;
|
||||||
|
}
|
||||||
|
_alpm_filelist_sort(filelist);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(ret != ARCHIVE_EOF) {
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
alpm_db_files_t SYMEXPORT *alpm_db_files_open(alpm_db_t *db)
|
||||||
|
{
|
||||||
|
const char *dbpath;
|
||||||
|
int fd;
|
||||||
|
struct stat buf;
|
||||||
|
struct archive *archive;
|
||||||
|
alpm_db_files_t *files = NULL;
|
||||||
|
|
||||||
|
ASSERT(db != NULL, return NULL);
|
||||||
|
|
||||||
|
dbpath = _alpm_db_path(db);
|
||||||
|
if(!dbpath) {
|
||||||
|
/* pm_errno set in _alpm_db_path() */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(db->status & DB_STATUS_INVALID || db->status & DB_STATUS_MISSING) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
fd = _alpm_open_archive(db->handle, dbpath, &buf,
|
||||||
|
&archive, ALPM_ERR_DB_OPEN);
|
||||||
|
if(fd < 0) {
|
||||||
|
db->status &= ~DB_STATUS_VALID;
|
||||||
|
db->status |= DB_STATUS_INVALID;
|
||||||
|
_alpm_archive_read_free(archive);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
MALLOC(files, sizeof(alpm_db_files_t), RET_ERR(db->handle, ALPM_ERR_MEMORY, NULL));
|
||||||
|
files->archive = archive;
|
||||||
|
files->fd = fd;
|
||||||
|
files->db = db;
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SYMEXPORT alpm_db_files_next(alpm_db_files_t *files, char** pkgname)
|
||||||
|
{
|
||||||
|
struct archive_entry *entry;
|
||||||
|
const char *entryname;
|
||||||
|
int archive_ret;
|
||||||
|
char *filename;
|
||||||
|
|
||||||
|
ASSERT(files != NULL, return -1);
|
||||||
|
ASSERT(pkgname != NULL, return -1);
|
||||||
|
|
||||||
|
while((archive_ret = archive_read_next_header(files->archive, &entry)) == ARCHIVE_OK) {
|
||||||
|
mode_t mode = archive_entry_mode(entry);
|
||||||
|
if(!S_ISDIR(mode)) {
|
||||||
|
entryname = archive_entry_pathname(entry);
|
||||||
|
if(entryname == NULL) {
|
||||||
|
_alpm_log(files->db->handle, ALPM_LOG_DEBUG,
|
||||||
|
"invalid archive entry provided to alpm_db_files_next, skipping\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(_alpm_splitname(entryname, pkgname, NULL, NULL) != 0) {
|
||||||
|
_alpm_log(files->db->handle, ALPM_LOG_ERROR,
|
||||||
|
_("invalid name for database entry '%s'\n"), entryname);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
filename = strrchr(entryname, '/');
|
||||||
|
filename++;
|
||||||
|
|
||||||
|
/* we only want to read the file list */
|
||||||
|
if(filename && strcmp(filename, "files") == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(archive_ret != ARCHIVE_EOF) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int SYMEXPORT alpm_db_files_load(alpm_db_files_t *files, alpm_filelist_t *filelist)
|
||||||
|
{
|
||||||
|
ASSERT(files != NULL, return -1);
|
||||||
|
ASSERT(filelist != NULL, return -1);
|
||||||
|
|
||||||
|
_alpm_filelist_truncate(filelist);
|
||||||
|
if(load_files(files->archive, filelist) != 0) {
|
||||||
|
_alpm_log(files->db->handle, ALPM_LOG_ERROR,
|
||||||
|
_("could not parse package description file '%s' from db '%s'\n"),
|
||||||
|
"files", files->db->treename);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SYMEXPORT alpm_db_files_close(alpm_db_files_t *files)
|
||||||
|
{
|
||||||
|
ASSERT(files != NULL, return);
|
||||||
|
_alpm_archive_read_free(files->archive);
|
||||||
|
close(files->fd);
|
||||||
|
free(files);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -50,8 +50,10 @@ static alpm_conflict_t *conflict_new(alpm_pkg_t *pkg1, alpm_pkg_t *pkg2,
|
|||||||
|
|
||||||
CALLOC(conflict, 1, sizeof(alpm_conflict_t), return NULL);
|
CALLOC(conflict, 1, sizeof(alpm_conflict_t), return NULL);
|
||||||
|
|
||||||
ASSERT(_alpm_pkg_dup(pkg1, &conflict->package1) == 0, goto error);
|
conflict->package1_hash = pkg1->name_hash;
|
||||||
ASSERT(_alpm_pkg_dup(pkg2, &conflict->package2) == 0, goto error);
|
conflict->package2_hash = pkg2->name_hash;
|
||||||
|
STRDUP(conflict->package1, pkg1->name, goto error);
|
||||||
|
STRDUP(conflict->package2, pkg2->name, goto error);
|
||||||
conflict->reason = reason;
|
conflict->reason = reason;
|
||||||
|
|
||||||
return conflict;
|
return conflict;
|
||||||
@@ -64,9 +66,8 @@ error:
|
|||||||
void SYMEXPORT alpm_conflict_free(alpm_conflict_t *conflict)
|
void SYMEXPORT alpm_conflict_free(alpm_conflict_t *conflict)
|
||||||
{
|
{
|
||||||
ASSERT(conflict != NULL, return);
|
ASSERT(conflict != NULL, return);
|
||||||
_alpm_pkg_free(conflict->package1);
|
FREE(conflict->package2);
|
||||||
_alpm_pkg_free(conflict->package2);
|
FREE(conflict->package1);
|
||||||
|
|
||||||
FREE(conflict);
|
FREE(conflict);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,8 +79,10 @@ alpm_conflict_t *_alpm_conflict_dup(const alpm_conflict_t *conflict)
|
|||||||
alpm_conflict_t *newconflict;
|
alpm_conflict_t *newconflict;
|
||||||
CALLOC(newconflict, 1, sizeof(alpm_conflict_t), return NULL);
|
CALLOC(newconflict, 1, sizeof(alpm_conflict_t), return NULL);
|
||||||
|
|
||||||
ASSERT(_alpm_pkg_dup(conflict->package1, &newconflict->package1) == 0, goto error);
|
newconflict->package1_hash = conflict->package1_hash;
|
||||||
ASSERT(_alpm_pkg_dup(conflict->package2, &newconflict->package2) == 0, goto error);
|
newconflict->package2_hash = conflict->package2_hash;
|
||||||
|
STRDUP(newconflict->package1, conflict->package1, goto error);
|
||||||
|
STRDUP(newconflict->package2, conflict->package2, goto error);
|
||||||
newconflict->reason = conflict->reason;
|
newconflict->reason = conflict->reason;
|
||||||
|
|
||||||
return newconflict;
|
return newconflict;
|
||||||
@@ -102,10 +105,10 @@ static int conflict_isin(alpm_conflict_t *needle, alpm_list_t *haystack)
|
|||||||
alpm_list_t *i;
|
alpm_list_t *i;
|
||||||
for(i = haystack; i; i = i->next) {
|
for(i = haystack; i; i = i->next) {
|
||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
if(needle->package1->name_hash == conflict->package1->name_hash
|
if(needle->package1_hash == conflict->package1_hash
|
||||||
&& needle->package2->name_hash == conflict->package2->name_hash
|
&& needle->package2_hash == conflict->package2_hash
|
||||||
&& strcmp(needle->package1->name, conflict->package1->name) == 0
|
&& strcmp(needle->package1, conflict->package1) == 0
|
||||||
&& strcmp(needle->package2->name, conflict->package2->name) == 0) {
|
&& strcmp(needle->package2, conflict->package2) == 0) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -411,6 +411,7 @@ int _alpm_db_search(alpm_db_t *db, const alpm_list_t *needles,
|
|||||||
const char *matched = NULL;
|
const char *matched = NULL;
|
||||||
const char *name = pkg->name;
|
const char *name = pkg->name;
|
||||||
const char *desc = alpm_pkg_get_desc(pkg);
|
const char *desc = alpm_pkg_get_desc(pkg);
|
||||||
|
const char *note = alpm_pkg_get_note(pkg);
|
||||||
|
|
||||||
/* check name as regex AND as plain text */
|
/* check name as regex AND as plain text */
|
||||||
if(name && (regexec(®, name, 0, 0, 0) == 0 || strstr(name, targ))) {
|
if(name && (regexec(®, name, 0, 0, 0) == 0 || strstr(name, targ))) {
|
||||||
@@ -420,6 +421,11 @@ int _alpm_db_search(alpm_db_t *db, const alpm_list_t *needles,
|
|||||||
else if(desc && regexec(®, desc, 0, 0, 0) == 0) {
|
else if(desc && regexec(®, desc, 0, 0, 0) == 0) {
|
||||||
matched = desc;
|
matched = desc;
|
||||||
}
|
}
|
||||||
|
/* check note */
|
||||||
|
else if(note && regexec(®, note, 0, 0, 0) == 0) {
|
||||||
|
matched = note;
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO: should we be doing this, and should we print something
|
/* TODO: should we be doing this, and should we print something
|
||||||
* differently when we do match it since it isn't currently printed? */
|
* differently when we do match it since it isn't currently printed? */
|
||||||
if(!matched) {
|
if(!matched) {
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -61,6 +61,13 @@ struct db_operations {
|
|||||||
void (*unregister) (alpm_db_t *);
|
void (*unregister) (alpm_db_t *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Database files iterator */
|
||||||
|
struct __alpm_db_files_t {
|
||||||
|
struct archive *archive;
|
||||||
|
int fd;
|
||||||
|
alpm_db_t *db;
|
||||||
|
};
|
||||||
|
|
||||||
/* Database */
|
/* Database */
|
||||||
struct _alpm_db_t {
|
struct _alpm_db_t {
|
||||||
alpm_handle_t *handle;
|
alpm_handle_t *handle;
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,9 +427,6 @@ static int curl_retry_next_server(CURLM *curlm, CURL *curl, struct dload_payload
|
|||||||
len = strlen(server) + strlen(payload->filepath) + 2;
|
len = strlen(server) + strlen(payload->filepath) + 2;
|
||||||
MALLOC(payload->fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
|
MALLOC(payload->fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
|
||||||
snprintf(payload->fileurl, len, "%s/%s", server, payload->filepath);
|
snprintf(payload->fileurl, len, "%s/%s", server, payload->filepath);
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG,
|
|
||||||
"%s: retrying from %s\n",
|
|
||||||
payload->remote_name, payload->fileurl);
|
|
||||||
|
|
||||||
|
|
||||||
fflush(payload->localf);
|
fflush(payload->localf);
|
||||||
@@ -473,9 +468,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,11 +486,12 @@ 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;
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: %s returned result %d from transfer\n",
|
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: curl returned result %d from transfer\n",
|
||||||
payload->remote_name, "curl", curlerr);
|
payload->remote_name, curlerr);
|
||||||
|
|
||||||
/* was it a success? */
|
/* was it a success? */
|
||||||
switch(curlerr) {
|
switch(curlerr) {
|
||||||
@@ -917,7 +914,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -145,3 +145,17 @@ void _alpm_filelist_sort(alpm_filelist_t *filelist)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _alpm_filelist_truncate(alpm_filelist_t *files)
|
||||||
|
{
|
||||||
|
for(size_t i = 0; i < files->count; i++) {
|
||||||
|
FREE(files->files[i].name);
|
||||||
|
}
|
||||||
|
files->count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SYMEXPORT alpm_filelist_free(alpm_filelist_t *files)
|
||||||
|
{
|
||||||
|
_alpm_filelist_truncate(files);
|
||||||
|
free(files->files);
|
||||||
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -28,5 +28,6 @@ alpm_list_t *_alpm_filelist_intersection(alpm_filelist_t *filesA,
|
|||||||
alpm_filelist_t *filesB);
|
alpm_filelist_t *filesB);
|
||||||
|
|
||||||
void _alpm_filelist_sort(alpm_filelist_t *filelist);
|
void _alpm_filelist_sort(alpm_filelist_t *filelist);
|
||||||
|
void _alpm_filelist_truncate(alpm_filelist_t *filelist);
|
||||||
|
|
||||||
#endif /* ALPM_FILELIST_H */
|
#endif /* ALPM_FILELIST_H */
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -57,7 +57,7 @@ int SYMEXPORT alpm_pkg_checkmd5sum(alpm_pkg_t *pkg)
|
|||||||
ASSERT(pkg->origin == ALPM_PKG_FROM_SYNCDB,
|
ASSERT(pkg->origin == ALPM_PKG_FROM_SYNCDB,
|
||||||
RET_ERR(pkg->handle, ALPM_ERR_WRONG_ARGS, -1));
|
RET_ERR(pkg->handle, ALPM_ERR_WRONG_ARGS, -1));
|
||||||
|
|
||||||
fpath = _alpm_filecache_find(pkg->handle, pkg->filename);
|
fpath = _alpm_cache_find_pkg(pkg, 0);
|
||||||
|
|
||||||
retval = _alpm_test_checksum(fpath, pkg->md5sum, ALPM_PKG_VALIDATION_MD5SUM);
|
retval = _alpm_test_checksum(fpath, pkg->md5sum, ALPM_PKG_VALIDATION_MD5SUM);
|
||||||
|
|
||||||
@@ -78,6 +78,7 @@ int SYMEXPORT alpm_pkg_checkmd5sum(alpm_pkg_t *pkg)
|
|||||||
static const char *_pkg_get_base(alpm_pkg_t *pkg) { return pkg->base; }
|
static const char *_pkg_get_base(alpm_pkg_t *pkg) { return pkg->base; }
|
||||||
static const char *_pkg_get_desc(alpm_pkg_t *pkg) { return pkg->desc; }
|
static const char *_pkg_get_desc(alpm_pkg_t *pkg) { return pkg->desc; }
|
||||||
static const char *_pkg_get_url(alpm_pkg_t *pkg) { return pkg->url; }
|
static const char *_pkg_get_url(alpm_pkg_t *pkg) { return pkg->url; }
|
||||||
|
static char *_pkg_get_note(alpm_pkg_t *pkg) { return pkg->note; }
|
||||||
static alpm_time_t _pkg_get_builddate(alpm_pkg_t *pkg) { return pkg->builddate; }
|
static alpm_time_t _pkg_get_builddate(alpm_pkg_t *pkg) { return pkg->builddate; }
|
||||||
static alpm_time_t _pkg_get_installdate(alpm_pkg_t *pkg) { return pkg->installdate; }
|
static alpm_time_t _pkg_get_installdate(alpm_pkg_t *pkg) { return pkg->installdate; }
|
||||||
static const char *_pkg_get_packager(alpm_pkg_t *pkg) { return pkg->packager; }
|
static const char *_pkg_get_packager(alpm_pkg_t *pkg) { return pkg->packager; }
|
||||||
@@ -98,7 +99,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 void *_pkg_changelog_open(alpm_pkg_t UNUSED *pkg)
|
static void *_pkg_changelog_open(alpm_pkg_t UNUSED *pkg)
|
||||||
{
|
{
|
||||||
@@ -143,6 +144,7 @@ const struct pkg_operations default_pkg_ops = {
|
|||||||
.get_base = _pkg_get_base,
|
.get_base = _pkg_get_base,
|
||||||
.get_desc = _pkg_get_desc,
|
.get_desc = _pkg_get_desc,
|
||||||
.get_url = _pkg_get_url,
|
.get_url = _pkg_get_url,
|
||||||
|
.get_note = _pkg_get_note,
|
||||||
.get_builddate = _pkg_get_builddate,
|
.get_builddate = _pkg_get_builddate,
|
||||||
.get_installdate = _pkg_get_installdate,
|
.get_installdate = _pkg_get_installdate,
|
||||||
.get_packager = _pkg_get_packager,
|
.get_packager = _pkg_get_packager,
|
||||||
@@ -163,7 +165,6 @@ 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,
|
|
||||||
|
|
||||||
.changelog_open = _pkg_changelog_open,
|
.changelog_open = _pkg_changelog_open,
|
||||||
.changelog_read = _pkg_changelog_read,
|
.changelog_read = _pkg_changelog_read,
|
||||||
@@ -196,6 +197,7 @@ const char SYMEXPORT *alpm_pkg_get_base(alpm_pkg_t *pkg)
|
|||||||
alpm_handle_t SYMEXPORT *alpm_pkg_get_handle(alpm_pkg_t *pkg)
|
alpm_handle_t SYMEXPORT *alpm_pkg_get_handle(alpm_pkg_t *pkg)
|
||||||
{
|
{
|
||||||
ASSERT(pkg != NULL, return NULL);
|
ASSERT(pkg != NULL, return NULL);
|
||||||
|
pkg->handle->pm_errno = ALPM_ERR_OK;
|
||||||
return pkg->handle;
|
return pkg->handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,6 +236,13 @@ const char SYMEXPORT *alpm_pkg_get_url(alpm_pkg_t *pkg)
|
|||||||
return pkg->ops->get_url(pkg);
|
return pkg->ops->get_url(pkg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char SYMEXPORT *alpm_pkg_get_note(alpm_pkg_t *pkg)
|
||||||
|
{
|
||||||
|
ASSERT(pkg != NULL, return NULL);
|
||||||
|
pkg->handle->pm_errno = ALPM_ERR_OK;
|
||||||
|
return pkg->ops->get_note(pkg);
|
||||||
|
}
|
||||||
|
|
||||||
alpm_time_t SYMEXPORT alpm_pkg_get_builddate(alpm_pkg_t *pkg)
|
alpm_time_t SYMEXPORT alpm_pkg_get_builddate(alpm_pkg_t *pkg)
|
||||||
{
|
{
|
||||||
ASSERT(pkg != NULL, return -1);
|
ASSERT(pkg != NULL, return -1);
|
||||||
@@ -291,7 +300,7 @@ int SYMEXPORT alpm_pkg_get_sig(alpm_pkg_t *pkg, unsigned char **sig, size_t *sig
|
|||||||
alpm_errno_t err;
|
alpm_errno_t err;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
pkgpath = _alpm_filecache_find(pkg->handle, pkg->filename);
|
pkgpath = _alpm_cache_find_pkg(pkg, 0);
|
||||||
if(!pkgpath) {
|
if(!pkgpath) {
|
||||||
GOTO_ERR(pkg->handle, ALPM_ERR_PKG_NOT_FOUND, cleanup);
|
GOTO_ERR(pkg->handle, ALPM_ERR_PKG_NOT_FOUND, cleanup);
|
||||||
}
|
}
|
||||||
@@ -487,13 +496,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)
|
||||||
{
|
{
|
||||||
@@ -625,6 +627,7 @@ int _alpm_pkg_dup(alpm_pkg_t *pkg, alpm_pkg_t **new_ptr)
|
|||||||
STRDUP(newpkg->version, pkg->version, goto cleanup);
|
STRDUP(newpkg->version, pkg->version, goto cleanup);
|
||||||
STRDUP(newpkg->desc, pkg->desc, goto cleanup);
|
STRDUP(newpkg->desc, pkg->desc, goto cleanup);
|
||||||
STRDUP(newpkg->url, pkg->url, goto cleanup);
|
STRDUP(newpkg->url, pkg->url, goto cleanup);
|
||||||
|
STRDUP(newpkg->note, pkg->note, goto cleanup);
|
||||||
newpkg->builddate = pkg->builddate;
|
newpkg->builddate = pkg->builddate;
|
||||||
newpkg->installdate = pkg->installdate;
|
newpkg->installdate = pkg->installdate;
|
||||||
STRDUP(newpkg->packager, pkg->packager, goto cleanup);
|
STRDUP(newpkg->packager, pkg->packager, goto cleanup);
|
||||||
@@ -686,30 +689,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) {
|
||||||
@@ -722,6 +701,7 @@ void _alpm_pkg_free(alpm_pkg_t *pkg)
|
|||||||
FREE(pkg->version);
|
FREE(pkg->version);
|
||||||
FREE(pkg->desc);
|
FREE(pkg->desc);
|
||||||
FREE(pkg->url);
|
FREE(pkg->url);
|
||||||
|
FREE(pkg->note);
|
||||||
FREE(pkg->packager);
|
FREE(pkg->packager);
|
||||||
FREE(pkg->md5sum);
|
FREE(pkg->md5sum);
|
||||||
FREE(pkg->sha256sum);
|
FREE(pkg->sha256sum);
|
||||||
@@ -740,8 +720,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);
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -46,6 +46,7 @@ struct pkg_operations {
|
|||||||
const char *(*get_base) (alpm_pkg_t *);
|
const char *(*get_base) (alpm_pkg_t *);
|
||||||
const char *(*get_desc) (alpm_pkg_t *);
|
const char *(*get_desc) (alpm_pkg_t *);
|
||||||
const char *(*get_url) (alpm_pkg_t *);
|
const char *(*get_url) (alpm_pkg_t *);
|
||||||
|
char *(*get_note) (alpm_pkg_t *);
|
||||||
alpm_time_t (*get_builddate) (alpm_pkg_t *);
|
alpm_time_t (*get_builddate) (alpm_pkg_t *);
|
||||||
alpm_time_t (*get_installdate) (alpm_pkg_t *);
|
alpm_time_t (*get_installdate) (alpm_pkg_t *);
|
||||||
const char *(*get_packager) (alpm_pkg_t *);
|
const char *(*get_packager) (alpm_pkg_t *);
|
||||||
@@ -67,8 +68,6 @@ struct pkg_operations {
|
|||||||
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_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 *);
|
||||||
int (*changelog_close) (const alpm_pkg_t *, void *);
|
int (*changelog_close) (const alpm_pkg_t *, void *);
|
||||||
@@ -95,6 +94,7 @@ struct _alpm_pkg_t {
|
|||||||
char *version;
|
char *version;
|
||||||
char *desc;
|
char *desc;
|
||||||
char *url;
|
char *url;
|
||||||
|
char *note;
|
||||||
char *packager;
|
char *packager;
|
||||||
char *md5sum;
|
char *md5sum;
|
||||||
char *sha256sum;
|
char *sha256sum;
|
||||||
@@ -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 */
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -575,7 +575,9 @@ static int should_skip_file(alpm_handle_t *handle,
|
|||||||
{
|
{
|
||||||
return _alpm_fnmatch_patterns(handle->noupgrade, path) == 0
|
return _alpm_fnmatch_patterns(handle->noupgrade, path) == 0
|
||||||
|| alpm_list_find_str(handle->trans->skip_remove, path)
|
|| alpm_list_find_str(handle->trans->skip_remove, path)
|
||||||
|| (newpkg && _alpm_needbackup(path, newpkg)
|
|| (!(handle->trans->flags & ALPM_TRANS_FLAG_NOKEEP)
|
||||||
|
&& newpkg
|
||||||
|
&& _alpm_needbackup(path, newpkg)
|
||||||
&& alpm_filelist_contains(alpm_pkg_get_files(newpkg), path));
|
&& alpm_filelist_contains(alpm_pkg_get_files(newpkg), path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -323,7 +323,7 @@ static int compute_download_size(alpm_pkg_t *newpkg)
|
|||||||
|
|
||||||
ASSERT(newpkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1));
|
ASSERT(newpkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1));
|
||||||
fname = newpkg->filename;
|
fname = newpkg->filename;
|
||||||
fpath = _alpm_filecache_find(handle, fname);
|
fpath = _alpm_cache_find_pkg(newpkg, 0);
|
||||||
|
|
||||||
/* downloaded file exists, so there's nothing to grab */
|
/* downloaded file exists, so there's nothing to grab */
|
||||||
if(fpath) {
|
if(fpath) {
|
||||||
@@ -333,7 +333,7 @@ static int compute_download_size(alpm_pkg_t *newpkg)
|
|||||||
|
|
||||||
CALLOC(fnamepart, strlen(fname) + 6, sizeof(char), return -1);
|
CALLOC(fnamepart, strlen(fname) + 6, sizeof(char), return -1);
|
||||||
sprintf(fnamepart, "%s.part", fname);
|
sprintf(fnamepart, "%s.part", fname);
|
||||||
fpath = _alpm_filecache_find(handle, fnamepart);
|
fpath = _alpm_cache_find_pkg(newpkg, 1);
|
||||||
if(fpath) {
|
if(fpath) {
|
||||||
struct stat st;
|
struct stat st;
|
||||||
if(stat(fpath, &st) == 0) {
|
if(stat(fpath, &st) == 0) {
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -517,23 +517,21 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
|
|
||||||
for(i = deps; i; i = i->next) {
|
for(i = deps; i; i = i->next) {
|
||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
const char *name1 = conflict->package1->name;
|
|
||||||
const char *name2 = conflict->package2->name;
|
|
||||||
alpm_pkg_t *rsync, *sync, *sync1, *sync2;
|
alpm_pkg_t *rsync, *sync, *sync1, *sync2;
|
||||||
|
|
||||||
/* have we already removed one of the conflicting targets? */
|
/* have we already removed one of the conflicting targets? */
|
||||||
sync1 = alpm_pkg_find(trans->add, name1);
|
sync1 = alpm_pkg_find(trans->add, conflict->package1);
|
||||||
sync2 = alpm_pkg_find(trans->add, name2);
|
sync2 = alpm_pkg_find(trans->add, conflict->package2);
|
||||||
if(!sync1 || !sync2) {
|
if(!sync1 || !sync2) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "conflicting packages in the sync list: '%s' <-> '%s'\n",
|
_alpm_log(handle, ALPM_LOG_DEBUG, "conflicting packages in the sync list: '%s' <-> '%s'\n",
|
||||||
name1, name2);
|
conflict->package1, conflict->package2);
|
||||||
|
|
||||||
/* if sync1 provides sync2, we remove sync2 from the targets, and vice versa */
|
/* if sync1 provides sync2, we remove sync2 from the targets, and vice versa */
|
||||||
alpm_depend_t *dep1 = alpm_dep_from_string(name1);
|
alpm_depend_t *dep1 = alpm_dep_from_string(conflict->package1);
|
||||||
alpm_depend_t *dep2 = alpm_dep_from_string(name2);
|
alpm_depend_t *dep2 = alpm_dep_from_string(conflict->package2);
|
||||||
if(_alpm_depcmp(sync1, dep2)) {
|
if(_alpm_depcmp(sync1, dep2)) {
|
||||||
rsync = sync2;
|
rsync = sync2;
|
||||||
sync = sync1;
|
sync = sync1;
|
||||||
@@ -561,8 +559,8 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
|
|
||||||
/* Prints warning */
|
/* Prints warning */
|
||||||
_alpm_log(handle, ALPM_LOG_WARNING,
|
_alpm_log(handle, ALPM_LOG_WARNING,
|
||||||
_("removing '%s-%s' from target list because it conflicts with '%s-%s'\n"),
|
_("removing '%s' from target list because it conflicts with '%s'\n"),
|
||||||
rsync->name, rsync->version, sync->name, sync->version);
|
rsync->name, sync->name);
|
||||||
trans->add = alpm_list_remove(trans->add, rsync, _alpm_pkg_cmp, NULL);
|
trans->add = alpm_list_remove(trans->add, rsync, _alpm_pkg_cmp, NULL);
|
||||||
/* rsync is not a transaction target anymore */
|
/* rsync is not a transaction target anymore */
|
||||||
trans->unresolvable = alpm_list_add(trans->unresolvable, rsync);
|
trans->unresolvable = alpm_list_add(trans->unresolvable, rsync);
|
||||||
@@ -583,18 +581,16 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
.conflict = i->data
|
.conflict = i->data
|
||||||
};
|
};
|
||||||
alpm_conflict_t *conflict = i->data;
|
alpm_conflict_t *conflict = i->data;
|
||||||
const char *name1 = conflict->package1->name;
|
|
||||||
const char *name2 = conflict->package2->name;
|
|
||||||
int found = 0;
|
int found = 0;
|
||||||
|
|
||||||
/* if name2 (the local package) is not elected for removal,
|
/* if conflict->package2 (the local package) is not elected for removal,
|
||||||
we ask the user */
|
we ask the user */
|
||||||
if(alpm_pkg_find(trans->remove, name2)) {
|
if(alpm_pkg_find(trans->remove, conflict->package2)) {
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
for(j = trans->add; j && !found; j = j->next) {
|
for(j = trans->add; j && !found; j = j->next) {
|
||||||
alpm_pkg_t *spkg = j->data;
|
alpm_pkg_t *spkg = j->data;
|
||||||
if(alpm_pkg_find(spkg->removes, name2)) {
|
if(alpm_pkg_find(spkg->removes, conflict->package2)) {
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -602,15 +598,15 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "package '%s-%s' conflicts with '%s-%s'\n",
|
_alpm_log(handle, ALPM_LOG_DEBUG, "package '%s' conflicts with '%s'\n",
|
||||||
name1, conflict->package1->version, name2,conflict->package2->version);
|
conflict->package1, conflict->package2);
|
||||||
|
|
||||||
QUESTION(handle, &question);
|
QUESTION(handle, &question);
|
||||||
if(question.remove) {
|
if(question.remove) {
|
||||||
/* append to the removes list */
|
/* append to the removes list */
|
||||||
alpm_pkg_t *sync = alpm_pkg_find(trans->add, name1);
|
alpm_pkg_t *sync = alpm_pkg_find(trans->add, conflict->package1);
|
||||||
alpm_pkg_t *local = _alpm_db_get_pkgfromcache(handle->db_local, name2);
|
alpm_pkg_t *local = _alpm_db_get_pkgfromcache(handle->db_local, conflict->package2);
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "electing '%s' for removal\n", name2);
|
_alpm_log(handle, ALPM_LOG_DEBUG, "electing '%s' for removal\n", conflict->package2);
|
||||||
sync->removes = alpm_list_add(sync->removes, local);
|
sync->removes = alpm_list_add(sync->removes, local);
|
||||||
} else { /* abort */
|
} else { /* abort */
|
||||||
_alpm_log(handle, ALPM_LOG_ERROR, _("unresolvable package conflicts detected\n"));
|
_alpm_log(handle, ALPM_LOG_ERROR, _("unresolvable package conflicts detected\n"));
|
||||||
@@ -741,21 +737,13 @@ static int find_dl_candidates(alpm_handle_t *handle, alpm_list_t **files)
|
|||||||
|
|
||||||
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));
|
||||||
|
|
||||||
need_download = spkg->download_size != 0 || !_alpm_filecache_exists(handle, spkg->filename);
|
need_download = spkg->download_size != 0 || !_alpm_cache_pkg_exists(spkg, 0);
|
||||||
/* even if the package file in the cache we need to check for
|
/* even if the package file in the cache we need to check for
|
||||||
* accompanion *.sig file as well.
|
* accompanion *.sig file as well.
|
||||||
* If *.sig is not cached then force download the package + its signature file.
|
* If *.sig is not cached then force download the package + its signature file.
|
||||||
*/
|
*/
|
||||||
if(!need_download && (siglevel & ALPM_SIG_PACKAGE)) {
|
if(!need_download && (siglevel & ALPM_SIG_PACKAGE)) {
|
||||||
char *sig_filename = NULL;
|
need_download = !_alpm_cache_pkg_exists(spkg, 1);
|
||||||
int len = strlen(spkg->filename) + 5;
|
|
||||||
|
|
||||||
MALLOC(sig_filename, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
|
|
||||||
snprintf(sig_filename, len, "%s.sig", spkg->filename);
|
|
||||||
|
|
||||||
need_download = !_alpm_filecache_exists(handle, sig_filename);
|
|
||||||
|
|
||||||
FREE(sig_filename);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(need_download) {
|
if(need_download) {
|
||||||
@@ -994,7 +982,14 @@ static int check_validity(alpm_handle_t *handle,
|
|||||||
}
|
}
|
||||||
|
|
||||||
current_bytes += v.pkg->size;
|
current_bytes += v.pkg->size;
|
||||||
v.path = _alpm_filecache_find(handle, v.pkg->filename);
|
v.path = _alpm_cache_find_pkg(v.pkg, 0);
|
||||||
|
|
||||||
|
if(!v.path) {
|
||||||
|
_alpm_log(handle, ALPM_LOG_ERROR,
|
||||||
|
_("%s: could not find package in cache\n"), v.pkg->name);
|
||||||
|
RET_ERR(handle, ALPM_ERR_PKG_NOT_FOUND, -1);
|
||||||
|
}
|
||||||
|
|
||||||
v.siglevel = alpm_db_get_siglevel(alpm_pkg_get_db(v.pkg));
|
v.siglevel = alpm_db_get_siglevel(alpm_pkg_get_db(v.pkg));
|
||||||
|
|
||||||
if(_alpm_pkg_validate_internal(handle, v.path, v.pkg,
|
if(_alpm_pkg_validate_internal(handle, v.path, v.pkg,
|
||||||
@@ -1084,7 +1079,14 @@ static int load_packages(alpm_handle_t *handle, alpm_list_t **data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
current_bytes += spkg->size;
|
current_bytes += spkg->size;
|
||||||
filepath = _alpm_filecache_find(handle, spkg->filename);
|
|
||||||
|
filepath = _alpm_cache_find_pkg(spkg, 0);
|
||||||
|
|
||||||
|
if(!filepath) {
|
||||||
|
_alpm_log(handle, ALPM_LOG_ERROR,
|
||||||
|
_("%s: could not find package in cache\n"), spkg->name);
|
||||||
|
RET_ERR(handle, ALPM_ERR_PKG_NOT_FOUND, -1);
|
||||||
|
}
|
||||||
|
|
||||||
/* load the package file and replace pkgcache entry with it in the target list */
|
/* load the package file and replace pkgcache entry with it in the target list */
|
||||||
/* TODO: alpm_pkg_get_db() will not work on this target anymore */
|
/* TODO: alpm_pkg_get_db() will not work on this target anymore */
|
||||||
@@ -1113,7 +1115,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);
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -177,7 +177,8 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
ASSERT(trans != NULL, RET_ERR(handle, ALPM_ERR_TRANS_NULL, -1));
|
ASSERT(trans != NULL, RET_ERR(handle, ALPM_ERR_TRANS_NULL, -1));
|
||||||
ASSERT(trans->state == STATE_PREPARED, RET_ERR(handle, ALPM_ERR_TRANS_NOT_PREPARED, -1));
|
ASSERT(trans->state == STATE_PREPARED, RET_ERR(handle, ALPM_ERR_TRANS_NOT_PREPARED, -1));
|
||||||
|
|
||||||
ASSERT(!(trans->flags & ALPM_TRANS_FLAG_NOLOCK), RET_ERR(handle, ALPM_ERR_TRANS_NOT_LOCKED, -1));
|
ASSERT(!(trans->flags & ALPM_TRANS_FLAG_NOLOCK && !(trans->flags & ALPM_TRANS_FLAG_DOWNLOADONLY)),
|
||||||
|
RET_ERR(handle, ALPM_ERR_TRANS_NOT_LOCKED, -1));
|
||||||
|
|
||||||
/* If there's nothing to do, return without complaining */
|
/* If there's nothing to do, return without complaining */
|
||||||
if(trans->add == NULL && trans->remove == NULL) {
|
if(trans->add == NULL && trans->remove == NULL) {
|
||||||
@@ -298,6 +299,7 @@ void _alpm_trans_free(alpm_trans_t *trans)
|
|||||||
alpm_list_free(trans->add);
|
alpm_list_free(trans->add);
|
||||||
alpm_list_free_inner(trans->remove, (alpm_list_fn_free)_alpm_pkg_free);
|
alpm_list_free_inner(trans->remove, (alpm_list_fn_free)_alpm_pkg_free);
|
||||||
alpm_list_free(trans->remove);
|
alpm_list_free(trans->remove);
|
||||||
|
FREE(trans->note);
|
||||||
|
|
||||||
FREELIST(trans->skip_remove);
|
FREELIST(trans->skip_remove);
|
||||||
|
|
||||||
@@ -450,3 +452,19 @@ alpm_list_t SYMEXPORT *alpm_trans_get_remove(alpm_handle_t *handle)
|
|||||||
|
|
||||||
return handle->trans->remove;
|
return handle->trans->remove;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SYMEXPORT alpm_trans_set_note(alpm_handle_t *handle, char *note) {
|
||||||
|
CHECK_HANDLE(handle, return -1);
|
||||||
|
ASSERT(handle->trans != NULL, RET_ERR(handle, ALPM_ERR_TRANS_NULL, -1));
|
||||||
|
ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(handle, ALPM_ERR_TRANS_NOT_INITIALIZED, -1));
|
||||||
|
|
||||||
|
if(handle->trans->note) {
|
||||||
|
ASSERT(!strchr(handle->trans->note, '\n'), RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1));
|
||||||
|
free(handle->trans->note);
|
||||||
|
handle->trans->note = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
STRDUP(handle->trans->note, note, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -39,6 +39,7 @@ typedef enum _alpm_transstate_t {
|
|||||||
typedef struct _alpm_trans_t {
|
typedef struct _alpm_trans_t {
|
||||||
/* bitfield of alpm_transflag_t flags */
|
/* bitfield of alpm_transflag_t flags */
|
||||||
int flags;
|
int flags;
|
||||||
|
char *note;
|
||||||
alpm_transstate_t state;
|
alpm_transstate_t state;
|
||||||
alpm_list_t *unresolvable; /* list of (alpm_pkg_t *) */
|
alpm_list_t *unresolvable; /* list of (alpm_pkg_t *) */
|
||||||
alpm_list_t *add; /* list of (alpm_pkg_t *) */
|
alpm_list_t *add; /* list of (alpm_pkg_t *) */
|
||||||
|
|||||||
@@ -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);
|
||||||
@@ -826,6 +815,37 @@ int _alpm_str_cmp(const void *s1, const void *s2)
|
|||||||
return strcmp(s1, s2);
|
return strcmp(s1, s2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *_alpm_cache_find_pkg(alpm_pkg_t *pkg, int sig) {
|
||||||
|
alpm_handle_t *handle = pkg->handle;
|
||||||
|
struct stat buf;
|
||||||
|
alpm_list_t *servers = pkg->origin_data.db->servers;
|
||||||
|
char *retpath;
|
||||||
|
char filepath[PATH_MAX];
|
||||||
|
|
||||||
|
for(alpm_list_t *j = servers; j; j = j->next) {
|
||||||
|
char *server = j->data;
|
||||||
|
|
||||||
|
if(strncmp("file://", server, strlen("file://")) == 0) {
|
||||||
|
int len = strlen(server) - strlen("file://") + 1 + strlen(pkg->filename) + 1;
|
||||||
|
|
||||||
|
if(sig) {
|
||||||
|
len += strlen(".sig");
|
||||||
|
snprintf(filepath, len, "%s/%s", server + strlen("file://"), pkg->filename);
|
||||||
|
} else {
|
||||||
|
snprintf(filepath, len, "%s/%s.sig", server + strlen("file://"), pkg->filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(stat(filepath, &buf) == 0 && S_ISREG(buf.st_mode)) {
|
||||||
|
STRDUP(retpath, filepath, RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
|
||||||
|
_alpm_log(handle, ALPM_LOG_DEBUG, "found pkg in repo cache: %s\n", retpath);
|
||||||
|
return retpath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return _alpm_filecache_find(handle, pkg->filename);
|
||||||
|
}
|
||||||
|
|
||||||
/** Find a filename in a registered alpm cachedir.
|
/** Find a filename in a registered alpm cachedir.
|
||||||
* @param handle the context handle
|
* @param handle the context handle
|
||||||
* @param filename name of file to find
|
* @param filename name of file to find
|
||||||
@@ -842,10 +862,17 @@ char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename)
|
|||||||
for(i = handle->cachedirs; i; i = i->next) {
|
for(i = handle->cachedirs; i; i = i->next) {
|
||||||
snprintf(path, PATH_MAX, "%s%s", (char *)i->data,
|
snprintf(path, PATH_MAX, "%s%s", (char *)i->data,
|
||||||
filename);
|
filename);
|
||||||
if(stat(path, &buf) == 0 && S_ISREG(buf.st_mode)) {
|
if(stat(path, &buf) == 0) {
|
||||||
retpath = strdup(path);
|
if(S_ISREG(buf.st_mode)) {
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "found cached pkg: %s\n", retpath);
|
retpath = strdup(path);
|
||||||
return retpath;
|
_alpm_log(handle, ALPM_LOG_DEBUG, "found cached pkg: %s\n", retpath);
|
||||||
|
return retpath;
|
||||||
|
} else {
|
||||||
|
_alpm_log(handle, ALPM_LOG_WARNING,
|
||||||
|
"cached pkg '%s' is not a regular file: mode=%i\n", path, buf.st_mode);
|
||||||
|
}
|
||||||
|
} else if(errno != ENOENT) {
|
||||||
|
_alpm_log(handle, ALPM_LOG_WARNING, "could not open '%s'\n: %s", path, strerror(errno));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* package wasn't found in any cachedir */
|
/* package wasn't found in any cachedir */
|
||||||
@@ -857,10 +884,10 @@ char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename)
|
|||||||
* @param filename name of file to find
|
* @param filename name of file to find
|
||||||
* @return 0 if the filename was not found, 1 otherwise
|
* @return 0 if the filename was not found, 1 otherwise
|
||||||
*/
|
*/
|
||||||
int _alpm_filecache_exists(alpm_handle_t *handle, const char *filename)
|
int _alpm_cache_pkg_exists(alpm_pkg_t *pkg, int sig)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
char *fpath = _alpm_filecache_find(handle, filename);
|
char *fpath = _alpm_cache_find_pkg(pkg, sig);
|
||||||
res = (fpath != NULL);
|
res = (fpath != NULL);
|
||||||
FREE(fpath);
|
FREE(fpath);
|
||||||
return res;
|
return res;
|
||||||
@@ -927,8 +954,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 +971,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 +981,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 +995,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 +1010,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 +1027,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 +1037,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 +1051,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
|
||||||
|
|||||||
@@ -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>
|
||||||
@@ -133,9 +133,10 @@ int _alpm_run_chroot(alpm_handle_t *handle, const char *cmd, char *const argv[],
|
|||||||
_alpm_cb_io in_cb, void *in_ctx);
|
_alpm_cb_io in_cb, void *in_ctx);
|
||||||
int _alpm_ldconfig(alpm_handle_t *handle);
|
int _alpm_ldconfig(alpm_handle_t *handle);
|
||||||
int _alpm_str_cmp(const void *s1, const void *s2);
|
int _alpm_str_cmp(const void *s1, const void *s2);
|
||||||
|
char *_alpm_cache_find_pkg(alpm_pkg_t *pkg, int sig);
|
||||||
char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename);
|
char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename);
|
||||||
/* Checks whether a file exists in cache */
|
/* Checks whether a file exists in cache */
|
||||||
int _alpm_filecache_exists(alpm_handle_t *handle, const char *filename);
|
int _alpm_cache_pkg_exists(alpm_pkg_t *pkg, int sig);
|
||||||
const char *_alpm_filecache_setup(alpm_handle_t *handle);
|
const char *_alpm_filecache_setup(alpm_handle_t *handle);
|
||||||
/* Unlike many uses of alpm_pkgvalidation_t, _alpm_test_checksum expects
|
/* Unlike many uses of alpm_pkgvalidation_t, _alpm_test_checksum expects
|
||||||
* an enum value rather than a bitfield. */
|
* an enum value rather than a bitfield. */
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
66
meson.build
66
meson.build
@@ -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'),
|
||||||
@@ -182,22 +175,7 @@ foreach type : [
|
|||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
if conf.has('HAVE_STRUCT_STATVFS_F_FLAG')
|
||||||
if conf.has('HAVE_GETMNTINFO')
|
|
||||||
if cc.compiles('''
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/statvfs.h>
|
|
||||||
|
|
||||||
void func() {
|
|
||||||
struct statvfs *buf;
|
|
||||||
getmntinfo(&buf, 0);
|
|
||||||
}
|
|
||||||
''')
|
|
||||||
conf.set('FSSTATSTYPE', 'struct statvfs')
|
|
||||||
else
|
|
||||||
conf.set('FSSTATSTYPE', 'struct statfs')
|
|
||||||
endif
|
|
||||||
elif conf.has('HAVE_STRUCT_STATVFS_F_FLAG')
|
|
||||||
conf.set('FSSTATSTYPE', 'struct statvfs')
|
conf.set('FSSTATSTYPE', 'struct statvfs')
|
||||||
elif conf.has('HAVE_STRUCT_STATFS_F_FLAGS')
|
elif conf.has('HAVE_STRUCT_STATFS_F_FLAGS')
|
||||||
conf.set('FSSTATSTYPE', 'struct statfs')
|
conf.set('FSSTATSTYPE', 'struct statfs')
|
||||||
@@ -205,7 +183,6 @@ endif
|
|||||||
|
|
||||||
if get_option('debug')
|
if get_option('debug')
|
||||||
extra_cflags = [
|
extra_cflags = [
|
||||||
'-pedantic',
|
|
||||||
'-Wcast-align',
|
'-Wcast-align',
|
||||||
'-Wclobbered',
|
'-Wclobbered',
|
||||||
'-Wempty-body',
|
'-Wempty-body',
|
||||||
@@ -253,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
|
||||||
@@ -268,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
|
||||||
@@ -283,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)
|
||||||
@@ -297,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')
|
||||||
@@ -336,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)
|
||||||
@@ -398,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())
|
||||||
|
|
||||||
@@ -406,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
|
||||||
@@ -417,12 +392,6 @@ configure_file(
|
|||||||
configuration : substs,
|
configuration : substs,
|
||||||
install_dir : SYSCONFDIR)
|
install_dir : SYSCONFDIR)
|
||||||
|
|
||||||
configure_file(
|
|
||||||
input : 'etc/makepkg.conf.d/rust.conf.in',
|
|
||||||
output : 'rust.conf',
|
|
||||||
configuration : substs,
|
|
||||||
install_dir : join_paths(SYSCONFDIR, 'makepkg.conf.d/'))
|
|
||||||
|
|
||||||
configure_file(
|
configure_file(
|
||||||
input : 'etc/pacman.conf.in',
|
input : 'etc/pacman.conf.in',
|
||||||
output : 'pacman.conf',
|
output : 'pacman.conf',
|
||||||
@@ -446,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')
|
||||||
@@ -464,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),
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ changelog=
|
|||||||
source=("$pkgbase-$pkgver.tar.gz"
|
source=("$pkgbase-$pkgver.tar.gz"
|
||||||
"$pkgname-$pkgver.patch")
|
"$pkgname-$pkgver.patch")
|
||||||
noextract=()
|
noextract=()
|
||||||
sha256sums=()
|
md5sums=()
|
||||||
validpgpkeys=()
|
validpgpkeys=()
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ options=()
|
|||||||
install=
|
install=
|
||||||
source=('FOLDER::VCS+URL#FRAGMENT')
|
source=('FOLDER::VCS+URL#FRAGMENT')
|
||||||
noextract=()
|
noextract=()
|
||||||
sha256sums=('SKIP')
|
md5sums=('SKIP')
|
||||||
|
|
||||||
# Please refer to the 'USING VCS SOURCES' section of the PKGBUILD man page for
|
# Please refer to the 'USING VCS SOURCES' section of the PKGBUILD man page for
|
||||||
# a description of each element in the source array.
|
# a description of each element in the source array.
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ changelog=
|
|||||||
source=("$pkgname-$pkgver.tar.gz"
|
source=("$pkgname-$pkgver.tar.gz"
|
||||||
"$pkgname-$pkgver.patch")
|
"$pkgname-$pkgver.patch")
|
||||||
noextract=()
|
noextract=()
|
||||||
sha256sums=()
|
md5sums=()
|
||||||
validpgpkeys=()
|
validpgpkeys=()
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
|
|||||||
@@ -586,38 +586,38 @@ _pacman_conf() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_pacman_key_shortopts=(
|
_key_shortopts=(
|
||||||
'-h[show help]'
|
'-h[show help]'
|
||||||
'-a[Add the specified keys (empty for stdin)]: :_files'
|
'-a[Add the specified keys (empty for stdin)]: :_files'
|
||||||
'-d[Remove the Specified keyids]:*: :_pacman_key_list'
|
'-d[Remove the Specified keyids]:*: :_keys'
|
||||||
'-e[Export the specified or all keyids]:*: :_pacman_key_list'
|
'-e[Export the specified or all keyids]:*: :_keys'
|
||||||
'-f[List fingerprint for specified or all keyids]:*: :_pacman_key_list'
|
'-f[List fingerprint for specified or all keyids]:*: :_keys'
|
||||||
'-l[List the specified or all keys]:*: :_pacman_key_list'
|
'-l[List the specified or all keys]:*: :_keys'
|
||||||
'-r[Fetch the specified keyids]:*: :_pacman_key_list'
|
'-r[Fetch the specified keyids]:*: :_keys'
|
||||||
'-u[Update the trustdb of pacman]'
|
'-u[Update the trustdb of pacman]'
|
||||||
'-v[Verify the file specified by the signature]: :_files -g "*.sig"'
|
'-v[Verify the file specified by the signature]: :_files -g "*.sig"'
|
||||||
'-V[Show program version]'
|
'-V[Show program version]'
|
||||||
)
|
)
|
||||||
|
|
||||||
_pacman_key_longopts=(
|
_key_longopts=(
|
||||||
'--help[show help]'
|
'--help[show help]'
|
||||||
'--add[Add the specified keys (empty for stdin)]: :_files'
|
'--add[Add the specified keys (empty for stdin)]: :_files'
|
||||||
'--delete[Remove the Specified keyids]:*: :_pacman_key_list'
|
'--delete[Remove the Specified keyids]:*: :_keys'
|
||||||
'--export[Export the specified or all keyids]:*: :_pacman_key_list'
|
'--export[Export the specified or all keyids]:*: :_keys'
|
||||||
'--finger[List fingerprint for specified or all keyids]:*: :_pacman_key_list'
|
'--finger[List fingerprint for specified or all keyids]:*: :_keys'
|
||||||
'--list-keys[List the specified or all keys]:*: :_pacman_key_list'
|
'--list-keys[List the specified or all keys]:*: :_keys'
|
||||||
'--recv-keys[Fetch the specified keyids]:*: :_pacman_key_list'
|
'--recv-keys[Fetch the specified keyids]:*: :_keys'
|
||||||
'--updatedb[Update the trustdb of pacman]'
|
'--updatedb[Update the trustdb of pacman]'
|
||||||
'--verify[Verify the file specified by the signature]: :_files -g "*.sig"'
|
'--verify[Verify the file specified by the signature]: :_files -g "*.sig"'
|
||||||
'--version[Show program version]'
|
'--version[Show program version]'
|
||||||
'--edit-key[Present a menu for key management task on keyids]:*: :_pacman_key_list'
|
'--edit-key[Present a menu for key management task on keyids]:*: :_keys'
|
||||||
'--import[Imports pubring.gpg from dir(s)]: :_files -g "*.gpg"'
|
'--import[Imports pubring.gpg from dir(s)]: :_files -g "*.gpg"'
|
||||||
'--import-tb[Imports ownertrust values from trustdb.gpg in dir(s)]: :_files -g "*.gpg"'
|
'--import-tb[Imports ownertrust values from trustdb.gpg in dir(s)]: :_files -g "*.gpg"'
|
||||||
'--init[Ensure the keyring is properly initialized]'
|
'--init[Ensure the keyring is properly initialized]'
|
||||||
'--list-sigs[List keys and their signatures]:*: :_pacman_key_list'
|
'--list-sigs[List keys and their signatures]:*: :_keys'
|
||||||
'--lsign-key[Locally sign the specified keyid]:*: :_pacman_key_list'
|
'--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]:*: :_pacman_key_list'
|
'--refresh-keys[Update specified or all keys from a keyserver]:*: :_keys'
|
||||||
)
|
)
|
||||||
|
|
||||||
_pacman_key_options=(
|
_pacman_key_options=(
|
||||||
@@ -631,13 +631,13 @@ _pacman_key() {
|
|||||||
--*)
|
--*)
|
||||||
_arguments -s : \
|
_arguments -s : \
|
||||||
"$_pacman_key_options[@]" \
|
"$_pacman_key_options[@]" \
|
||||||
"$_pacman_key_longopts[@]"
|
"$_key_longopts[@]"
|
||||||
;;
|
;;
|
||||||
-*)
|
-*)
|
||||||
_arguments -s : \
|
_arguments -s : \
|
||||||
"$_pacman_key_options[@]" \
|
"$_pacman_key_options[@]" \
|
||||||
"$_pacman_key_shortopts[@]" \
|
"$_key_shortopts[@]" \
|
||||||
"$_pacman_key_longopts[@]"
|
"$_key_longopts[@]"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
i=$#
|
i=$#
|
||||||
@@ -648,13 +648,13 @@ _pacman_key() {
|
|||||||
--*)
|
--*)
|
||||||
_arguments -s : \
|
_arguments -s : \
|
||||||
"$_pacman_key_options[@]" \
|
"$_pacman_key_options[@]" \
|
||||||
"$_pacman_key_longopts[@]"
|
"$_key_longopts[@]"
|
||||||
;;
|
;;
|
||||||
-*)
|
-*)
|
||||||
_arguments -s : \
|
_arguments -s : \
|
||||||
"$_pacman_key_options[@]" \
|
"$_pacman_key_options[@]" \
|
||||||
"$_pacman_key_shortopts[@]" \
|
"$_key_shortopts[@]" \
|
||||||
"$_pacman_key_longopts[@]"
|
"$_key_longopts[@]"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
return 1
|
return 1
|
||||||
@@ -664,7 +664,7 @@ _pacman_key() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
_pacman_key_list() {
|
_keys() {
|
||||||
local keylist keys
|
local keylist keys
|
||||||
keylist=$(pacman-key --list-keys 2>/dev/null | awk '
|
keylist=$(pacman-key --list-keys 2>/dev/null | awk '
|
||||||
$1 == "pub" {
|
$1 == "pub" {
|
||||||
@@ -733,7 +733,7 @@ _makepkg_longopts=(
|
|||||||
'--check[Run check() function in the PKGBUILD]'
|
'--check[Run check() function in the PKGBUILD]'
|
||||||
'--config[Use an alternate config file instead of '@sysconfdir@/makepkg.conf']: :_files'
|
'--config[Use an alternate config file instead of '@sysconfdir@/makepkg.conf']: :_files'
|
||||||
'--holdver[Do not update VCS sources]'
|
'--holdver[Do not update VCS sources]'
|
||||||
'--key[Specify key to use for gpg signing instead of the default]: :_pacman_key_list'
|
'--key[Specify key to use for gpg signing instead of the default]: :_keys'
|
||||||
'--noarchive[Do not create package archive]'
|
'--noarchive[Do not create package archive]'
|
||||||
'--nocheck[Do not run the check() function in the PKGBUILD]'
|
'--nocheck[Do not run the check() function in the PKGBUILD]'
|
||||||
'--noprepare[Do not run the prepare() function in the PKGBUILD]'
|
'--noprepare[Do not run the prepare() function in the PKGBUILD]'
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
#
|
|
||||||
# autodep.sh - functions for automatically adding depends/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_SH" ]] && return
|
|
||||||
LIBMAKEPKG_AUTODEP_SH=1
|
|
||||||
|
|
||||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
|
||||||
|
|
||||||
declare -a autodep_functions
|
|
||||||
|
|
||||||
for lib in "$LIBRARY/autodep/"*.sh; do
|
|
||||||
source "$lib"
|
|
||||||
done
|
|
||||||
|
|
||||||
readonly -a autodep_functions
|
|
||||||
|
|
||||||
generate_autodeps() {
|
|
||||||
for func in ${autodep_functions[@]}; do
|
|
||||||
$func
|
|
||||||
done
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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" -maxdepth 1 -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 has no soname
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
provides+=("$prefix:$sofile")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
@@ -25,22 +25,18 @@ LIBMAKEPKG_BUILDENV_SH=1
|
|||||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
||||||
|
|
||||||
declare -a buildenv_functions build_options
|
declare -a buildenv_functions build_options
|
||||||
buildenv_vars=('CPPFLAGS' 'CFLAGS' 'CXXFLAGS' 'LDFLAGS' 'MAKEFLAGS' 'CHOST')
|
|
||||||
|
|
||||||
for lib in "$LIBRARY/buildenv/"*.sh; do
|
for lib in "$LIBRARY/buildenv/"*.sh; do
|
||||||
source "$lib"
|
source "$lib"
|
||||||
done
|
done
|
||||||
|
|
||||||
readonly -a buildenv_functions buildenv_vars build_options
|
readonly -a buildenv_functions build_options
|
||||||
|
|
||||||
prepare_buildenv() {
|
prepare_buildenv() {
|
||||||
# ensure this function runs first
|
|
||||||
buildenv_buildflags
|
|
||||||
|
|
||||||
for func in ${buildenv_functions[@]}; do
|
for func in ${buildenv_functions[@]}; do
|
||||||
$func
|
$func
|
||||||
done
|
done
|
||||||
|
|
||||||
# ensure all necessary build variables are exported
|
# ensure all necessary build variables are exported
|
||||||
export ${buildenv_vars[@]}
|
export CPPFLAGS CFLAGS CXXFLAGS LDFLAGS RUSTFLAGS MAKEFLAGS CHOST
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -26,9 +26,10 @@ LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
|||||||
source "$LIBRARY/util/option.sh"
|
source "$LIBRARY/util/option.sh"
|
||||||
|
|
||||||
build_options+=('buildflags')
|
build_options+=('buildflags')
|
||||||
|
buildenv_functions+=('buildenv_buildflags')
|
||||||
|
|
||||||
buildenv_buildflags() {
|
buildenv_buildflags() {
|
||||||
if check_option "buildflags" "n"; then
|
if check_option "buildflags" "n"; then
|
||||||
unset ${buildenv_vars[@]}
|
unset CPPFLAGS CFLAGS DEBUG_CFLAGS CXXFLAGS DEBUG_CXXFLAGS LDFLAGS RUSTFLAGS DEBUG_RUSTFLAGS
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,12 @@ 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}"
|
||||||
CFLAGS+=" $DEBUG_CFLAGS"
|
CFLAGS+=" $DEBUG_CFLAGS"
|
||||||
CXXFLAGS+=" $DEBUG_CXXFLAGS"
|
CXXFLAGS+=" $DEBUG_CXXFLAGS"
|
||||||
|
RUSTFLAGS+=" $DEBUG_RUSTFLAGS"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ sources = [
|
|||||||
'debugflags.sh.in',
|
'debugflags.sh.in',
|
||||||
'lto.sh.in',
|
'lto.sh.in',
|
||||||
'makeflags.sh.in',
|
'makeflags.sh.in',
|
||||||
'rust.sh.in',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
foreach src : sources
|
foreach src : sources
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/usr/bin/bash
|
|
||||||
#
|
|
||||||
# rust.sh - Specify flags for building a package with rust
|
|
||||||
#
|
|
||||||
# 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_BUILDENV_RUST_SH" ]] && return
|
|
||||||
LIBMAKEPKG_BUILDENV_RUST_SH=1
|
|
||||||
|
|
||||||
LIBRARY=${LIBRARY:-'@libmakepkgdir@'}
|
|
||||||
|
|
||||||
source "$LIBRARY/util/option.sh"
|
|
||||||
|
|
||||||
buildenv_var+=('RUSTFLAGS' 'DEBUG_RUSTFLAGS')
|
|
||||||
buildenv_functions+=('buildenv_rust')
|
|
||||||
|
|
||||||
buildenv_rust() {
|
|
||||||
if check_option "debug" "y" && ! check_option "buildflags" "n"; then
|
|
||||||
DEBUG_RUSTFLAGS+=" --remap-path-prefix=$srcdir=${DBGSRCDIR:-/usr/src/debug}/${pkgbase}"
|
|
||||||
RUSTFLAGS+=" $DEBUG_RUSTFLAGS"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user