Compare commits

..

2 commits

Author SHA1 Message Date
morganamilo
14b9ae7657
don't chown downloads if no download user
Always chowning the files to root causes non root alpm based tools to be
unable to download files.
2024-08-28 17:38:55 +01:00
morganamilo
d1b66cf4be
log and set errno when failing to rename download 2024-08-27 23:09:59 +01:00
220 changed files with 661 additions and 937 deletions

View file

@ -12,7 +12,7 @@ Daenyth Blank <Daenyth+arch@gmail.com> <Daenyth+git@gmail.com>
Dave Reisner <dreisner@archlinux.org> <d@falconindy.com>
甘露(Gan Lu) <rhythm.gan@gmail.com>
Giovanni Scafora <giovanni@archlinux.org> <linuxmania@gmail.com>
Jan Alexander Steffens (heftig) <heftig@archlinux.org> <jan.steffens@gmail.com>
Jan Steffens <jan.steffens@gmail.com>
Jaroslaw Swierczynski <swiergot@gmail.com> <swiergot@juvepoland.com>
Jonathan Conder <j@skurvy.no-ip.org> <jonno.conder@gmail.com>
Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>

10
NEWS
View file

@ -1,6 +1,6 @@
VERSION DESCRIPTION
-----------------------------------------------------------------------------
7.0.0 - Add DownloadUser configuration option used to drop-privileges
7.0.0 - Add DownloadUser configuation option used to drop-privileges
when downloading files.
- Download files to a temporary directory owned by DownloadUser
- On Linux systems, ensure the download process does not write
@ -649,7 +649,7 @@ VERSION DESCRIPTION
file overwrites from malicious databases
- makepkg:
- restrict package name from starting with a dot
- fix Bazaar source revision support (FS#35281)
- fix BZR source revision support (FS#35281)
- Use LOGDEST for log pipe
- fix distcc disabling (FS#35741)
- correct stat usage on BSD/Darwin (FS#35469)
@ -665,7 +665,7 @@ VERSION DESCRIPTION
FS#34716, FS#35097)
- makepkg:
- improve SVN VCS PKGBUILD handling (FS#34675, FS#34636)
- allow "lp:" URLs for Bazaar sources (FS#34650)
- allow "lp:" URLs for BZR sources (FS#34650)
- prevent pkgver() capturing stderr (FS#34974)
- fix attempt to remove package twice on failure (FS#34672)
- contrib:
@ -1338,7 +1338,7 @@ VERSION DESCRIPTION
- add source package creation option
- rankmirrors- allow reading from stdin (FS#8043)
- and many other updates: 198 bugs/FRs closed since 3.0.0 release
- switch to Git for source code management
- switch to GIT for source code management
3.0.6 - config files updated to reflect current -> core change
- fix symlink overwriting issue (FS#7484)
- fix config parsing with tr_TR locale (FS#7235)
@ -1490,7 +1490,7 @@ VERSION DESCRIPTION
- Cleanup db_loadpkgs(), add list_add_sorted()
- Fixed a memory leak in db_find_conflicts()
2.8.3 - Fixed a little makepkg bug with bash 3.0
- Fixed resolvedeps to always prefer literals over providers
- Fixed resolvedeps to always prefer literals over provisios
- Added --config option to specify an alternate config file
- Added "Include" directive to include repositories from
config files (inspired by Michael Baehr's patch)

229
README
View file

@ -6,7 +6,7 @@ Package Management) library. This document, while not exhaustive, also
indicates some limitations (on purpose, or sometimes due to its poor design) of
the library at the present time.
There is one special file, "alpm.h", which is the public interface that
There is one special file,"alpm.h", which is the public interface that
should be distributed and installed on systems with the library. Only
structures, data and functions declared within this file are made available to
the frontend. Lots of structures are of an opaque type and their fields are
@ -239,7 +239,7 @@ API CHANGES BETWEEN 3.1 AND 3.2
- alpm_checkdbconflicts()
- alpm_sync_newversion()
- alpm_deptest()
- error codes:
- error codes :
PM_ERR_DLT_INVALID, PM_ERR_LIBARCHIVE, PM_ERR_LIBDOWNLOAD and
PM_ERR_EXTERNAL_DOWNLOAD
- flags:
@ -352,7 +352,7 @@ API CHANGES BETWEEN 3.4 AND 3.5
- alpm_db_get_pkg() for normal targets
- alpm_find_dbs_satisfier() for versioned provisions
- alpm_find_grp_pkgs() for groups
- alpm_deptest() is replaced by the more flexible alpm_find_satisfier()
- alpm_deptest() is replaced by the more flexibile alpm_find_satisfier()
- size_t used for alpm_list_t sizes
- return type for alpm_list_count()
- parameter type in alpm_list_msort() and alpm_list_nth()
@ -362,11 +362,11 @@ API CHANGES BETWEEN 3.4 AND 3.5
- alpm_find_grp_pkgs()
- alpm_trans_get_flags()
- error codes:
PM_ERR_DISK_SPACE, PM_ERR_WRITE
- flags:
PM_TRANS_FLAG_NODEPVERSION, PM_TRANS_EVT_DISKSPACE_START,
PM_TRANS_EVT_DISKSPACE_DONE, PM_TRANS_CONV_SELECT_PROVIDER,
PM_TRANS_PROGRESS_DISKSPACE_START, PM_TRANS_PROGRESS_INTEGRITY_START
PM_ERR_DISK_SPACE, PM_ERR_WRITE
- flags
PM_TRANS_FLAG_NODEPVERSION, PM_TRANS_EVT_DISKSPACE_START,
PM_TRANS_EVT_DISKSPACE_DONE, PM_TRANS_CONV_SELECT_PROVIDER,
PM_TRANS_PROGRESS_DISKSPACE_START, PM_TRANS_PROGRESS_INTEGRITY_START
API CHANGES BETWEEN 3.5 AND 4.0
@ -419,7 +419,7 @@ API CHANGES BETWEEN 3.5 AND 4.0
- alpm_release
- alpm_remove_pkg
- alpm_sync_sysupgrade
- several structs are no longer opaque:
- several structs are no longer opaque
- alpm_conflict_t
- alpm_delta_t
- alpm_depend_t
@ -431,33 +431,19 @@ API CHANGES BETWEEN 3.5 AND 4.0
[ADDED]
- option functions:
- alpm_{get,set}_eventcb()
- alpm_option_{get,set}_convcb()
- alpm_option_{get,set}_progresscb()
alpm_{get,set}_eventcb(), alpm_option_{get,set}_convcb(),
alpm_option_{get,set}_progresscb()
- package signing functions:
- alpm_option_get_default_siglevel()
- alpm_option_set_default_siglevel()
- alpm_option_get_gpgdir()
- alpm_option_set_gpgdir()
- alpm_db_get_siglevel()
- alpm_siglist_cleanup()
- alpm_db_check_pgp_signature()
- alpm_pkg_check_pgp_signature()
- alpm_pkg_get_origin()
- alpm_pkg_get_sha256sum()
- alpm_pkg_get_base64_sig()
alpm_option_get_default_siglevel(), alpm_option_set_default_siglevel(),
alpm_option_get_gpgdir(), alpm_option_set_gpgdir(), alpm_db_get_siglevel(),
alpm_siglist_cleanup(), alpm_db_check_pgp_signature(), alpm_pkg_check_pgp_signature(),
alpm_pkg_get_origin(), alpm_pkg_get_sha256sum(), alpm_pkg_get_base64_sig()
- list functions:
- alpm_list_to_array()
- alpm_list_previous()
alpm_list_to_array(), alpm_list_previous()
- structs:
- alpm_backup_t
- alpm_file_t
- alpm_filelist_t
alpm_backup_t, alpm_file_t, alpm_filelist_t
- enums:
- alpm_siglevel_t
- alpm_sigstatus_t
- alpm_sigvalidity_t
- alpm_pkgfrom_t
alpm_siglevel_t, alpm_sigstatus_t, alpm_sigvalidity_t, alpm_pkgfrom_t
- error codes:
ALPM_ERR_DB_INVALID, ALPM_ERR_DB_INVALID_SIG, ALPM_ERR_GPGME,
ALPM_ERR_PKG_INVALID_CHECKSUM, ALPM_ERR_PKG_INVALID_SIG, ALPM_ERR_SIG_INVALID,
@ -484,10 +470,10 @@ API CHANGES BETWEEN 4.0 AND 4.1
- alpm_db_unregister_all -> alpm_unregister_all_syncdbs
- alpm_db_readgroup -> alpm_db_get_group
- alpm_db_set_pkgreason -> alpm_pkg_set_reason (handle parameter removed)
- alpm_time_t typedef used for all times:
- alpm_time_t typedef used for all times
- members of alpm_pgpkey_t
- return types of alpm_pkg_get_builddate and alpm_pkg_get_installdate
- delta options now use required ratio rather than on/off:
- delta options now use required ratio rather than on/off
- alpm_option_get_usedelta -> alpm_option_get_deltaratio
- alpm_option_set_usedelta -> alpm_option_set_deltaratio
@ -504,21 +490,21 @@ API CHANGES BETWEEN 4.0 AND 4.1
- alpm_db_usage_t
- alpm_db_set_usage()
- alpm_db_get_usage()
- wrapper functions for reading mtree files:
- wrapper functions for reading mtree files
- alpm_pkg_mtree_open()
- alpm_pkg_mtree_next()
- alpm_pkg_mtree_close()
- utility functions:
- utility functions
- alpm_pkg_find()
- alpm_pkg_compute_optionalfor()
- alpm_filelist_contains()
- types:
- types
- alpm_time_t
- alpm_errno_t
- flags:
ALPM_EVENT_OPTDEP_REQUIRED, ALPM_EVENT_DATABASE_MISSING,
ALPM_EVENT_KEYRING_START, ALPM_EVENT_KEYRING_DONE, ALPM_EVENT_KEY_DOWNLOAD_START,
ALPM_EVENT_KEY_DOWNLOAD_DONE, ALPM_PROGRESS_KEYRING_START
- flags
ALPM_EVENT_OPTDEP_REQUIRED, ALPM_EVENT_DATABASE_MISSING,
ALPM_EVENT_KEYRING_START, ALPM_EVENT_KEYRING_DONE, ALPM_EVENT_KEY_DOWNLOAD_START,
ALPM_EVENT_KEY_DOWNLOAD_DONE, ALPM_PROGRESS_KEYRING_START
API CHANGES BETWEEN 4.1 AND 4.2
@ -527,49 +513,49 @@ API CHANGES BETWEEN 4.1 AND 4.2
[CHANGED]
- alpm_filelist_t - removed member resolved_path
- alpm_filelist_contains - now returns alpm_file_t
- event callback:
- alpm_event_t renamed to alpm_event_type_t
- alpm_event_t union added
- alpm_event_cb now takes only an alpm_event_t parameter
- alpm_event_any_t, alpm_package_operation_t, alpm_event_package_operation_t,
alpm_event_optdep_removal_t, alpm_event_delta_patch_t, alpm_event_scriptlet_info_t,
alpm_event_database_missing_t, alpm_event_pkgdownload_t, alpm_event_pacnew_created_t,
alpm_event_pacsave_created_t, alpm_event_pacorig_created_t added
- ALPM_EVENT_*_START -> ALPM_EVENT_PACKAGE_OPERATION_START
- ALPM_EVENT_*_DONE -> ALPM_EVENT_PACKAGE_OPERATION_DONE
- question callback:
- alpm_question_t renamed to alpm_question_type_t
- alpm_question_t union added
- alpm_cb_question now takes only an alpm_question_t parameter
- alpm_question_any_t, alpm_question_install_ignorepkg_t, alpm_question_replace_t
alpm_question_conflict_t, alpm_question_corrupted_t, alpm_question_remove_pkgs_t,
alpm_question_select_provider_t, alpm_question_import_key_t added
- event callback
- alpm_event_t renamed to alpm_event_type_t
- alpm_event_t union added
- alpm_event_cb now takes only an alpm_event_t parameter
- alpm_event_any_t, alpm_package_operation_t, alpm_event_package_operation_t,
alpm_event_optdep_removal_t, alpm_event_delta_patch_t, alpm_event_scriptlet_info_t,
alpm_event_database_missing_t, alpm_event_pkgdownload_t, alpm_event_pacnew_created_t,
alpm_event_pacsave_created_t, alpm_event_pacorig_created_t added
- ALPM_EVENT_*_START -> ALPM_EVENT_PACKAGE_OPERATION_START
- ALPM_EVENT_*_DONE -> ALPM_EVENT_PACKAGE_OPERATION_DONE
- question callback
- alpm_question_t renamed to alpm_question_type_t
- alpm_question_t union added
- alpm_cb_question now takes only an alpm_question_t parameter
- alpm_question_any_t, alpm_question_install_ignorepkg_t, alpm_question_replace_t
alpm_question_conflict_t, alpm_question_corrupted_t, alpm_question_remove_pkgs_t,
alpm_question_select_provider_t, alpm_question_import_key_t added
[ADDED]
- memory management:
- memory management
- alpm_fileconflict_free()
- alpm_depmissing_free()
- alpm_conflict_free()
- alpm_dep_free()
- database usage:
- database usage
- alpm_db_usage_t
- alpm_db_set_usage()
- alpm_db_get_usage()
- assume installed:
- assume installed
- alpm_option_get_assumeinstalled()
- alpm_option_add_assumeinstalled()
- alpm_option_set_assumeinstalled()
- alpm_option_remove_assumeinstalled()
- using noupgrade/noextract:
- using noupgrade/noextract
- alpm_option_match_noupgrade()
- alpm_option_match_noextract()
- utility functions:
- utility functions
- alpm_dep_from_string()
- alpm_pkg_should_ignore()
- alpm_decode_signature()
- alpm_extract_keyid()
- flags:
ALPM_EVENT_RETRIEVE_DONE, ALPM_EVENT_RETRIEVE_FAILED, ALPM_EVENT_PKGDOWNLOAD_START,
- flags
- ALPM_EVENT_RETRIEVE_DONE, ALPM_EVENT_RETRIEVE_FAILED, ALPM_EVENT_PKGDOWNLOAD_START,
ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED, ALPM_EVENT_OPTDEP_REMOVAL,
ALPM_EVENT_PACNEW_CREATED, ALPM_EVENT_PACSVAE_CREATED, ALPM_EVENT_PACORIG_CREATED
@ -579,13 +565,13 @@ API CHANGES BETWEEN 4.2 AND 5.0
[REMOVED]
- alpm_siglevel_t - removed members ALPM_SIG_PACKAGE_SET, ALPM_SIG_PACKAGE_TRUST_SET
- removed .pacorig generation:
- removed .pacorig generation
- ALPM_EVENT_PACORIG_CREATED
- alpm_event_pacorig_created_t
- alpm_event_t.pacorig_created
[ADDED]
- hook support:
- hook support
- alpm_option_get_hookdirs()
- alpm_option_set_hookdirs()
- alpm_option_add_hookdir()
@ -595,14 +581,14 @@ API CHANGES BETWEEN 4.2 AND 5.0
- ALPM_EVENT_HOOK_START, ALPM_EVENT_HOOK_DONE
- ALPM_EVENT_HOOK_RUN_START, ALPM_EVENT_HOOK_RUN_DONE
- ALPM_ERR_TRANS_HOOK_FAILED
- different database extension support:
- different database extension support
- alpm_option_get_dbext()
- alpm_option_set_dbext()
- pkgbase accessor:
- pkgbase accessor
- alpm_pkg_get_base()
- transaction events:
- transaction events
- ALPM_EVENT_TRANSACTION_START, ALPM_EVENT_TRANSACTION_DONE
- database unlocking:
- database unlocking
- alpm_unlock()
@ -612,7 +598,7 @@ API CHANGES BETWEEN 5.0 AND 5.1
[CHANGED]
- alpm_errno_t - added member ALPM_ERR_OK
- alpm_siglevel_t - value of ALPM_SIG_USE_DEFAULT changed
- functions using bitfields return/pass an int instead of an enum:
- functions using bitfields return/pass an int instead of an enum
- alpm_option_get_default_siglevel()
- alpm_option_set_default_siglevel()
- alpm_option_get_remote_file_siglevel()
@ -629,19 +615,19 @@ API CHANGES BETWEEN 5.0 AND 5.1
- alpm_option_set_local_file_siglevel()
[ADDED]
- overwrite support:
- overwrite support
- alpm_option_get_overwrite_files()
- alpm_option_set_overwrite_files()
- alpm_option_add_overwrite_file()
- alpm_option_remove_overwrite_file()
- download timeout control:
- download timeout control
- alpm_option_set_disable_dl_timeout()
- access make/checkdepends info:
- access make/checkdepends info
- alpm_pkg_get_checkdepends()
- alpm_pkg_get_makedepends()
- check pacman capabilities:
- check pacman capabilities
- alpm_capabilities()
- duplicate and add to list:
- duplicate and add to list
- alpm_list_append_strdup()
@ -649,7 +635,7 @@ API CHANGES BETWEEN 5.1 AND 5.2
===============================
[REMOVED]
- package delta support:
- package delta support
- alpm_delta_t
- alpm_event_delta_patch_t
- alpm_event_t union - removed alpm_event_delta_patch_t
@ -676,10 +662,10 @@ API CHANGES BETWEEN 5.2 AND 6.0
[REMOVED]
- ALPM_EVENT_PKGDOWNLOAD_START, ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED
- ALPM_ERR_PKG_REPO_NOT_FOUND
- old TotalDownload implementation:
- alpm_cb_totaldl
- alpm_option_get_totaldlcb()
- alpm_option_set_totaldlcb()
- old TotalDownload implementation
- alpm_cb_totaldl
- alpm_option_get_totaldlcb()
- alpm_option_set_totaldlcb()
[CHANGED]
- alpm_db_update() now accepts a list of databases rather than a single database.
@ -687,29 +673,29 @@ API CHANGES BETWEEN 5.2 AND 6.0
- alpm_db_search() now has an additional parameter and returns success status
- ALPM_EVENT_RETRIEVE_* -> ALPM_EVENT_DB_RETRIEVE_* and ALPM_EVENT_PKG_RETRIEVE_*
- alpm_cb_download pass event and data
- multi architecture support:
- alpm_option_get_arch() -> alpm_option_get_architectures()
- alpm_option_set_arch() -> alpm_option_set_architectures()
- multi architecture support
- alpm_option_get_arch() -> alpm_option_get_architectures()
- alpm_option_set_arch() -> alpm_option_set_architectures()
- alpm_db_get_servers() copies parameter data
[ADDED]
- parallel download support:
- alpm_option_set_parallel_downloads()
- alpm_option_get_parallel_downloads()
- file download events:
- alpm_download_event_type_t
- alpm_download_event_init_t
- alpm_download_event_progress_t
- alpm_download_event_completed_t
- download misc:
- ALPM_DOWNLOAD_RETRY
- alpm_download_event_retry_t
- alpm_event_pkg_retrieve_t
- multiarchitecture support:
- alpm_option_add_architecture()
- alpm_option_remove_architecture()
- misc:
- alpm_pkg_get_sig()
- parallel download support
- alpm_option_set_parallel_downloads()
- alpm_option_get_parallel_downloads()
- file download events
- alpm_download_event_type_t
- alpm_download_event_init_t
- alpm_download_event_progress_t
- alpm_download_event_completed_t
- download misc
- ALPM_DOWNLOAD_RETRY
- alpm_download_event_retry_t
- alpm_event_pkg_retrieve_t
- multiarchitecture support
- alpm_option_add_architecture()
- alpm_option_remove_architecture()
- misc
- alpm_pkg_get_sig()
- callbacks add front-end provided context
@ -727,32 +713,23 @@ API CHANGES BETWEEN 6.0 AND 6.1
- alpm_transflag_t - added ALPM_TRANS_FLAG_NOHOOKS
[ADDED]
- extensible package data type:
- alpm_pkg_xdata_t
- alpm_pkg_get_xdata()
- accessor functions:
- alpm_db_get_handle()
- alpm_pkg_get_handle()
- cache server support:
- alpm_db_get_cache_servers()
- alpm_db_set_cache_servers()
- alpm_db_add_cache_server()
- extensible package data type
- alpm_pkg_xdata_t
- alpm_pkg_get_xdata()
- accessor functions
- alpm_db_get_handle()
- alpm_pkg_get_handle()
- cache server support
- alpm_db_get_cache_servers()
- alpm_db_set_cache_servers()
- alpm_db_add_cache_server()
API CHANGES BETWEEN 6.1 AND 7.0
===============================
[ADDED]
- sandbox functions:
- alpm_option_get_sandboxuser()
- alpm_option_set_sandboxuser()
- alpm_option_set_disable_sandbox()
- alpm_sandbox_setup_child()
API CHANGES BETWEEN 7.0 AND 7.1
===============================
[CHANGED]
- error codes:
PM_ERR_TRANS_COMMITING renamed to PM_ERR_TRANS_COMMITTING
- sandbox functions
- alpm_option_get_sandboxuser()
- alpm_option_set_sandboxuser()
- alpm_option_set_disable_sandbox()
- alpm_sandbox_setup_child()

View file

@ -3,7 +3,7 @@ currently. Our translations are currently maintained in Transifex; please read
doc/translation-help.txt for more details.
Below is a list of past translators before we switched to Transifex; more can
be found by looking in the Git history.
be found by looking in the GIT history.
If your language is not already in the various po/ subdirectories and you wish
it was, set up a team in Transifex for your language and we will be happy to

View file

@ -11,8 +11,8 @@ Synopsis
This manual page describes the format of a BUILDINFO file found in the root of
a package created by makepkg. The file contains a description of the package's
build environment. The information is formatted in key-value pairs separated by
a '=', one value per line. Arrays are represented as multiple key-value pairs
having the same key.
a '=', one value per line. Arrays are represented multiple keys with the same
value.
Description

View file

@ -313,15 +313,6 @@ underscore and the architecture name e.g., 'replaces_x86_64=()'.
Enable building packages using link time optimization. Adds '-flto'
to both CFLAGS and CXXFLAGS.
*xdata (array)*::
This array allows you to add additional metadata to the package.
This data is neither used by pacman nor by makepkg;
It has purely informational purpose, or may be interpreted by third-party tools.
+
All entries in that array must have the form 'key=value', where
'key' is an arbitrary non-empty string and 'value' must not contain an equal sign.
Furthermore, the key ``pkgtype'' is reserved for the makepkg program.
Packaging Functions
-------------------

View file

@ -1,5 +1,5 @@
## linkman: macro
# Inspired by/borrowed from the Git source tree at Documentation/asciidoc.conf
# Inspired by/borrowed from the GIT source tree at Documentation/asciidoc.conf
#
# Usage: linkman:command[manpage-section]
#

View file

@ -252,7 +252,7 @@ the package database if it helps.
Copyright
---------
pacman is Copyright (C) 2006-2025 Pacman Development Team
pacman is Copyright (C) 2006-2024 Pacman Development Team
<pacman-dev@lists.archlinux.org> and Copyright (C) 2002-2006 Judd Vinet
<jvinet@zeroflux.org> and is licensed through the GNU General Public License,
version 2 or later.

View file

@ -247,11 +247,6 @@ Environment Variables
Use an alternate config file instead of the +{sysconfdir}/makepkg.conf+
default.
**MAKEPKG_GIT_CONFIG=**"/path/to/file"::
Use an alternate config file for Git instead of the
+{sysconfdir}/makepkg.d/gitconfig+ default. makepkg always prevents Git
from loading any other config files.
**PKGDEST=**"/path/to/directory"::
Directory where the resulting packages will be stored. Overrides the
corresponding value defined in linkman:makepkg.conf[5].
@ -302,7 +297,7 @@ Environment Variables
**BUILDTOOLVER=**"<version>"::
The version of the '$BUILDTOOL' used.
**MAKEPKG_LINT_PKGBUILD=**0::
**MAKEPKG_LINT_PKGBUILD=**0
Setting to 0 disables PKGBUILD linting within makepkg. Useful on systems
with slow bash subshell operations, or on PKGBUILDs with extreme amounts of
package splitting.

View file

@ -62,11 +62,6 @@ Options
A string such as ``i686-pc-linux-gnu''; do not touch this unless you know what
you are doing. This can be commented out by most users if desired.
**NPROC=**""::
Sets the number of processors to use for parallel jobs in makepkg.
Note: this does not affect parallelization of tasks during ``build()`` and
related functions.
**CPPFLAGS=**"cppflags"::
Flags used for the C preprocessor; see CFLAGS for more information.

View file

@ -151,8 +151,7 @@ Options
+{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be
specified, and they are tried in the order they are passed to pacman.
*NOTE*: This is an absolute path, and the root path is not automatically
prepended. If DownloadUser is set in linkman:pacman.conf[5], then the
specified user must have permission to access the cache directory.
prepended.
*\--color* <when>::
Specify when to enable coloring. Valid options are 'always', 'never', or

View file

@ -235,7 +235,7 @@ contain a file that lists the servers for that repository.
# use this server first
Server = ftp://ftp.archlinux.org/$repo/os/$arch
# next use servers as defined in the mirrorlist below
Include = /etc/pacman.d/mirrorlist
Include = {sysconfdir}/pacman.d/mirrorlist
--------
The order of repositories in the configuration files matters; repositories

View file

@ -29,10 +29,9 @@ specified on the command line. Multiple packages to remove can be specified
on the command line.
A package database is a tar file, optionally compressed. Valid extensions are
``.db'' followed by an archive extension of ``.tar'', ``.tar.bz2'',
``.tar.gz'', ``.tar.lrz'', ``.tar.lz'', ``.tar.lz4'', ``.tar.lzo'',
``.tar.xz'', ``.tar.zst'' or ``.tar.Z''. The file does not need to exist, but
all parent directories must exist.
``.db'' followed by an archive extension of ``.tar'', ``.tar.gz'', ``.tar.bz2'',
``.tar.xz'', or ``.tar.Z''. The file does not need to exist, but all parent
directories must exist.
Common Options
@ -60,14 +59,6 @@ Common Options
*\--nocolor*::
Remove color from 'repo-add' and 'repo-remove' output.
*-R, \--remove*::
Remove old package files from the disk when updating or removing their
entry in the database.
*-w, \--wait-for-lock*::
Wait for the lock file to be acquired. If unset, command will fail with
exit code 2 if acquiring the lock fails. If set, it will retry to acquire
lock until success.
repo-add Options
----------------
@ -75,6 +66,10 @@ repo-add Options
Only add packages that are not already in the database. Warnings will be
printed upon detection of existing packages, but they will not be re-added.
*-R, \--remove*::
Remove old package files from the disk when updating their entry in the
database.
*\--include-sigs*::
Include package PGP signatures in the repository database (if available)

View file

@ -11,9 +11,9 @@ NOTE: Some of this is paraphrased from the kernel documentation's
Getting the most recent source
------------------------------
Patches need to be submitted in Git format and are best if they are against the
Patches need to be submitted in GIT format and are best if they are against the
latest version of the code. There are several helpful tutorials for getting
started with Git if you have not worked with it before.
started with GIT if you have not worked with it before.
* https://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
* https://wiki.archlinux.org/index.php/Super_Quick_Git_Guide

View file

@ -4,10 +4,10 @@ Pacman - Translating
This document is here to guide you in helping translate pacman messages,
libalpm messages, and the manual pages for the entire pacman package.
We are currently using https://app.transifex.com/[Transifex] as the translation
We are currently using https://www.transifex.com/[Transifex] as the translation
platform for pacman and libalpm. You will need to sign up for an account there
and then register with a translation team on the
https://explore.transifex.com/toofishes/archlinux-pacman/[pacman project page].
https://www.transifex.com/projects/p/archlinux-pacman/[pacman project page].
NOTE: This may be old information due to our switch to Transifex, but the
gettext website is a very useful guide to read before embarking on translation
@ -31,7 +31,7 @@ either be hand-edited, or modified with a tool such as poedit, gtranslator or
kbabel. Using a translation tool tends to make the job easier.
Please read up on Transifex usage using the
https://help.transifex.com/[Transifex Help] if you are not familiar.
https://docs.transifex.com/[Transifex Help] if you are not familiar.
Transifex provides a command-line client to help with translations. Here is
an example set of commands if you have a source code checkout and are not
@ -56,19 +56,19 @@ Pre-release Updates
A week or two before each release, the codebase will go into a string freeze
and an email will be sent to the mailto:pacman-dev@lists.archlinux.org[pacman-dev]
mailing list asking for translations. An announcement in Transifex is also made,
which reaches everyone that is member of the translation team.
mailing list asking for translations. This email will have a prefix of
*[translation]* for anyone looking to set up an email filter.
At this time, the latest `.po` language files will be made available at the
Transifex project page. Each language will have three files available (libalpm,
pacman and pacman-scripts). Translators interested in helping are encouraged to use the
Transifex project page. Each language will have two files available (back-end
and front-end). Translators interested in helping are encouraged to use the
features of Transifex to let others know they are currently translating their
language.
Once a translator has completed the translation offline (*OR* realizes they do not have
Once a translator has completed the translation (*OR* realizes they do not have
time to finish), please upload your progress back to the Transifex site.
NOTE: Please upload your translations as soon as possible - this will give other
NOTE: Please upload your translations as soon as possible- this will give other
speakers of your language time to review your translations and update them as
necessary.
@ -80,25 +80,21 @@ repository.
git clone https://gitlab.archlinux.org/pacman/pacman.git
Next, you will need to configure the build environment. From the base directory,
run:
Next, you will need to run `./autogen.sh` and `./configure` in the base
directory to generate the correct Makefiles. At this point, all necessary
make targets will be generated and we can begin updating the translation
files.
meson setup . build
We need to first update the main message catalog file. Navigate into either the
`lib/libalpm/po` or `po` directory depending on which translation you wish to
work on first, and execute the following command. If you are working in the
`po/` tree, replace 'libalpm.pot' with 'pacman.pot':
If any required dependencies are missing, please install. After that,
update the template translation (.pot) files to the latest state of
the source code by running:
meson compile -C build pacman-scripts-pot pacman-pot libalpm-pot
We need to first update the main message catalog file. Navigate into either
the `lib/libalpm/po`, `scripts/po` or `src/pacman/po` directory depending
on which translation you wish to work on first, and execute the following
command to update your specific language's translation file
(replace `lang_code` with your language code e.g. 'pt_BR', and `pot_file`
with `libalpm.pot`, `pacman.pot` or `pacman-scripts.pot`):
make libalpm.pot-update
msgmerge --update --previous <lang_code>.po <pot_filename>.pot
Next, update your specific language's translation file:
make <po file>-update
At this point, you can do the translation. To submit your changes, either email
the new `.po` file to the mailing-list with *[translation]* in the subject, or
@ -107,7 +103,7 @@ submit a Git-formatted patch (please do not include any `.pot` file changes).
As a shortcut, all translation files (including `.pot` files) can be updated
with the following command:
./build-aux/update-po
make update-po
Adding a New Language
~~~~~~~~~~~~~~~~~~~~~
@ -116,10 +112,10 @@ Making a new language is not too hard, but be sure to follow all the steps.
You will have to do the following steps in both the `lib/libalpm/po/` and `po/`
directories, substituting where appropriate. First, edit the `LINGUAS` file and
add your new language code at the bottom. Next, run the following command,
substituting `libalpm.pot` or `pacman.pot` for potfile depending on which
substituting 'libalpm.pot' or 'pacman.pot' for potfile depending on which
directory you are currently working in:
msginit -l <lang_code> -o <lang_code>.po -i <potfile>
msginit -l <lang code> -o <lang code>.po -i <potfile>
You can then also add your language code to the end of the `LINGUAS` file
located in each po directory.
@ -141,13 +137,11 @@ following two translations are equivalent:
msgstr ""
"This is a test translation"
If you want to test the translation (copy the .po file you want to test,
you may ignore the rest), replacing `<lang_code>` accordingly:
If you want to test the translation (for example, the front-end one):
meson compile -C build pacman-scripts-gmo pacman-gmo libalpm-gmo
cp ./build/lib/libalpm/po/<lang_code>/LC_MESSAGES/libalpm.mo /usr/share/locale/<lang_code>/LC_MESSAGES/libalpm.mo
cp ./build/scripts/po/<lang_code>/LC_MESSAGES/pacman-scripts.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman-scripts.mo
cp ./build/src/pacman/po/<lang_code>/LC_MESSAGES/pacman.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman.mo
rm *.gmo stamp-po
make
cp <lang code>.gmo /usr/share/locale/<lang code>/LC_MESSAGES/pacman.mo
Translating Manpages

View file

@ -36,8 +36,6 @@ VCSCLIENTS=('bzr::breezy'
CARCH="@CARCH@"
CHOST="@CHOST@"
#NPROC=2
#-- Compiler and Linker Flags
#CPPFLAGS=""
#CFLAGS="-O2 -pipe"

View file

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

View file

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

View file

@ -1,7 +1,7 @@
/*
* alpm.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@ -25,9 +25,6 @@
#include <curl/curl.h>
#endif
#include <errno.h>
#include <pwd.h>
/* libalpm */
#include "alpm.h"
#include "alpm_list.h"
@ -42,7 +39,6 @@ alpm_handle_t SYMEXPORT *alpm_initialize(const char *root, const char *dbpath,
const char *lf = "db.lck";
char *hookdir;
size_t hookdirlen, lockfilelen;
struct passwd const *pw = NULL;
alpm_handle_t *myhandle = _alpm_handle_new();
if(myhandle == NULL) {
@ -82,10 +78,6 @@ alpm_handle_t SYMEXPORT *alpm_initialize(const char *root, const char *dbpath,
myhandle->parallel_downloads = 1;
/* set default sandboxuser */
ASSERT((pw = getpwuid(0)) != NULL, myerr = errno; goto cleanup);
STRDUP(myhandle->sandboxuser, pw->pw_name, goto nomem);
#ifdef ENABLE_NLS
bindtextdomain("libalpm", LOCALEDIR);
#endif

View file

@ -1,7 +1,7 @@
/*
* alpm.h
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@ -451,6 +451,14 @@ typedef struct _alpm_pgpkey_t {
unsigned int length;
/** has the key been revoked */
unsigned int revoked;
/** A character representing the encryption algorithm used by the public key
*
* ? = unknown
* R = RSA
* D = DSA
* E = EDDSA
*/
char pubkey_algo;
} alpm_pgpkey_t;
/**
@ -2257,12 +2265,6 @@ int alpm_option_set_remote_file_siglevel(alpm_handle_t *handle, int level);
* @{
*/
/** Get the download timeout state
* @param handle the context handle
* @return 0 for enabled, 1 for disabled
*/
int alpm_option_get_disable_dl_timeout(alpm_handle_t *handle);
/** Enables/disables the download timeout.
* @param handle the context handle
* @param disable_dl_timeout 0 for enabled, 1 for disabled
@ -2305,12 +2307,6 @@ int alpm_option_set_parallel_downloads(alpm_handle_t *handle, unsigned int num_s
* @{
*/
/** Get the sandbox state
* @param handle the context handle
* @return 0 for enabled, 1 for disabled
*/
int alpm_option_get_disable_sandbox(alpm_handle_t *handle);
/** Enables/disables the sandbox.
* @param handle the context handle
* @param disable_sandbox 0 for enabled, 1 for disabled

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
/*
* be_local.c : backend for the local database
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
*
* This program is free software; you can redistribute it and/or modify

View file

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

View file

@ -1,7 +1,7 @@
/*
* be_sync.c : backend for sync databases
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
*
* This program is free software; you can redistribute it and/or modify
@ -268,6 +268,7 @@ cleanup:
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
FREELIST(payloads);
}
_alpm_remove_temporary_download_dir(temporary_syncpath);
FREE(temporary_syncpath);
FREE(syncpath);
umask(oldmask);
@ -308,11 +309,11 @@ static int _sync_get_validation(alpm_pkg_t *pkg)
static const struct pkg_operations *get_sync_pkg_ops(void)
{
static struct pkg_operations sync_pkg_ops;
static int sync_pkg_ops_initialized = 0;
if(!sync_pkg_ops_initialized) {
static int sync_pkg_ops_initalized = 0;
if(!sync_pkg_ops_initalized) {
sync_pkg_ops = default_pkg_ops;
sync_pkg_ops.get_validation = _sync_get_validation;
sync_pkg_ops_initialized = 1;
sync_pkg_ops_initalized = 1;
}
return &sync_pkg_ops;
}

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
/*
* deps.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
@ -181,13 +181,13 @@ static void _alpm_warn_dep_cycle(alpm_handle_t *handle, alpm_list_t *targets,
} else {
alpm_pkg_t *ancestorpkg = ancestor->data;
alpm_pkg_t *childpkg = vertex->data;
_alpm_log(handle, ALPM_LOG_DEBUG, _("dependency cycle detected:\n"));
_alpm_log(handle, ALPM_LOG_WARNING, _("dependency cycle detected:\n"));
if(reverse) {
_alpm_log(handle, ALPM_LOG_DEBUG,
_alpm_log(handle, ALPM_LOG_WARNING,
_("%s will be removed after its %s dependency\n"),
ancestorpkg->name, childpkg->name);
} else {
_alpm_log(handle, ALPM_LOG_DEBUG,
_alpm_log(handle, ALPM_LOG_WARNING,
_("%s will be installed before its %s dependency\n"),
ancestorpkg->name, childpkg->name);
}

View file

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

View file

@ -1,7 +1,7 @@
/*
* diskspace.c
*
* Copyright (c) 2010-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2010-2024 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

View file

@ -1,7 +1,7 @@
/*
* diskspace.h
*
* Copyright (c) 2010-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2010-2024 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

View file

@ -1,7 +1,7 @@
/*
* dload.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
*
* This program is free software; you can redistribute it and/or modify
@ -73,17 +73,16 @@ static mode_t _getumask(void)
return mask;
}
static int finalize_download_file(const char *filename)
static int finalize_download_file(const char *sandboxuser, const char *filename)
{
struct stat st;
uid_t myuid = getuid();
ASSERT(filename != NULL, return -1);
ASSERT(stat(filename, &st) == 0, return -1);
if(st.st_size == 0) {
unlink(filename);
return 1;
}
if(myuid == 0) {
if(sandboxuser) {
ASSERT(chown(filename, 0, 0) != -1, return -1);
}
ASSERT(chmod(filename, ~(_getumask()) & 0666) != -1, return -1);
@ -698,9 +697,9 @@ cleanup:
* only applies to FTP transfers. */
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, (char *)NULL);
if(payload->localf != NULL) {
fclose(payload->localf);
payload->localf = NULL;
utimes_long(payload->tempfile_name, remote_time);
}
@ -880,6 +879,7 @@ static int curl_download_internal(alpm_handle_t *handle,
p = NULL;
err = -1;
}
while(true) {
int msgs_left = 0;
CURLMsg *msg = curl_multi_info_read(curlm, &msgs_left);
@ -903,6 +903,7 @@ static int curl_download_internal(alpm_handle_t *handle,
}
}
}
int ret = err ? -1 : updated ? 0 : 1;
_alpm_log(handle, ALPM_LOG_DEBUG, "curl_download_internal return code is %d\n", ret);
alpm_list_free(payloads);
@ -916,15 +917,16 @@ static int curl_download_internal(alpm_handle_t *handle,
*/
static int curl_download_internal_sandboxed(alpm_handle_t *handle,
alpm_list_t *payloads /* struct dload_payload */,
const char *localpath,
int *childsig)
const char *localpath)
{
int pid, err = 0, ret = -1, callbacks_fd[2];
sigset_t oldblock;
struct sigaction sa_ign = { .sa_handler = SIG_IGN }, oldint, oldquit;
struct sigaction sa_ign, oldint, oldquit;
_alpm_sandbox_callback_context callbacks_ctx;
sigemptyset(&sa_ign.sa_mask);
sa_ign.sa_handler = SIG_IGN;
sa_ign.sa_flags=0;
if(pipe(callbacks_fd) != 0) {
return -1;
@ -1022,12 +1024,8 @@ static int curl_download_internal_sandboxed(alpm_handle_t *handle,
int wret;
while((wret = waitpid(pid, &ret, 0)) == -1 && errno == EINTR);
if(wret > 0) {
if(WIFSIGNALED(ret)) {
*childsig = WTERMSIG(ret);
}
if(!WIFEXITED(ret)) {
/* the child did not terminate normally */
handle->pm_errno = ALPM_ERR_RETRIEVE;
ret = -1;
}
else {
@ -1083,11 +1081,11 @@ static int payload_download_fetchcb(struct dload_payload *payload,
return ret;
}
static int move_file(const char *filepath, const char *directory)
static int move_file(const char* sandboxuser, const char *filepath, const char *directory)
{
ASSERT(filepath != NULL, return -1);
ASSERT(directory != NULL, return -1);
int ret = finalize_download_file(filepath);
int ret = finalize_download_file(sandboxuser, filepath);
if(ret != 0) {
return ret;
}
@ -1106,45 +1104,33 @@ static int finalize_download_locations(alpm_list_t *payloads, const char *localp
ASSERT(payloads != NULL, return -1);
ASSERT(localpath != NULL, return -1);
alpm_list_t *p;
struct stat st;
int returnvalue = 0;
for(p = payloads; p; p = p->next) {
struct dload_payload *payload = p->data;
const char *filename = NULL;
if(payload->destfile_name && stat(payload->destfile_name, &st) == 0) {
filename = payload->destfile_name;
} else if(stat(payload->tempfile_name, &st) == 0) {
filename = payload->tempfile_name;
alpm_handle_t *handle = payload->handle;
if(payload->tempfile_name) {
move_file(handle->sandboxuser, payload->tempfile_name, localpath);
}
if(filename) {
int ret = move_file(filename, localpath);
if(payload->destfile_name) {
int ret = move_file(handle->sandboxuser, payload->destfile_name, localpath);
if(ret == -1) {
/* ignore error if the file already existed - only signature file was downloaded */
if(payload->mtime_existing_file == 0) {
_alpm_log(payload->handle, ALPM_LOG_ERROR, _("could not move %s into %s (%s)\n"),
filename, localpath, strerror(errno));
_alpm_log(handle, ALPM_LOG_ERROR, _("could not move %s into %s (%s)\n"),
payload->destfile_name, localpath, strerror(errno));
returnvalue = -1;
}
}
}
if (payload->download_signature) {
char *sig_filename;
int ret;
filename = payload->destfile_name ? payload->destfile_name : payload->tempfile_name;
sig_filename = _alpm_get_fullpath("", filename, ".sig");
ASSERT(sig_filename, RET_ERR(payload->handle, ALPM_ERR_MEMORY, -1));
ret = move_file(sig_filename, localpath);
free(sig_filename);
if(ret == -1) {
sig_filename = _alpm_get_fullpath("", filename, ".sig.part");
ASSERT(sig_filename, RET_ERR(payload->handle, ALPM_ERR_MEMORY, -1));
move_file(sig_filename, localpath);
free(sig_filename);
if (payload->download_signature) {
const char sig_suffix[] = ".sig";
char *sig_filename = NULL;
size_t sig_filename_len = strlen(payload->destfile_name) + sizeof(sig_suffix);
MALLOC(sig_filename, sig_filename_len, continue);
snprintf(sig_filename, sig_filename_len, "%s%s", payload->destfile_name, sig_suffix);
move_file(handle->sandboxuser, sig_filename, localpath);
FREE(sig_filename);
}
}
}
@ -1203,14 +1189,12 @@ int _alpm_download(alpm_handle_t *handle,
const char *temporary_localpath)
{
int ret;
int finalize_ret;
int childsig = 0;
prepare_resumable_downloads(payloads, localpath, handle->sandboxuser);
if(handle->fetchcb == NULL) {
#ifdef HAVE_LIBCURL
if(handle->sandboxuser) {
ret = curl_download_internal_sandboxed(handle, payloads, temporary_localpath, &childsig);
ret = curl_download_internal_sandboxed(handle, payloads, temporary_localpath);
} else {
ret = curl_download_internal(handle, payloads);
}
@ -1285,21 +1269,13 @@ download_signature:
ret = updated ? 0 : 1;
}
finalize_ret = finalize_download_locations(payloads, localpath);
_alpm_remove_temporary_download_dir(temporary_localpath);
/* propagate after finalizing so .part files get copied over */
if(childsig != 0) {
kill(getpid(), childsig);
}
if(finalize_ret != 0 && ret == 0) {
if (finalize_download_locations(payloads, localpath) != 0 && ret == 0) {
RET_ERR(handle, ALPM_ERR_RETRIEVE, -1);
}
return ret;
}
static const char *url_basename(const char *url)
static char *filecache_find_url(alpm_handle_t *handle, const char *url)
{
const char *filebase = strrchr(url, '/');
@ -1312,7 +1288,7 @@ static const char *url_basename(const char *url)
return NULL;
}
return filebase;
return _alpm_filecache_find(handle, filebase);
}
int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
@ -1334,26 +1310,9 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
for(i = urls; i; i = i->next) {
char *url = i->data;
char *filepath = NULL;
const char *urlbase = url_basename(url);
if(urlbase) {
/* attempt to find the file in our pkgcache */
filepath = _alpm_filecache_find(handle, urlbase);
if(filepath && (handle->siglevel & ALPM_SIG_PACKAGE)) {
char *sig_filename = _alpm_get_fullpath("", urlbase, ".sig");
/* if there's no .sig file then forget about the pkg file and go for download */
if(!_alpm_filecache_exists(handle, sig_filename)) {
free(filepath);
filepath = NULL;
}
free(sig_filename);
}
}
/* attempt to find the file in our pkgcache */
char *filepath = filecache_find_url(handle, url);
if(filepath) {
/* the file is locally cached so add it to the output right away */
alpm_list_append(fetched, filepath);
@ -1402,12 +1361,12 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
if(payloads) {
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
event.pkg_retrieve.num = alpm_list_count(payloads);
event.pkg_retrieve.total_size = 0;
EVENT(handle, &event);
if(_alpm_download(handle, payloads, cachedir, temporary_cachedir) == -1) {
_alpm_log(handle, ALPM_LOG_WARNING, _("failed to retrieve some files\n"));
event.type = ALPM_EVENT_PKG_RETRIEVE_FAILED;
EVENT(handle, &event);
GOTO_ERR(handle, ALPM_ERR_RETRIEVE, err);
} else {
event.type = ALPM_EVENT_PKG_RETRIEVE_DONE;
@ -1422,8 +1381,7 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
const char *filename = mbasename(payload->destfile_name);
filepath = _alpm_filecache_find(handle, filename);
} else {
const char *filename = mbasename(payload->tempfile_name);
filepath = _alpm_filecache_find(handle, filename);
STRDUP(filepath, payload->tempfile_name, GOTO_ERR(handle, ALPM_ERR_MEMORY, err));
}
if(filepath) {
alpm_list_append(fetched, filepath);
@ -1437,11 +1395,13 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
FREELIST(payloads);
}
_alpm_remove_temporary_download_dir(temporary_cachedir);
FREE(temporary_cachedir);
return 0;
err:
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
_alpm_remove_temporary_download_dir(temporary_cachedir);
FREE(temporary_cachedir);
FREELIST(payloads);
FREELIST(*fetched);
@ -1453,11 +1413,6 @@ void _alpm_dload_payload_reset(struct dload_payload *payload)
{
ASSERT(payload, return);
if(payload->localf != NULL) {
fclose(payload->localf);
payload->localf = NULL;
}
FREE(payload->remote_name);
FREE(payload->tempfile_name);
FREE(payload->destfile_name);

View file

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

View file

@ -1,7 +1,7 @@
/*
* error.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
*
* This program is free software; you can redistribute it and/or modify
@ -137,7 +137,7 @@ const char SYMEXPORT *alpm_strerror(alpm_errno_t err)
return _("conflicting dependencies");
case ALPM_ERR_FILE_CONFLICTS:
return _("conflicting files");
/* Miscellaneous */
/* Miscellaenous */
case ALPM_ERR_RETRIEVE:
return _("failed to retrieve some files");
case ALPM_ERR_INVALID_REGEX:

View file

@ -1,7 +1,7 @@
/*
* filelist.c
*
* Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2012-2024 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

View file

@ -1,7 +1,7 @@
/*
* filelist.h
*
* Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2012-2024 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

View file

@ -1,7 +1,7 @@
/*
* graph.c - helpful graph structure and setup/teardown methods
*
* Copyright (c) 2007-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2007-2024 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

View file

@ -1,7 +1,7 @@
/*
* graph.h - helpful graph structure and setup/teardown methods
*
* Copyright (c) 2007-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2007-2024 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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
/*
* handle.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
@ -935,12 +935,6 @@ int SYMEXPORT alpm_option_get_remote_file_siglevel(alpm_handle_t *handle)
}
}
int SYMEXPORT alpm_option_get_disable_dl_timeout(alpm_handle_t *handle)
{
CHECK_HANDLE(handle, return -1);
return handle->disable_dl_timeout;
}
int SYMEXPORT alpm_option_set_disable_dl_timeout(alpm_handle_t *handle,
unsigned short disable_dl_timeout)
{
@ -958,12 +952,6 @@ int SYMEXPORT alpm_option_set_parallel_downloads(alpm_handle_t *handle,
return 0;
}
int SYMEXPORT alpm_option_get_disable_sandbox(alpm_handle_t *handle)
{
CHECK_HANDLE(handle, return -1);
return handle->disable_sandbox;
}
int SYMEXPORT alpm_option_set_disable_sandbox(alpm_handle_t *handle,
unsigned short disable_sandbox)
{

View file

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

View file

@ -1,7 +1,7 @@
/*
* hook.c
*
* Copyright (c) 2015-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2015-2024 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

View file

@ -1,7 +1,7 @@
/*
* hook.h
*
* Copyright (c) 2015-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2015-2024 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

View file

@ -4,7 +4,7 @@
/*
* libarchive-compat.h
*
* Copyright (c) 2013-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2013-2024 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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
/*
* pkghash.c
*
* Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2011-2024 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

View file

@ -1,7 +1,7 @@
/*
* pkghash.h
*
* Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2011-2024 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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
/*
* sandbox.c
*
* Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2021-2024 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
@ -235,9 +235,7 @@ bool _alpm_sandbox_process_cb_download(alpm_handle_t *handle, int callback_pipe)
ASSERT(read_from_pipe(callback_pipe, filename, filename_size) != -1, FREE(filename); return false);
filename[filename_size] = '\0';
if(handle->dlcb) {
handle->dlcb(handle->dlcb_ctx, filename, type, &cb_data);
}
handle->dlcb(handle->dlcb_ctx, filename, type, &cb_data);
FREE(filename);
return true;
}

View file

@ -1,7 +1,7 @@
/*
* sandbox_fs.c
*
* Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2021-2024 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
@ -150,9 +150,6 @@ bool _alpm_sandbox_fs_restrict_writes_to(alpm_handle_t *handle, const char *path
path_beneath.parent_fd = open(path, O_PATH | O_CLOEXEC | O_DIRECTORY);
path_beneath.allowed_access = _LANDLOCK_ACCESS_FS_READ | _LANDLOCK_ACCESS_FS_WRITE | _LANDLOCK_ACCESS_FS_TRUNCATE;
/* make sure allowed_access is a subset of handled_access_fs, which may change for older landlock ABI */
path_beneath.allowed_access &= ruleset_attr.handled_access_fs;
if(landlock_add_rule(ruleset_fd, LANDLOCK_RULE_PATH_BENEATH, &path_beneath, 0) == 0) {
if(landlock_restrict_self(ruleset_fd, 0)) {
_alpm_log(handle, ALPM_LOG_ERROR, _("restricting filesystem access failed because the landlock ruleset could not be applied!\n"));

View file

@ -1,7 +1,7 @@
/*
* sandbox_fs.h
*
* Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2021-2024 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

View file

@ -1,7 +1,7 @@
/*
* signing.c
*
* Copyright (c) 2008-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2008-2024 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
@ -371,6 +371,46 @@ static int key_search_keyserver(alpm_handle_t *handle, const char *fpr,
pgpkey->expires = key->subkeys->expires;
pgpkey->length = key->subkeys->length;
pgpkey->revoked = key->subkeys->revoked;
/* Initialize with '?', this is overwritten unless public key
* algorithm is unknown. */
pgpkey->pubkey_algo = '?';
switch(key->subkeys->pubkey_algo) {
case GPGME_PK_RSA:
case GPGME_PK_RSA_E:
case GPGME_PK_RSA_S:
pgpkey->pubkey_algo = 'R';
break;
case GPGME_PK_DSA:
pgpkey->pubkey_algo = 'D';
break;
case GPGME_PK_ELG_E:
case GPGME_PK_ELG:
case GPGME_PK_ECDSA:
case GPGME_PK_ECDH:
/* value added in gpgme 1.5.0 */
#if GPGME_VERSION_NUMBER >= 0x010500
case GPGME_PK_ECC:
#endif
/* value added in gpgme 1.7.0 */
#if GPGME_VERSION_NUMBER >= 0x010700
case GPGME_PK_EDDSA:
#endif
pgpkey->pubkey_algo = 'E';
break;
}
ret = 1;
/* We do not want to add a default switch case above to receive
* compiler error on new public key algorithm in gpgme. So check
* here if we have a valid pubkey_algo. */
if (pgpkey->pubkey_algo == '?') {
_alpm_log(handle, ALPM_LOG_DEBUG,
"unknown public key algorithm: %d\n", key->subkeys->pubkey_algo);
}
gpg_error:
if(ret != 1) {

View file

@ -1,7 +1,7 @@
/*
* signing.h
*
* Copyright (c) 2008-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2008-2024 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

View file

@ -1,7 +1,7 @@
/*
* sync.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@ -817,8 +817,6 @@ static int download_files(alpm_handle_t *handle)
}
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
event.pkg_retrieve.total_size = 0;
event.pkg_retrieve.num = 0;
/* sum up the number of packages to download and its total size */
for(i = files; i; i = i->next) {
@ -882,6 +880,7 @@ finish:
pkg->infolevel &= ~INFRQ_DSIZE;
pkg->download_size = 0;
}
_alpm_remove_temporary_download_dir(temporary_cachedir);
FREE(temporary_cachedir);
return ret;

View file

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

View file

@ -1,7 +1,7 @@
/*
* trans.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@ -203,7 +203,7 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
RET_ERR(handle, ALPM_ERR_TRANS_HOOK_FAILED, -1);
}
trans->state = STATE_COMMITTING;
trans->state = STATE_COMMITING;
alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction started\n");
event.type = ALPM_EVENT_TRANSACTION_START;
@ -239,7 +239,7 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
}
}
trans->state = STATE_COMMITTED;
trans->state = STATE_COMMITED;
return 0;
}
@ -253,7 +253,7 @@ int SYMEXPORT alpm_trans_interrupt(alpm_handle_t *handle)
trans = handle->trans;
ASSERT(trans != NULL, RET_ERR_ASYNC_SAFE(handle, ALPM_ERR_TRANS_NULL, -1));
ASSERT(trans->state == STATE_COMMITTING || trans->state == STATE_INTERRUPTED,
ASSERT(trans->state == STATE_COMMITING || trans->state == STATE_INTERRUPTED,
RET_ERR_ASYNC_SAFE(handle, ALPM_ERR_TRANS_TYPE, -1));
trans->state = STATE_INTERRUPTED;

View file

@ -1,7 +1,7 @@
/*
* trans.h
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@ -30,8 +30,8 @@ typedef enum _alpm_transstate_t {
STATE_INITIALIZED,
STATE_PREPARED,
STATE_DOWNLOADING,
STATE_COMMITTING,
STATE_COMMITTED,
STATE_COMMITING,
STATE_COMMITED,
STATE_INTERRUPTED
} alpm_transstate_t;

View file

@ -1,7 +1,7 @@
/*
* util.c
*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
@ -590,7 +590,9 @@ void _alpm_reset_signals(void)
#endif
0
};
struct sigaction def = { .sa_handler = SIG_DFL };
struct sigaction def;
def.sa_flags = 0;
def.sa_handler = SIG_DFL;
sigemptyset(&def.sa_mask);
for(i = signals; *i; i++) {
sigaction(*i, &def, NULL);
@ -967,7 +969,8 @@ char *_alpm_temporary_download_dir_setup(const char *dir, const char *user)
char *newdir = NULL;
MALLOC(newdir, newdirlen, return NULL);
snprintf(newdir, newdirlen - 1, "%s%s", dir, template);
if(mkdtemp(newdir) == NULL) {
newdir = mkdtemp(newdir);
if(newdir == NULL) {
free(newdir);
return NULL;
}

View file

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

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
* Copyright (c) 2006-2024 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

View file

@ -433,8 +433,6 @@ configure_file(
configuration : substs,
install_dir : join_paths(SYSCONFDIR, 'makepkg.conf.d/'))
install_emptydir(join_paths(SYSCONFDIR, 'makepkg.d/'))
configure_file(
input : 'etc/pacman.conf.in',
output : 'pacman.conf',

View file

@ -3,7 +3,7 @@
# NOTE: Please fill out the license field for your package! If it is unknown,
# then please put 'unknown'.
# Guidelines specific to Bazaar, Git, Mercurial and Subversion packages.
# The following guidelines are specific to BZR, GIT, HG and SVN packages.
# Other VCS sources are not natively supported by makepkg yet.
# Maintainer: Your Name <youremail@domain.com>

View file

@ -2,7 +2,7 @@
#
# autodep.sh - functions for automatically adding depends/provides
#
# Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2021-2024 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

View file

@ -2,7 +2,7 @@
#
# library_depends.sh - Automatically add library requirements to depends
#
# Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2021-2024 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
@ -51,8 +51,8 @@ library_depends() {
unset prefix
for libdir in ${LIB_DIRS[@]}; do
if [[ ${libdir#*:} == ${libpath} ]]; then
prefix=${libdir%%:*}
if [[ ${libdir/*:} == ${libpath} ]]; then
prefix=${libdir/:*}
fi
done

View file

@ -2,7 +2,7 @@
#
# library_provides.sh - Automatically add a packages libraries to provides
#
# Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2021-2024 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
@ -28,8 +28,8 @@ autodep_functions+=('library_provides')
library_provides() {
if check_option "autodeps" "y"; then
for lib in ${LIB_DIRS[@]}; do
dir=${lib#*:}
prefix=${lib%%:*}
dir=${lib/*:}
prefix=${lib/:*}
if [[ ! -d "$pkgdir/$dir" ]]; then
continue;

View file

@ -3,7 +3,7 @@
# buildenv.sh - functions for altering the build environment before
# compilation
#
# Copyright (c) 2015-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2015-2024 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

View file

@ -2,7 +2,7 @@
#
# buildflags.sh - Clear user-specified buildflags if requested
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -4,7 +4,7 @@
# ccache - Cache compilations and reuse them to save time on repetitions
# distcc - Distribute compilation of C and C++ across machines
#
# Copyright (c) 2007-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2007-2024 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
@ -44,9 +44,8 @@ buildenv_ccache() {
buildenv_distcc() {
if check_buildoption "distcc" "y"; then
if (( using_ccache )); then
local distcc=$(type -p distcc)
if [[ " $CCACHE_PREFIX " != *" ${distcc} "* ]]; then
export CCACHE_PREFIX="${CCACHE_PREFIX:+$CCACHE_PREFIX }${distcc}"
if [[ " $CCACHE_PREFIX " != *" distcc "* ]]; then
export CCACHE_PREFIX="${CCACHE_PREFIX:+$CCACHE_PREFIX }distcc"
fi
export CCACHE_BASEDIR="$srcdir"
elif [[ -d /usr/lib/distcc/bin ]]; then

View file

@ -3,7 +3,7 @@
# debugflags.sh - Specify flags for building a package with debugging
# symbols
#
# Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2012-2024 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

View file

@ -2,7 +2,7 @@
#
# fortran.sh - Specify flags for building a package with Fortran
#
# Copyright (c) 2024-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2024 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

View file

@ -3,7 +3,7 @@
# lto.sh - Specify flags for building a package with link-time
# optimisation
#
# Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2021-2024 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

View file

@ -2,7 +2,7 @@
#
# makeflags.sh - Clear user-specified makeflags if requested
#
# Copyright (c) 2007-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2007-2024 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

View file

@ -2,7 +2,7 @@
#
# rust.sh - Specify flags for building a package with rust
#
# Copyright (c) 2022-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2022-2024 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

View file

@ -2,7 +2,7 @@
#
# executable.sh - confirm presence of dependent executables
#
# Copyright (c) 2018-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2018-2024 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

View file

@ -2,7 +2,7 @@
#
# ccache.sh - Confirm presence of ccache binary
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# checksum.sh - Confirm presence of binaries for checksum operations
#
# Copyright (c) 2016-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2016-2024 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

View file

@ -2,7 +2,7 @@
#
# debugedit.sh - Confirm presence of debugedit binary
#
# Copyright (c) 2022-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2022-2024 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

View file

@ -2,7 +2,7 @@
#
# distcc.sh - Confirm presence of distcc binary
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# fakeroot.sh - Confirm presence of fakeroot binary
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# gpg.sh - Confirm presence of gpg binary
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# gzip.sh - Confirm presence of gzip binary
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# pacman.sh - Confirm presence of pacman binary
#
# Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2012-2024 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

View file

@ -2,7 +2,7 @@
#
# strip.sh - Confirm presence of strip binary
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# sudo.sh - Confirm presence of sudo binary
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# vcs.sh - Confirm presence of binaries for VCS operations
#
# Copyright (c) 2014-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2014-2024 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

View file

@ -2,7 +2,7 @@
#
# integrity.sh - functions relating to source integrity checking
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# generate_checksum.sh - functions for generating source checksums
#
# Copyright (c) 2014-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2014-2024 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

View file

@ -2,7 +2,7 @@
#
# generate_signature.sh - functions for generating PGP signatures
#
# Copyright (c) 2008-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2008-2024 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

View file

@ -2,7 +2,7 @@
#
# verify_checksum.sh - functions for checking source checksums
#
# Copyright (c) 2014-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2014-2024 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

View file

@ -2,7 +2,7 @@
#
# verify_signature.sh - functions for checking PGP signatures
#
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2011-2024 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

View file

@ -2,7 +2,7 @@
#
# lint_config.sh - functions for checking for makepkg.conf errors
#
# Copyright (c) 2018-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
# Copyright (c) 2018-2024 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

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