Compare commits

..

7 commits

Author SHA1 Message Date
Allan McRae
1f38429b1c Initialise callback event fields
While the event is already globally initialised, initialising the fields
prevents a valgrind warning (since the gcc-15 update).

Signed-off-by: Allan McRae <allan@archlinux.org>
(cherry picked from commit 0d37c1daa0)
2025-06-04 09:18:37 +10:00
Guillaume
c685ae6412 fix a segfault in sandbox.c if handle->dlcb is null
(cherry picked from commit a2d029388c)
2024-11-16 13:17:39 +10:00
Chih-Hsuan Yen
e3aedfb7aa Correctly configure landlock for older ABIs
For example, with landlock ABI < 3, LANDLOCK_ACCESS_FS_TRUNCATE is not
set in ruleset_attr.handled_access_fs, so it should not be set in
path_beneath.allowed_access either. Otherwise, landlock_add_rule fails
with -EINVAL, and pacman complains:

> error: restricting filesystem access failed because the landlock rule for the temporary download directory could not be added!

The change is tested on Debian Bookworm kernel
linux-image-6.1.0-25-cloud-amd64 6.1.106-3.

(cherry picked from commit e80569f5da)
2024-11-16 13:17:29 +10:00
Rafael Fontenelle
2a147eb7bb Add double colon for newline after MAKEPKG_LINT_PKGBUILD in makepkg.8.asciidoc
(cherry picked from commit 60ec268458)
2024-11-16 13:17:19 +10:00
Allan McRae
77361331ae libalpm: only chown downloaded files when running as root
Some libaplm utilities sync databases as a non-root user for use in
actvities other than system updates.  The ability to download as a
non-root user was broken as part of the download sandboxing.

Applying a minimial fix by preventing the chown of the downloaded file
if the user is non-root.  A larger change increasing the robustness
and error checking of this path is warranted in the future.

Signed-off-by: Allan McRae <allan@archlinux.org>
(cherry picked from commit 7bc5d55b56)
2024-09-08 12:18:38 +10:00
KaranveerB
6270dd81a3 pacman/util.c: fix segfault when replace in strreplace is NULL
(cherry picked from commit 4c18204938)
2024-08-18 22:42:54 +10:00
Allan McRae
7cf2b0186d Fix typo in git source handling
Fixes #171

Signed-off-by: Allan McRae <allan@archlinux.org>
(cherry picked from commit c3aa1bc123)
2024-08-02 11:24:47 +10:00
225 changed files with 657 additions and 1149 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> Dave Reisner <dreisner@archlinux.org> <d@falconindy.com>
甘露(Gan Lu) <rhythm.gan@gmail.com> 甘露(Gan Lu) <rhythm.gan@gmail.com>
Giovanni Scafora <giovanni@archlinux.org> <linuxmania@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> Jaroslaw Swierczynski <swiergot@gmail.com> <swiergot@juvepoland.com>
Jonathan Conder <j@skurvy.no-ip.org> <jonno.conder@gmail.com> Jonathan Conder <j@skurvy.no-ip.org> <jonno.conder@gmail.com>
Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar> Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>

10
NEWS
View file

@ -1,6 +1,6 @@
VERSION DESCRIPTION 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. when downloading files.
- Download files to a temporary directory owned by DownloadUser - Download files to a temporary directory owned by DownloadUser
- On Linux systems, ensure the download process does not write - On Linux systems, ensure the download process does not write
@ -649,7 +649,7 @@ VERSION DESCRIPTION
file overwrites from malicious databases file overwrites from malicious databases
- makepkg: - makepkg:
- restrict package name from starting with a dot - 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 - Use LOGDEST for log pipe
- fix distcc disabling (FS#35741) - fix distcc disabling (FS#35741)
- correct stat usage on BSD/Darwin (FS#35469) - correct stat usage on BSD/Darwin (FS#35469)
@ -665,7 +665,7 @@ VERSION DESCRIPTION
FS#34716, FS#35097) FS#34716, FS#35097)
- makepkg: - makepkg:
- improve SVN VCS PKGBUILD handling (FS#34675, FS#34636) - 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) - prevent pkgver() capturing stderr (FS#34974)
- fix attempt to remove package twice on failure (FS#34672) - fix attempt to remove package twice on failure (FS#34672)
- contrib: - contrib:
@ -1338,7 +1338,7 @@ VERSION DESCRIPTION
- add source package creation option - add source package creation option
- rankmirrors- allow reading from stdin (FS#8043) - rankmirrors- allow reading from stdin (FS#8043)
- and many other updates: 198 bugs/FRs closed since 3.0.0 release - 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 3.0.6 - config files updated to reflect current -> core change
- fix symlink overwriting issue (FS#7484) - fix symlink overwriting issue (FS#7484)
- fix config parsing with tr_TR locale (FS#7235) - fix config parsing with tr_TR locale (FS#7235)
@ -1490,7 +1490,7 @@ VERSION DESCRIPTION
- Cleanup db_loadpkgs(), add list_add_sorted() - Cleanup db_loadpkgs(), add list_add_sorted()
- Fixed a memory leak in db_find_conflicts() - Fixed a memory leak in db_find_conflicts()
2.8.3 - Fixed a little makepkg bug with bash 3.0 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 --config option to specify an alternate config file
- Added "Include" directive to include repositories from - Added "Include" directive to include repositories from
config files (inspired by Michael Baehr's patch) 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 indicates some limitations (on purpose, or sometimes due to its poor design) of
the library at the present time. 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 should be distributed and installed on systems with the library. Only
structures, data and functions declared within this file are made available to 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 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_checkdbconflicts()
- alpm_sync_newversion() - alpm_sync_newversion()
- alpm_deptest() - alpm_deptest()
- error codes: - error codes :
PM_ERR_DLT_INVALID, PM_ERR_LIBARCHIVE, PM_ERR_LIBDOWNLOAD and PM_ERR_DLT_INVALID, PM_ERR_LIBARCHIVE, PM_ERR_LIBDOWNLOAD and
PM_ERR_EXTERNAL_DOWNLOAD PM_ERR_EXTERNAL_DOWNLOAD
- flags: - flags:
@ -352,7 +352,7 @@ API CHANGES BETWEEN 3.4 AND 3.5
- alpm_db_get_pkg() for normal targets - alpm_db_get_pkg() for normal targets
- alpm_find_dbs_satisfier() for versioned provisions - alpm_find_dbs_satisfier() for versioned provisions
- alpm_find_grp_pkgs() for groups - 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 - size_t used for alpm_list_t sizes
- return type for alpm_list_count() - return type for alpm_list_count()
- parameter type in alpm_list_msort() and alpm_list_nth() - 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_find_grp_pkgs()
- alpm_trans_get_flags() - alpm_trans_get_flags()
- error codes: - error codes:
PM_ERR_DISK_SPACE, PM_ERR_WRITE PM_ERR_DISK_SPACE, PM_ERR_WRITE
- flags: - flags
PM_TRANS_FLAG_NODEPVERSION, PM_TRANS_EVT_DISKSPACE_START, PM_TRANS_FLAG_NODEPVERSION, PM_TRANS_EVT_DISKSPACE_START,
PM_TRANS_EVT_DISKSPACE_DONE, PM_TRANS_CONV_SELECT_PROVIDER, PM_TRANS_EVT_DISKSPACE_DONE, PM_TRANS_CONV_SELECT_PROVIDER,
PM_TRANS_PROGRESS_DISKSPACE_START, PM_TRANS_PROGRESS_INTEGRITY_START PM_TRANS_PROGRESS_DISKSPACE_START, PM_TRANS_PROGRESS_INTEGRITY_START
API CHANGES BETWEEN 3.5 AND 4.0 API CHANGES BETWEEN 3.5 AND 4.0
@ -419,7 +419,7 @@ API CHANGES BETWEEN 3.5 AND 4.0
- alpm_release - alpm_release
- alpm_remove_pkg - alpm_remove_pkg
- alpm_sync_sysupgrade - alpm_sync_sysupgrade
- several structs are no longer opaque: - several structs are no longer opaque
- alpm_conflict_t - alpm_conflict_t
- alpm_delta_t - alpm_delta_t
- alpm_depend_t - alpm_depend_t
@ -431,33 +431,19 @@ API CHANGES BETWEEN 3.5 AND 4.0
[ADDED] [ADDED]
- option functions: - option functions:
- alpm_{get,set}_eventcb() alpm_{get,set}_eventcb(), alpm_option_{get,set}_convcb(),
- alpm_option_{get,set}_convcb() alpm_option_{get,set}_progresscb()
- alpm_option_{get,set}_progresscb()
- package signing functions: - package signing functions:
- alpm_option_get_default_siglevel() alpm_option_get_default_siglevel(), alpm_option_set_default_siglevel(),
- alpm_option_set_default_siglevel() alpm_option_get_gpgdir(), alpm_option_set_gpgdir(), alpm_db_get_siglevel(),
- alpm_option_get_gpgdir() alpm_siglist_cleanup(), alpm_db_check_pgp_signature(), alpm_pkg_check_pgp_signature(),
- alpm_option_set_gpgdir() alpm_pkg_get_origin(), alpm_pkg_get_sha256sum(), alpm_pkg_get_base64_sig()
- 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: - list functions:
- alpm_list_to_array() alpm_list_to_array(), alpm_list_previous()
- alpm_list_previous()
- structs: - structs:
- alpm_backup_t alpm_backup_t, alpm_file_t, alpm_filelist_t
- alpm_file_t
- alpm_filelist_t
- enums: - enums:
- alpm_siglevel_t alpm_siglevel_t, alpm_sigstatus_t, alpm_sigvalidity_t, alpm_pkgfrom_t
- alpm_sigstatus_t
- alpm_sigvalidity_t
- alpm_pkgfrom_t
- error codes: - error codes:
ALPM_ERR_DB_INVALID, ALPM_ERR_DB_INVALID_SIG, ALPM_ERR_GPGME, 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, 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_unregister_all -> alpm_unregister_all_syncdbs
- alpm_db_readgroup -> alpm_db_get_group - alpm_db_readgroup -> alpm_db_get_group
- alpm_db_set_pkgreason -> alpm_pkg_set_reason (handle parameter removed) - 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 - members of alpm_pgpkey_t
- return types of alpm_pkg_get_builddate and alpm_pkg_get_installdate - 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_get_usedelta -> alpm_option_get_deltaratio
- alpm_option_set_usedelta -> alpm_option_set_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_usage_t
- alpm_db_set_usage() - alpm_db_set_usage()
- alpm_db_get_usage() - alpm_db_get_usage()
- wrapper functions for reading mtree files: - wrapper functions for reading mtree files
- alpm_pkg_mtree_open() - alpm_pkg_mtree_open()
- alpm_pkg_mtree_next() - alpm_pkg_mtree_next()
- alpm_pkg_mtree_close() - alpm_pkg_mtree_close()
- utility functions: - utility functions
- alpm_pkg_find() - alpm_pkg_find()
- alpm_pkg_compute_optionalfor() - alpm_pkg_compute_optionalfor()
- alpm_filelist_contains() - alpm_filelist_contains()
- types: - types
- alpm_time_t - alpm_time_t
- alpm_errno_t - alpm_errno_t
- flags: - flags
ALPM_EVENT_OPTDEP_REQUIRED, ALPM_EVENT_DATABASE_MISSING, ALPM_EVENT_OPTDEP_REQUIRED, ALPM_EVENT_DATABASE_MISSING,
ALPM_EVENT_KEYRING_START, ALPM_EVENT_KEYRING_DONE, ALPM_EVENT_KEY_DOWNLOAD_START, ALPM_EVENT_KEYRING_START, ALPM_EVENT_KEYRING_DONE, ALPM_EVENT_KEY_DOWNLOAD_START,
ALPM_EVENT_KEY_DOWNLOAD_DONE, ALPM_PROGRESS_KEYRING_START ALPM_EVENT_KEY_DOWNLOAD_DONE, ALPM_PROGRESS_KEYRING_START
API CHANGES BETWEEN 4.1 AND 4.2 API CHANGES BETWEEN 4.1 AND 4.2
@ -527,49 +513,49 @@ API CHANGES BETWEEN 4.1 AND 4.2
[CHANGED] [CHANGED]
- alpm_filelist_t - removed member resolved_path - alpm_filelist_t - removed member resolved_path
- alpm_filelist_contains - now returns alpm_file_t - alpm_filelist_contains - now returns alpm_file_t
- event callback: - event callback
- alpm_event_t renamed to alpm_event_type_t - alpm_event_t renamed to alpm_event_type_t
- alpm_event_t union added - alpm_event_t union added
- alpm_event_cb now takes only an alpm_event_t parameter - 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_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_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_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_pacsave_created_t, alpm_event_pacorig_created_t added
- ALPM_EVENT_*_START -> ALPM_EVENT_PACKAGE_OPERATION_START - ALPM_EVENT_*_START -> ALPM_EVENT_PACKAGE_OPERATION_START
- ALPM_EVENT_*_DONE -> ALPM_EVENT_PACKAGE_OPERATION_DONE - ALPM_EVENT_*_DONE -> ALPM_EVENT_PACKAGE_OPERATION_DONE
- question callback: - question callback
- alpm_question_t renamed to alpm_question_type_t - alpm_question_t renamed to alpm_question_type_t
- alpm_question_t union added - alpm_question_t union added
- alpm_cb_question now takes only an alpm_question_t parameter - 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_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_conflict_t, alpm_question_corrupted_t, alpm_question_remove_pkgs_t,
alpm_question_select_provider_t, alpm_question_import_key_t added alpm_question_select_provider_t, alpm_question_import_key_t added
[ADDED] [ADDED]
- memory management: - memory management
- alpm_fileconflict_free() - alpm_fileconflict_free()
- alpm_depmissing_free() - alpm_depmissing_free()
- alpm_conflict_free() - alpm_conflict_free()
- alpm_dep_free() - alpm_dep_free()
- database usage: - database usage
- alpm_db_usage_t - alpm_db_usage_t
- alpm_db_set_usage() - alpm_db_set_usage()
- alpm_db_get_usage() - alpm_db_get_usage()
- assume installed: - assume installed
- alpm_option_get_assumeinstalled() - alpm_option_get_assumeinstalled()
- alpm_option_add_assumeinstalled() - alpm_option_add_assumeinstalled()
- alpm_option_set_assumeinstalled() - alpm_option_set_assumeinstalled()
- alpm_option_remove_assumeinstalled() - alpm_option_remove_assumeinstalled()
- using noupgrade/noextract: - using noupgrade/noextract
- alpm_option_match_noupgrade() - alpm_option_match_noupgrade()
- alpm_option_match_noextract() - alpm_option_match_noextract()
- utility functions: - utility functions
- alpm_dep_from_string() - alpm_dep_from_string()
- alpm_pkg_should_ignore() - alpm_pkg_should_ignore()
- alpm_decode_signature() - alpm_decode_signature()
- alpm_extract_keyid() - alpm_extract_keyid()
- flags: - flags
ALPM_EVENT_RETRIEVE_DONE, ALPM_EVENT_RETRIEVE_FAILED, ALPM_EVENT_PKGDOWNLOAD_START, - 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_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED, ALPM_EVENT_OPTDEP_REMOVAL,
ALPM_EVENT_PACNEW_CREATED, ALPM_EVENT_PACSVAE_CREATED, ALPM_EVENT_PACORIG_CREATED 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] [REMOVED]
- alpm_siglevel_t - removed members ALPM_SIG_PACKAGE_SET, ALPM_SIG_PACKAGE_TRUST_SET - 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
- alpm_event_pacorig_created_t - alpm_event_pacorig_created_t
- alpm_event_t.pacorig_created - alpm_event_t.pacorig_created
[ADDED] [ADDED]
- hook support: - hook support
- alpm_option_get_hookdirs() - alpm_option_get_hookdirs()
- alpm_option_set_hookdirs() - alpm_option_set_hookdirs()
- alpm_option_add_hookdir() - 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_START, ALPM_EVENT_HOOK_DONE
- ALPM_EVENT_HOOK_RUN_START, ALPM_EVENT_HOOK_RUN_DONE - ALPM_EVENT_HOOK_RUN_START, ALPM_EVENT_HOOK_RUN_DONE
- ALPM_ERR_TRANS_HOOK_FAILED - ALPM_ERR_TRANS_HOOK_FAILED
- different database extension support: - different database extension support
- alpm_option_get_dbext() - alpm_option_get_dbext()
- alpm_option_set_dbext() - alpm_option_set_dbext()
- pkgbase accessor: - pkgbase accessor
- alpm_pkg_get_base() - alpm_pkg_get_base()
- transaction events: - transaction events
- ALPM_EVENT_TRANSACTION_START, ALPM_EVENT_TRANSACTION_DONE - ALPM_EVENT_TRANSACTION_START, ALPM_EVENT_TRANSACTION_DONE
- database unlocking: - database unlocking
- alpm_unlock() - alpm_unlock()
@ -612,7 +598,7 @@ API CHANGES BETWEEN 5.0 AND 5.1
[CHANGED] [CHANGED]
- alpm_errno_t - added member ALPM_ERR_OK - alpm_errno_t - added member ALPM_ERR_OK
- alpm_siglevel_t - value of ALPM_SIG_USE_DEFAULT changed - 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_get_default_siglevel()
- alpm_option_set_default_siglevel() - alpm_option_set_default_siglevel()
- alpm_option_get_remote_file_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() - alpm_option_set_local_file_siglevel()
[ADDED] [ADDED]
- overwrite support: - overwrite support
- alpm_option_get_overwrite_files() - alpm_option_get_overwrite_files()
- alpm_option_set_overwrite_files() - alpm_option_set_overwrite_files()
- alpm_option_add_overwrite_file() - alpm_option_add_overwrite_file()
- alpm_option_remove_overwrite_file() - alpm_option_remove_overwrite_file()
- download timeout control: - download timeout control
- alpm_option_set_disable_dl_timeout() - alpm_option_set_disable_dl_timeout()
- access make/checkdepends info: - access make/checkdepends info
- alpm_pkg_get_checkdepends() - alpm_pkg_get_checkdepends()
- alpm_pkg_get_makedepends() - alpm_pkg_get_makedepends()
- check pacman capabilities: - check pacman capabilities
- alpm_capabilities() - alpm_capabilities()
- duplicate and add to list: - duplicate and add to list
- alpm_list_append_strdup() - alpm_list_append_strdup()
@ -649,7 +635,7 @@ API CHANGES BETWEEN 5.1 AND 5.2
=============================== ===============================
[REMOVED] [REMOVED]
- package delta support: - package delta support
- alpm_delta_t - alpm_delta_t
- alpm_event_delta_patch_t - alpm_event_delta_patch_t
- alpm_event_t union - removed 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] [REMOVED]
- ALPM_EVENT_PKGDOWNLOAD_START, ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED - ALPM_EVENT_PKGDOWNLOAD_START, ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED
- ALPM_ERR_PKG_REPO_NOT_FOUND - ALPM_ERR_PKG_REPO_NOT_FOUND
- old TotalDownload implementation: - old TotalDownload implementation
- alpm_cb_totaldl - alpm_cb_totaldl
- alpm_option_get_totaldlcb() - alpm_option_get_totaldlcb()
- alpm_option_set_totaldlcb() - alpm_option_set_totaldlcb()
[CHANGED] [CHANGED]
- alpm_db_update() now accepts a list of databases rather than a single database. - 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_db_search() now has an additional parameter and returns success status
- ALPM_EVENT_RETRIEVE_* -> ALPM_EVENT_DB_RETRIEVE_* and ALPM_EVENT_PKG_RETRIEVE_* - ALPM_EVENT_RETRIEVE_* -> ALPM_EVENT_DB_RETRIEVE_* and ALPM_EVENT_PKG_RETRIEVE_*
- alpm_cb_download pass event and data - alpm_cb_download pass event and data
- multi architecture support: - multi architecture support
- alpm_option_get_arch() -> alpm_option_get_architectures() - alpm_option_get_arch() -> alpm_option_get_architectures()
- alpm_option_set_arch() -> alpm_option_set_architectures() - alpm_option_set_arch() -> alpm_option_set_architectures()
- alpm_db_get_servers() copies parameter data - alpm_db_get_servers() copies parameter data
[ADDED] [ADDED]
- parallel download support: - parallel download support
- alpm_option_set_parallel_downloads() - alpm_option_set_parallel_downloads()
- alpm_option_get_parallel_downloads() - alpm_option_get_parallel_downloads()
- file download events: - file download events
- alpm_download_event_type_t - alpm_download_event_type_t
- alpm_download_event_init_t - alpm_download_event_init_t
- alpm_download_event_progress_t - alpm_download_event_progress_t
- alpm_download_event_completed_t - alpm_download_event_completed_t
- download misc: - download misc
- ALPM_DOWNLOAD_RETRY - ALPM_DOWNLOAD_RETRY
- alpm_download_event_retry_t - alpm_download_event_retry_t
- alpm_event_pkg_retrieve_t - alpm_event_pkg_retrieve_t
- multiarchitecture support: - multiarchitecture support
- alpm_option_add_architecture() - alpm_option_add_architecture()
- alpm_option_remove_architecture() - alpm_option_remove_architecture()
- misc: - misc
- alpm_pkg_get_sig() - alpm_pkg_get_sig()
- callbacks add front-end provided context - 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 - alpm_transflag_t - added ALPM_TRANS_FLAG_NOHOOKS
[ADDED] [ADDED]
- extensible package data type: - extensible package data type
- alpm_pkg_xdata_t - alpm_pkg_xdata_t
- alpm_pkg_get_xdata() - alpm_pkg_get_xdata()
- accessor functions: - accessor functions
- alpm_db_get_handle() - alpm_db_get_handle()
- alpm_pkg_get_handle() - alpm_pkg_get_handle()
- cache server support: - cache server support
- alpm_db_get_cache_servers() - alpm_db_get_cache_servers()
- alpm_db_set_cache_servers() - alpm_db_set_cache_servers()
- alpm_db_add_cache_server() - alpm_db_add_cache_server()
API CHANGES BETWEEN 6.1 AND 7.0 API CHANGES BETWEEN 6.1 AND 7.0
=============================== ===============================
[ADDED] [ADDED]
- sandbox functions: - sandbox functions
- alpm_option_get_sandboxuser() - alpm_option_get_sandboxuser()
- alpm_option_set_sandboxuser() - alpm_option_set_sandboxuser()
- alpm_option_set_disable_sandbox() - alpm_option_set_disable_sandbox()
- alpm_sandbox_setup_child() - 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

View file

@ -3,7 +3,7 @@ currently. Our translations are currently maintained in Transifex; please read
doc/translation-help.txt for more details. doc/translation-help.txt for more details.
Below is a list of past translators before we switched to Transifex; more can 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 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 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 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 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 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 a '=', one value per line. Arrays are represented multiple keys with the same
having the same key. value.
Description 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' Enable building packages using link time optimization. Adds '-flto'
to both CFLAGS and CXXFLAGS. 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 Packaging Functions
------------------- -------------------

View file

@ -1,5 +1,5 @@
## linkman: macro ## 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] # Usage: linkman:command[manpage-section]
# #

View file

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

View file

@ -247,11 +247,6 @@ Environment Variables
Use an alternate config file instead of the +{sysconfdir}/makepkg.conf+ Use an alternate config file instead of the +{sysconfdir}/makepkg.conf+
default. 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":: **PKGDEST=**"/path/to/directory"::
Directory where the resulting packages will be stored. Overrides the Directory where the resulting packages will be stored. Overrides the
corresponding value defined in linkman:makepkg.conf[5]. corresponding value defined in linkman:makepkg.conf[5].

View file

@ -62,11 +62,6 @@ Options
A string such as ``i686-pc-linux-gnu''; do not touch this unless you know what 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. 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":: **CPPFLAGS=**"cppflags"::
Flags used for the C preprocessor; see CFLAGS for more information. 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 +{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be
specified, and they are tried in the order they are passed to pacman. 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 *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 prepended.
specified user must have permission to access the cache directory.
*\--color* <when>:: *\--color* <when>::
Specify when to enable coloring. Valid options are 'always', 'never', or 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 # use this server first
Server = ftp://ftp.archlinux.org/$repo/os/$arch Server = ftp://ftp.archlinux.org/$repo/os/$arch
# next use servers as defined in the mirrorlist below # 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 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. on the command line.
A package database is a tar file, optionally compressed. Valid extensions are A package database is a tar file, optionally compressed. Valid extensions are
``.db'' followed by an archive extension of ``.tar'', ``.tar.bz2'', ``.db'' followed by an archive extension of ``.tar'', ``.tar.gz'', ``.tar.bz2'',
``.tar.gz'', ``.tar.lrz'', ``.tar.lz'', ``.tar.lz4'', ``.tar.lzo'', ``.tar.xz'', or ``.tar.Z''. The file does not need to exist, but all parent
``.tar.xz'', ``.tar.zst'' or ``.tar.Z''. The file does not need to exist, but directories must exist.
all parent directories must exist.
Common Options Common Options
@ -60,14 +59,6 @@ Common Options
*\--nocolor*:: *\--nocolor*::
Remove color from 'repo-add' and 'repo-remove' output. 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 repo-add Options
---------------- ----------------
@ -75,6 +66,10 @@ repo-add Options
Only add packages that are not already in the database. Warnings will be 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. 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-sigs*::
Include package PGP signatures in the repository database (if available) 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 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 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://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
* https://wiki.archlinux.org/index.php/Super_Quick_Git_Guide * 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, This document is here to guide you in helping translate pacman messages,
libalpm messages, and the manual pages for the entire pacman package. 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 platform for pacman and libalpm. You will need to sign up for an account there
and then register with a translation team on the 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 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 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. kbabel. Using a translation tool tends to make the job easier.
Please read up on Transifex usage using the 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 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 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 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] 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, mailing list asking for translations. This email will have a prefix of
which reaches everyone that is member of the translation team. *[translation]* for anyone looking to set up an email filter.
At this time, the latest `.po` language files will be made available at the 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, Transifex project page. Each language will have two files available (back-end
pacman and pacman-scripts). Translators interested in helping are encouraged to use the and front-end). Translators interested in helping are encouraged to use the
features of Transifex to let others know they are currently translating their features of Transifex to let others know they are currently translating their
language. 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. 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 speakers of your language time to review your translations and update them as
necessary. necessary.
@ -80,25 +80,21 @@ repository.
git clone https://gitlab.archlinux.org/pacman/pacman.git git clone https://gitlab.archlinux.org/pacman/pacman.git
Next, you will need to configure the build environment. From the base directory, Next, you will need to run `./autogen.sh` and `./configure` in the base
run: 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, make libalpm.pot-update
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`):
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 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 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 As a shortcut, all translation files (including `.pot` files) can be updated
with the following command: with the following command:
./build-aux/update-po make update-po
Adding a New Language 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/` 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 directories, substituting where appropriate. First, edit the `LINGUAS` file and
add your new language code at the bottom. Next, run the following command, 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: 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 You can then also add your language code to the end of the `LINGUAS` file
located in each po directory. located in each po directory.
@ -141,13 +137,11 @@ following two translations are equivalent:
msgstr "" msgstr ""
"This is a test translation" "This is a test translation"
If you want to test the translation (copy the .po file you want to test, If you want to test the translation (for example, the front-end one):
you may ignore the rest), replacing `<lang_code>` accordingly:
meson compile -C build pacman-scripts-gmo pacman-gmo libalpm-gmo rm *.gmo stamp-po
cp ./build/lib/libalpm/po/<lang_code>/LC_MESSAGES/libalpm.mo /usr/share/locale/<lang_code>/LC_MESSAGES/libalpm.mo make
cp ./build/scripts/po/<lang_code>/LC_MESSAGES/pacman-scripts.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman-scripts.mo cp <lang code>.gmo /usr/share/locale/<lang code>/LC_MESSAGES/pacman.mo
cp ./build/src/pacman/po/<lang_code>/LC_MESSAGES/pacman.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman.mo
Translating Manpages Translating Manpages

View file

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

View file

@ -1,7 +1,7 @@
/* /*
* add.c * 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> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* add.h * add.h
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* alpm.c * alpm.c
* *
* Copyright (c) 2006-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) 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>
@ -25,9 +25,6 @@
#include <curl/curl.h> #include <curl/curl.h>
#endif #endif
#include <errno.h>
#include <pwd.h>
/* libalpm */ /* libalpm */
#include "alpm.h" #include "alpm.h"
#include "alpm_list.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"; const char *lf = "db.lck";
char *hookdir; char *hookdir;
size_t hookdirlen, lockfilelen; size_t hookdirlen, lockfilelen;
struct passwd const *pw = NULL;
alpm_handle_t *myhandle = _alpm_handle_new(); alpm_handle_t *myhandle = _alpm_handle_new();
if(myhandle == NULL) { if(myhandle == NULL) {
@ -82,10 +78,6 @@ alpm_handle_t SYMEXPORT *alpm_initialize(const char *root, const char *dbpath,
myhandle->parallel_downloads = 1; 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 #ifdef ENABLE_NLS
bindtextdomain("libalpm", LOCALEDIR); bindtextdomain("libalpm", LOCALEDIR);
#endif #endif

View file

@ -1,7 +1,7 @@
/* /*
* alpm.h * 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) 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>
@ -34,7 +34,6 @@
extern "C" { extern "C" {
#endif #endif
#include <stdbool.h> /* bool */
#include <stdint.h> /* int64_t */ #include <stdint.h> /* int64_t */
#include <sys/types.h> /* off_t */ #include <sys/types.h> /* off_t */
#include <stdarg.h> /* va_list */ #include <stdarg.h> /* va_list */
@ -451,6 +450,14 @@ typedef struct _alpm_pgpkey_t {
unsigned int length; unsigned int length;
/** has the key been revoked */ /** has the key been revoked */
unsigned int 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; } alpm_pgpkey_t;
/** /**
@ -2257,12 +2264,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. /** Enables/disables the download timeout.
* @param handle the context handle * @param handle the context handle
* @param disable_dl_timeout 0 for enabled, 1 for disabled * @param disable_dl_timeout 0 for enabled, 1 for disabled
@ -2305,12 +2306,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. /** Enables/disables the sandbox.
* @param handle the context handle * @param handle the context handle
* @param disable_sandbox 0 for enabled, 1 for disabled * @param disable_sandbox 0 for enabled, 1 for disabled
@ -2976,10 +2971,9 @@ int alpm_capabilities(void);
* @param handle the context handle * @param handle the context handle
* @param sandboxuser the user to switch to * @param sandboxuser the user to switch to
* @param sandbox_path if non-NULL, restrict writes to this filesystem path * @param sandbox_path if non-NULL, restrict writes to this filesystem path
* @param restrict_syscalls whether to deny access to a list of dangerous syscalls
* @return 0 on success, -1 on failure * @return 0 on success, -1 on failure
*/ */
int alpm_sandbox_setup_child(alpm_handle_t *handle, const char *sandboxuser, const char *sandbox_path, bool restrict_syscalls); int alpm_sandbox_setup_child(alpm_handle_t *handle, const char *sandboxuser, const char *sandbox_path);
/* End of libalpm_misc */ /* End of libalpm_misc */
/** @} */ /** @} */

View file

@ -1,7 +1,7 @@
/* /*
* alpm_list.c * 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> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* alpm_list.h * alpm_list.h
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* backup.c * backup.c
* *
* Copyright (c) 2006-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 Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View file

@ -1,7 +1,7 @@
/* /*
* backup.h * backup.h
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* be_local.c : backend for the local database * be_local.c : backend for the local database
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* be_package.c : backend for packages * 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> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* be_sync.c : backend for sync databases * 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> * 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
@ -268,6 +268,7 @@ cleanup:
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset); alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
FREELIST(payloads); FREELIST(payloads);
} }
_alpm_remove_temporary_download_dir(temporary_syncpath);
FREE(temporary_syncpath); FREE(temporary_syncpath);
FREE(syncpath); FREE(syncpath);
umask(oldmask); 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 const struct pkg_operations *get_sync_pkg_ops(void)
{ {
static struct pkg_operations sync_pkg_ops; static struct pkg_operations sync_pkg_ops;
static int sync_pkg_ops_initialized = 0; static int sync_pkg_ops_initalized = 0;
if(!sync_pkg_ops_initialized) { if(!sync_pkg_ops_initalized) {
sync_pkg_ops = default_pkg_ops; sync_pkg_ops = default_pkg_ops;
sync_pkg_ops.get_validation = _sync_get_validation; sync_pkg_ops.get_validation = _sync_get_validation;
sync_pkg_ops_initialized = 1; sync_pkg_ops_initalized = 1;
} }
return &sync_pkg_ops; return &sync_pkg_ops;
} }

View file

@ -1,7 +1,7 @@
/* /*
* conflict.c * 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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org> * Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>

View file

@ -1,7 +1,7 @@
/* /*
* conflict.h * conflict.h
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* db.c * db.c
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View file

@ -1,7 +1,7 @@
/* /*
* db.h * 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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>

View file

@ -1,7 +1,7 @@
/* /*
* deps.c * deps.c
* *
* Copyright (c) 2006-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) 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>
@ -181,13 +181,13 @@ static void _alpm_warn_dep_cycle(alpm_handle_t *handle, alpm_list_t *targets,
} else { } else {
alpm_pkg_t *ancestorpkg = ancestor->data; alpm_pkg_t *ancestorpkg = ancestor->data;
alpm_pkg_t *childpkg = vertex->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) { if(reverse) {
_alpm_log(handle, ALPM_LOG_DEBUG, _alpm_log(handle, ALPM_LOG_WARNING,
_("%s will be removed after its %s dependency\n"), _("%s will be removed after its %s dependency\n"),
ancestorpkg->name, childpkg->name); ancestorpkg->name, childpkg->name);
} else { } else {
_alpm_log(handle, ALPM_LOG_DEBUG, _alpm_log(handle, ALPM_LOG_WARNING,
_("%s will be installed before its %s dependency\n"), _("%s will be installed before its %s dependency\n"),
ancestorpkg->name, childpkg->name); ancestorpkg->name, childpkg->name);
} }

View file

@ -1,7 +1,7 @@
/* /*
* deps.h * 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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>

View file

@ -1,7 +1,7 @@
/* /*
* diskspace.c * diskspace.c
* *
* Copyright (c) 2010-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* diskspace.h * diskspace.h
* *
* Copyright (c) 2010-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* dload.c * dload.c
* *
* Copyright (c) 2006-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) 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
@ -698,9 +698,9 @@ cleanup:
* only applies to FTP transfers. */ * only applies to FTP transfers. */
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L); curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, (char *)NULL); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, (char *)NULL);
if(payload->localf != NULL) { if(payload->localf != NULL) {
fclose(payload->localf); fclose(payload->localf);
payload->localf = NULL;
utimes_long(payload->tempfile_name, remote_time); utimes_long(payload->tempfile_name, remote_time);
} }
@ -880,6 +880,7 @@ static int curl_download_internal(alpm_handle_t *handle,
p = NULL; p = NULL;
err = -1; err = -1;
} }
while(true) { while(true) {
int msgs_left = 0; int msgs_left = 0;
CURLMsg *msg = curl_multi_info_read(curlm, &msgs_left); CURLMsg *msg = curl_multi_info_read(curlm, &msgs_left);
@ -903,6 +904,7 @@ static int curl_download_internal(alpm_handle_t *handle,
} }
} }
} }
int ret = err ? -1 : updated ? 0 : 1; int ret = err ? -1 : updated ? 0 : 1;
_alpm_log(handle, ALPM_LOG_DEBUG, "curl_download_internal return code is %d\n", ret); _alpm_log(handle, ALPM_LOG_DEBUG, "curl_download_internal return code is %d\n", ret);
alpm_list_free(payloads); alpm_list_free(payloads);
@ -916,15 +918,16 @@ static int curl_download_internal(alpm_handle_t *handle,
*/ */
static int curl_download_internal_sandboxed(alpm_handle_t *handle, static int curl_download_internal_sandboxed(alpm_handle_t *handle,
alpm_list_t *payloads /* struct dload_payload */, alpm_list_t *payloads /* struct dload_payload */,
const char *localpath, const char *localpath)
int *childsig)
{ {
int pid, err = 0, ret = -1, callbacks_fd[2]; int pid, err = 0, ret = -1, callbacks_fd[2];
sigset_t oldblock; 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; _alpm_sandbox_callback_context callbacks_ctx;
sigemptyset(&sa_ign.sa_mask); sigemptyset(&sa_ign.sa_mask);
sa_ign.sa_handler = SIG_IGN;
sa_ign.sa_flags=0;
if(pipe(callbacks_fd) != 0) { if(pipe(callbacks_fd) != 0) {
return -1; return -1;
@ -963,7 +966,7 @@ static int curl_download_internal_sandboxed(alpm_handle_t *handle,
_alpm_log(handle, ALPM_LOG_ERROR, _("could not chdir to download directory %s\n"), localpath); _alpm_log(handle, ALPM_LOG_ERROR, _("could not chdir to download directory %s\n"), localpath);
ret = -1; ret = -1;
} else { } else {
ret = alpm_sandbox_setup_child(handle, handle->sandboxuser, localpath, true); ret = alpm_sandbox_setup_child(handle, handle->sandboxuser, localpath);
if (ret != 0) { if (ret != 0) {
_alpm_log(handle, ALPM_LOG_ERROR, _("switching to sandbox user '%s' failed!\n"), handle->sandboxuser); _alpm_log(handle, ALPM_LOG_ERROR, _("switching to sandbox user '%s' failed!\n"), handle->sandboxuser);
_Exit(2); _Exit(2);
@ -1022,12 +1025,8 @@ static int curl_download_internal_sandboxed(alpm_handle_t *handle,
int wret; int wret;
while((wret = waitpid(pid, &ret, 0)) == -1 && errno == EINTR); while((wret = waitpid(pid, &ret, 0)) == -1 && errno == EINTR);
if(wret > 0) { if(wret > 0) {
if(WIFSIGNALED(ret)) {
*childsig = WTERMSIG(ret);
}
if(!WIFEXITED(ret)) { if(!WIFEXITED(ret)) {
/* the child did not terminate normally */ /* the child did not terminate normally */
handle->pm_errno = ALPM_ERR_RETRIEVE;
ret = -1; ret = -1;
} }
else { else {
@ -1106,45 +1105,30 @@ static int finalize_download_locations(alpm_list_t *payloads, const char *localp
ASSERT(payloads != NULL, return -1); ASSERT(payloads != NULL, return -1);
ASSERT(localpath != NULL, return -1); ASSERT(localpath != NULL, return -1);
alpm_list_t *p; alpm_list_t *p;
struct stat st;
int returnvalue = 0; int returnvalue = 0;
for(p = payloads; p; p = p->next) { for(p = payloads; p; p = p->next) {
struct dload_payload *payload = p->data; struct dload_payload *payload = p->data;
const char *filename = NULL; if(payload->tempfile_name) {
move_file(payload->tempfile_name, localpath);
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;
} }
if(payload->destfile_name) {
if(filename) { int ret = move_file(payload->destfile_name, localpath);
int ret = move_file(filename, localpath);
if(ret == -1) { if(ret == -1) {
/* ignore error if the file already existed - only signature file was downloaded */
if(payload->mtime_existing_file == 0) { 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));
returnvalue = -1; returnvalue = -1;
} }
} }
}
if (payload->download_signature) { if (payload->download_signature) {
char *sig_filename; const char sig_suffix[] = ".sig";
int ret; char *sig_filename = NULL;
size_t sig_filename_len = strlen(payload->destfile_name) + sizeof(sig_suffix);
filename = payload->destfile_name ? payload->destfile_name : payload->tempfile_name; MALLOC(sig_filename, sig_filename_len, continue);
sig_filename = _alpm_get_fullpath("", filename, ".sig"); snprintf(sig_filename, sig_filename_len, "%s%s", payload->destfile_name, sig_suffix);
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); move_file(sig_filename, localpath);
free(sig_filename); FREE(sig_filename);
} }
} }
} }
@ -1203,14 +1187,12 @@ int _alpm_download(alpm_handle_t *handle,
const char *temporary_localpath) const char *temporary_localpath)
{ {
int ret; int ret;
int finalize_ret;
int childsig = 0;
prepare_resumable_downloads(payloads, localpath, handle->sandboxuser); prepare_resumable_downloads(payloads, localpath, handle->sandboxuser);
if(handle->fetchcb == NULL) { if(handle->fetchcb == NULL) {
#ifdef HAVE_LIBCURL #ifdef HAVE_LIBCURL
if(handle->sandboxuser) { if(handle->sandboxuser) {
ret = curl_download_internal_sandboxed(handle, payloads, temporary_localpath, &childsig); ret = curl_download_internal_sandboxed(handle, payloads, temporary_localpath);
} else { } else {
ret = curl_download_internal(handle, payloads); ret = curl_download_internal(handle, payloads);
} }
@ -1285,21 +1267,13 @@ download_signature:
ret = updated ? 0 : 1; ret = updated ? 0 : 1;
} }
finalize_ret = finalize_download_locations(payloads, localpath); if (finalize_download_locations(payloads, localpath) != 0 && ret == 0) {
_alpm_remove_temporary_download_dir(temporary_localpath); return -1;
/* propagate after finalizing so .part files get copied over */
if(childsig != 0) {
kill(getpid(), childsig);
} }
if(finalize_ret != 0 && ret == 0) {
RET_ERR(handle, ALPM_ERR_RETRIEVE, -1);
}
return ret; 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, '/'); const char *filebase = strrchr(url, '/');
@ -1312,7 +1286,7 @@ static const char *url_basename(const char *url)
return NULL; return NULL;
} }
return filebase; return _alpm_filecache_find(handle, filebase);
} }
int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls, int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
@ -1334,26 +1308,9 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
for(i = urls; i; i = i->next) { for(i = urls; i; i = i->next) {
char *url = i->data; 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) { if(filepath) {
/* the file is locally cached so add it to the output right away */ /* the file is locally cached so add it to the output right away */
alpm_list_append(fetched, filepath); alpm_list_append(fetched, filepath);
@ -1408,6 +1365,7 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
_alpm_log(handle, ALPM_LOG_WARNING, _("failed to retrieve some files\n")); _alpm_log(handle, ALPM_LOG_WARNING, _("failed to retrieve some files\n"));
event.type = ALPM_EVENT_PKG_RETRIEVE_FAILED; event.type = ALPM_EVENT_PKG_RETRIEVE_FAILED;
EVENT(handle, &event); EVENT(handle, &event);
GOTO_ERR(handle, ALPM_ERR_RETRIEVE, err); GOTO_ERR(handle, ALPM_ERR_RETRIEVE, err);
} else { } else {
event.type = ALPM_EVENT_PKG_RETRIEVE_DONE; event.type = ALPM_EVENT_PKG_RETRIEVE_DONE;
@ -1422,8 +1380,7 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
const char *filename = mbasename(payload->destfile_name); const char *filename = mbasename(payload->destfile_name);
filepath = _alpm_filecache_find(handle, filename); filepath = _alpm_filecache_find(handle, filename);
} else { } else {
const char *filename = mbasename(payload->tempfile_name); STRDUP(filepath, payload->tempfile_name, GOTO_ERR(handle, ALPM_ERR_MEMORY, err));
filepath = _alpm_filecache_find(handle, filename);
} }
if(filepath) { if(filepath) {
alpm_list_append(fetched, filepath); alpm_list_append(fetched, filepath);
@ -1437,11 +1394,13 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
FREELIST(payloads); FREELIST(payloads);
} }
_alpm_remove_temporary_download_dir(temporary_cachedir);
FREE(temporary_cachedir); FREE(temporary_cachedir);
return 0; return 0;
err: err:
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset); alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
_alpm_remove_temporary_download_dir(temporary_cachedir);
FREE(temporary_cachedir); FREE(temporary_cachedir);
FREELIST(payloads); FREELIST(payloads);
FREELIST(*fetched); FREELIST(*fetched);
@ -1453,11 +1412,6 @@ void _alpm_dload_payload_reset(struct dload_payload *payload)
{ {
ASSERT(payload, return); ASSERT(payload, return);
if(payload->localf != NULL) {
fclose(payload->localf);
payload->localf = NULL;
}
FREE(payload->remote_name); FREE(payload->remote_name);
FREE(payload->tempfile_name); FREE(payload->tempfile_name);
FREE(payload->destfile_name); FREE(payload->destfile_name);

View file

@ -1,7 +1,7 @@
/* /*
* dload.h * 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> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* error.c * error.c
* *
* Copyright (c) 2006-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) 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
@ -137,7 +137,7 @@ const char SYMEXPORT *alpm_strerror(alpm_errno_t err)
return _("conflicting dependencies"); return _("conflicting dependencies");
case ALPM_ERR_FILE_CONFLICTS: case ALPM_ERR_FILE_CONFLICTS:
return _("conflicting files"); return _("conflicting files");
/* Miscellaneous */ /* Miscellaenous */
case ALPM_ERR_RETRIEVE: case ALPM_ERR_RETRIEVE:
return _("failed to retrieve some files"); return _("failed to retrieve some files");
case ALPM_ERR_INVALID_REGEX: case ALPM_ERR_INVALID_REGEX:

View file

@ -1,7 +1,7 @@
/* /*
* filelist.c * 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* filelist.h * 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* graph.c - helpful graph structure and setup/teardown methods * graph.c - helpful graph structure and setup/teardown methods
* *
* Copyright (c) 2007-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* graph.h - helpful graph structure and setup/teardown methods * graph.h - helpful graph structure and setup/teardown methods
* *
* Copyright (c) 2007-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* group.c * group.c
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* group.h * group.h
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* handle.c * handle.c
* *
* Copyright (c) 2006-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) 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>
@ -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, int SYMEXPORT alpm_option_set_disable_dl_timeout(alpm_handle_t *handle,
unsigned short disable_dl_timeout) unsigned short disable_dl_timeout)
{ {
@ -958,12 +952,6 @@ int SYMEXPORT alpm_option_set_parallel_downloads(alpm_handle_t *handle,
return 0; 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, int SYMEXPORT alpm_option_set_disable_sandbox(alpm_handle_t *handle,
unsigned short disable_sandbox) unsigned short disable_sandbox)
{ {

View file

@ -1,7 +1,7 @@
/* /*
* handle.h * 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> * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* hook.c * hook.c
* *
* Copyright (c) 2015-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* hook.h * hook.h
* *
* Copyright (c) 2015-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -4,7 +4,7 @@
/* /*
* libarchive-compat.h * 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* log.c * log.c
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* log.h * log.h
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -26,7 +26,6 @@ libalpm_sources = files('''
remove.h remove.c remove.h remove.c
sandbox.h sandbox.c sandbox.h sandbox.c
sandbox_fs.h sandbox_fs.c sandbox_fs.h sandbox_fs.c
sandbox_syscalls.h sandbox_syscalls.c
signing.c signing.h signing.c signing.h
sync.h sync.c sync.h sync.c
trans.h trans.c trans.h trans.c

View file

@ -1,7 +1,7 @@
/* /*
* package.c * 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) 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>

View file

@ -1,7 +1,7 @@
/* /*
* package.h * 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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org> * Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>

View file

@ -1,7 +1,7 @@
/* /*
* pkghash.c * 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* pkghash.h * pkghash.h
* *
* Copyright (c) 2011-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* remove.c * 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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View file

@ -1,7 +1,7 @@
/* /*
* remove.h * remove.h
* *
* Copyright (c) 2006-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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View file

@ -1,7 +1,7 @@
/* /*
* sandbox.c * 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 * 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
@ -17,14 +17,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "config.h"
#include <errno.h> #include <errno.h>
#include <grp.h> #include <grp.h>
#include <pwd.h> #include <pwd.h>
#ifdef HAVE_SYS_PRCTL_H
#include <sys/prctl.h>
#endif /* HAVE_SYS_PRCTL_H */
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
@ -32,10 +27,9 @@
#include "log.h" #include "log.h"
#include "sandbox.h" #include "sandbox.h"
#include "sandbox_fs.h" #include "sandbox_fs.h"
#include "sandbox_syscalls.h"
#include "util.h" #include "util.h"
int SYMEXPORT alpm_sandbox_setup_child(alpm_handle_t *handle, const char* sandboxuser, const char* sandbox_path, bool restrict_syscalls) int SYMEXPORT alpm_sandbox_setup_child(alpm_handle_t *handle, const char* sandboxuser, const char* sandbox_path)
{ {
struct passwd const *pw = NULL; struct passwd const *pw = NULL;
@ -45,13 +39,6 @@ int SYMEXPORT alpm_sandbox_setup_child(alpm_handle_t *handle, const char* sandbo
if(sandbox_path != NULL && !handle->disable_sandbox) { if(sandbox_path != NULL && !handle->disable_sandbox) {
_alpm_sandbox_fs_restrict_writes_to(handle, sandbox_path); _alpm_sandbox_fs_restrict_writes_to(handle, sandbox_path);
} }
#if defined(HAVE_SYS_PRCTL_H) && defined(PR_SET_NO_NEW_PRIVS)
/* make sure that we cannot gain more privileges later, failure is fine */
prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0);
#endif /* HAVE_SYS_PRCTL && PR_SET_NO_NEW_PRIVS */
if(restrict_syscalls && !handle->disable_sandbox) {
_alpm_sandbox_syscalls_filter(handle);
}
ASSERT(setgid(pw->pw_gid) == 0, return -1); ASSERT(setgid(pw->pw_gid) == 0, return -1);
ASSERT(setgroups(0, NULL) == 0, return -1); ASSERT(setgroups(0, NULL) == 0, return -1);
ASSERT(setuid(pw->pw_uid) == 0, return -1); ASSERT(setuid(pw->pw_uid) == 0, return -1);

View file

@ -1,7 +1,7 @@
/* /*
* sandbox_fs.c * 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* sandbox_fs.h * 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,165 +0,0 @@
/*
* sandbox_syscalls.c
*
* 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/>.
*/
#include <errno.h>
#include <stddef.h>
#include "config.h"
#include "log.h"
#include "sandbox_syscalls.h"
#include "util.h"
#ifdef HAVE_LIBSECCOMP
# include <seccomp.h>
#endif /* HAVE_LIBSECCOMP */
bool _alpm_sandbox_syscalls_filter(alpm_handle_t *handle)
{
int ret = 0;
#ifdef HAVE_LIBSECCOMP
/* see https://docs.docker.com/engine/security/seccomp/ for inspiration,
as well as systemd's src/shared/seccomp-util.c */
const char *denied_syscalls[] = {
/* kernel modules */
"delete_module",
"finit_module",
"init_module",
/* mount */
"chroot",
"fsconfig",
"fsmount",
"fsopen",
"fspick",
"mount",
"mount_setattr",
"move_mount",
"open_tree",
"pivot_root",
"umount",
"umount2",
/* keyring */
"add_key",
"keyctl",
"request_key",
/* CPU emulation */
"modify_ldt",
"subpage_prot",
"switch_endian",
"vm86",
"vm86old",
/* debug */
"kcmp",
"lookup_dcookie",
"perf_event_open",
"pidfd_getfd",
"ptrace",
"rtas",
"sys_debug_setcontext",
/* set clock */
"adjtimex",
"clock_adjtime",
"clock_adjtime64",
"clock_settime",
"clock_settime64",
"settimeofday",
/* raw IO */
"ioperm",
"iopl",
"pciconfig_iobase",
"pciconfig_read",
"pciconfig_write",
/* kexec */
"kexec_file_load",
"kexec_load",
/* reboot */
"reboot",
/* privileged */
"acct",
"bpf",
"capset",
"chroot",
"fanotify_init",
"fanotify_mark",
"nfsservctl",
"open_by_handle_at",
"pivot_root",
"personality",
/* obsolete */
"_sysctl",
"afs_syscall",
"bdflush",
"break",
"create_module",
"ftime",
"get_kernel_syms",
"getpmsg",
"gtty",
"idle",
"lock",
"mpx",
"prof",
"profil",
"putpmsg",
"query_module",
"security",
"sgetmask",
"ssetmask",
"stime",
"stty",
"sysfs",
"tuxcall",
"ulimit",
"uselib",
"ustat",
"vserver",
/* swap */
"swapon",
"swapoff",
};
/* allow all syscalls that are not listed */
size_t idx;
scmp_filter_ctx ctx = seccomp_init(SCMP_ACT_ALLOW);
int restrictedSyscallsCount = 0;
if(ctx == NULL) {
return false;
}
for(idx = 0; idx < sizeof(denied_syscalls) / sizeof(*denied_syscalls); idx++) {
int syscall = seccomp_syscall_resolve_name(denied_syscalls[idx]);
if(syscall != __NR_SCMP_ERROR) {
if(seccomp_rule_add(ctx, SCMP_ACT_ERRNO(EPERM), syscall, 0) != 0) {
_alpm_log(handle, ALPM_LOG_ERROR, _("error restricting syscall %s via seccomp!\n"), denied_syscalls[idx]);
}
else {
restrictedSyscallsCount++;
}
}
}
if(seccomp_load(ctx) != 0) {
ret = errno;
_alpm_log(handle, ALPM_LOG_ERROR, _("error restricting syscalls via seccomp: %d!\n"), ret);
}
else {
_alpm_log(handle, ALPM_LOG_DEBUG, _("successfully restricted %d syscalls via seccomp\n"), restrictedSyscallsCount);
}
seccomp_release(ctx);
#endif /* HAVE_LIBSECCOMP */
return ret == 0;
}

View file

@ -1,26 +0,0 @@
/*
* sandbox_syscalls.h
*
* 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/>.
*/
#ifndef ALPM_SANDBOX_SYSCALLS_H
#define ALPM_SANDBOX_SYSCALLS_H
#include <stdbool.h>
bool _alpm_sandbox_syscalls_filter(alpm_handle_t *handle);
#endif /* ALPM_SANDBOX_SYSCALLS_H */

View file

@ -1,7 +1,7 @@
/* /*
* signing.c * 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 * 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
@ -371,6 +371,46 @@ static int key_search_keyserver(alpm_handle_t *handle, const char *fpr,
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
* 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: gpg_error:
if(ret != 1) { if(ret != 1) {

View file

@ -1,7 +1,7 @@
/* /*
* signing.h * 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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
* sync.c * sync.c
* *
* Copyright (c) 2006-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) 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>
@ -882,6 +882,7 @@ finish:
pkg->infolevel &= ~INFRQ_DSIZE; pkg->infolevel &= ~INFRQ_DSIZE;
pkg->download_size = 0; pkg->download_size = 0;
} }
_alpm_remove_temporary_download_dir(temporary_cachedir);
FREE(temporary_cachedir); FREE(temporary_cachedir);
return ret; return ret;

View file

@ -1,7 +1,7 @@
/* /*
* sync.h * 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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org> * Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>

View file

@ -1,7 +1,7 @@
/* /*
* trans.c * trans.c
* *
* Copyright (c) 2006-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) 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>
@ -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); 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"); alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction started\n");
event.type = ALPM_EVENT_TRANSACTION_START; 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; return 0;
} }
@ -253,7 +253,7 @@ int SYMEXPORT alpm_trans_interrupt(alpm_handle_t *handle)
trans = handle->trans; trans = handle->trans;
ASSERT(trans != NULL, RET_ERR_ASYNC_SAFE(handle, ALPM_ERR_TRANS_NULL, -1)); 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)); RET_ERR_ASYNC_SAFE(handle, ALPM_ERR_TRANS_TYPE, -1));
trans->state = STATE_INTERRUPTED; trans->state = STATE_INTERRUPTED;

View file

@ -1,7 +1,7 @@
/* /*
* trans.h * 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) 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>
@ -30,8 +30,8 @@ typedef enum _alpm_transstate_t {
STATE_INITIALIZED, STATE_INITIALIZED,
STATE_PREPARED, STATE_PREPARED,
STATE_DOWNLOADING, STATE_DOWNLOADING,
STATE_COMMITTING, STATE_COMMITING,
STATE_COMMITTED, STATE_COMMITED,
STATE_INTERRUPTED STATE_INTERRUPTED
} alpm_transstate_t; } alpm_transstate_t;

View file

@ -1,7 +1,7 @@
/* /*
* util.c * 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) 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>
@ -590,7 +590,9 @@ void _alpm_reset_signals(void)
#endif #endif
0 0
}; };
struct sigaction def = { .sa_handler = SIG_DFL }; struct sigaction def;
def.sa_flags = 0;
def.sa_handler = SIG_DFL;
sigemptyset(&def.sa_mask); sigemptyset(&def.sa_mask);
for(i = signals; *i; i++) { for(i = signals; *i; i++) {
sigaction(*i, &def, NULL); sigaction(*i, &def, NULL);
@ -967,7 +969,8 @@ char *_alpm_temporary_download_dir_setup(const char *dir, const char *user)
char *newdir = NULL; char *newdir = NULL;
MALLOC(newdir, newdirlen, return NULL); MALLOC(newdir, newdirlen, return NULL);
snprintf(newdir, newdirlen - 1, "%s%s", dir, template); snprintf(newdir, newdirlen - 1, "%s%s", dir, template);
if(mkdtemp(newdir) == NULL) { newdir = mkdtemp(newdir);
if(newdir == NULL) {
free(newdir); free(newdir);
return NULL; return NULL;
} }

View file

@ -1,7 +1,7 @@
/* /*
* util.h * 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) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com> * Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu> * Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2006-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 * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -122,17 +122,12 @@ else
error('unhandled crypto value @0@'.format(want_crypto)) error('unhandled crypto value @0@'.format(want_crypto))
endif endif
libseccomp = dependency('libseccomp',
static : get_option('buildstatic'),
required : false)
conf.set('HAVE_LIBSECCOMP', libseccomp.found())
foreach header : [ foreach header : [
'linux/landlock.h', 'linux/landlock.h',
'mntent.h', 'mntent.h',
'sys/mnttab.h', 'sys/mnttab.h',
'sys/mount.h', 'sys/mount.h',
'sys/param.h', 'sys/param.h',
'sys/prctl.h',
'sys/statvfs.h', 'sys/statvfs.h',
'sys/types.h', 'sys/types.h',
'sys/ucred.h', 'sys/ucred.h',
@ -332,7 +327,7 @@ libcommon = static_library(
gnu_symbol_visibility : 'hidden', gnu_symbol_visibility : 'hidden',
install : false) install : false)
alpm_deps = [crypto_provider, libarchive, libcurl, libintl, libseccomp, gpgme] alpm_deps = [crypto_provider, libarchive, libcurl, libintl, gpgme]
libalpm_a = static_library( libalpm_a = static_library(
'alpm_objlib', 'alpm_objlib',
@ -433,8 +428,6 @@ configure_file(
configuration : substs, configuration : substs,
install_dir : join_paths(SYSCONFDIR, 'makepkg.conf.d/')) install_dir : join_paths(SYSCONFDIR, 'makepkg.conf.d/'))
install_emptydir(join_paths(SYSCONFDIR, 'makepkg.d/'))
configure_file( configure_file(
input : 'etc/pacman.conf.in', input : 'etc/pacman.conf.in',
output : 'pacman.conf', output : 'pacman.conf',

View file

@ -3,7 +3,7 @@
# NOTE: Please fill out the license field for your package! If it is unknown, # NOTE: Please fill out the license field for your package! If it is unknown,
# then please put '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. # Other VCS sources are not natively supported by makepkg yet.
# Maintainer: Your Name <youremail@domain.com> # Maintainer: Your Name <youremail@domain.com>

View file

@ -2,7 +2,7 @@
# #
# autodep.sh - functions for automatically adding depends/provides # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# library_depends.sh - Automatically add library requirements to depends # 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 # 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
@ -51,8 +51,8 @@ library_depends() {
unset prefix unset prefix
for libdir in ${LIB_DIRS[@]}; do for libdir in ${LIB_DIRS[@]}; do
if [[ ${libdir#*:} == ${libpath} ]]; then if [[ ${libdir/*:} == ${libpath} ]]; then
prefix=${libdir%%:*} prefix=${libdir/:*}
fi fi
done done

View file

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

View file

@ -3,7 +3,7 @@
# buildenv.sh - functions for altering the build environment before # buildenv.sh - functions for altering the build environment before
# compilation # compilation
# #
# Copyright (c) 2015-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# buildflags.sh - Clear user-specified buildflags if requested # buildflags.sh - Clear user-specified buildflags if requested
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -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-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 # 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
@ -44,9 +44,8 @@ buildenv_ccache() {
buildenv_distcc() { buildenv_distcc() {
if check_buildoption "distcc" "y"; then if check_buildoption "distcc" "y"; then
if (( using_ccache )); then if (( using_ccache )); then
local distcc=$(type -p distcc) if [[ " $CCACHE_PREFIX " != *" distcc "* ]]; then
if [[ " $CCACHE_PREFIX " != *" ${distcc} "* ]]; then export CCACHE_PREFIX="${CCACHE_PREFIX:+$CCACHE_PREFIX }distcc"
export CCACHE_PREFIX="${CCACHE_PREFIX:+$CCACHE_PREFIX }${distcc}"
fi fi
export CCACHE_BASEDIR="$srcdir" export CCACHE_BASEDIR="$srcdir"
elif [[ -d /usr/lib/distcc/bin ]]; then elif [[ -d /usr/lib/distcc/bin ]]; then

View file

@ -3,7 +3,7 @@
# debugflags.sh - Specify flags for building a package with debugging # debugflags.sh - Specify flags for building a package with debugging
# symbols # symbols
# #
# Copyright (c) 2012-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# fortran.sh - Specify flags for building a package with Fortran # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -3,7 +3,7 @@
# 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-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# makeflags.sh - Clear user-specified makeflags if requested # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# rust.sh - Specify flags for building a package with rust # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# executable.sh - confirm presence of dependent executables # executable.sh - confirm presence of dependent executables
# #
# Copyright (c) 2018-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# ccache.sh - Confirm presence of ccache binary # ccache.sh - Confirm presence of ccache binary
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# checksum.sh - Confirm presence of binaries for checksum operations # checksum.sh - Confirm presence of binaries for checksum operations
# #
# Copyright (c) 2016-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# debugedit.sh - Confirm presence of debugedit binary # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# distcc.sh - Confirm presence of distcc binary # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# fakeroot.sh - Confirm presence of fakeroot binary # fakeroot.sh - Confirm presence of fakeroot binary
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# gpg.sh - Confirm presence of gpg binary # gpg.sh - Confirm presence of gpg binary
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# gzip.sh - Confirm presence of gzip binary # gzip.sh - Confirm presence of gzip binary
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# pacman.sh - Confirm presence of pacman binary # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# strip.sh - Confirm presence of strip binary # strip.sh - Confirm presence of strip binary
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# sudo.sh - Confirm presence of sudo binary # sudo.sh - Confirm presence of sudo binary
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# vcs.sh - Confirm presence of binaries for VCS operations # vcs.sh - Confirm presence of binaries for VCS operations
# #
# Copyright (c) 2014-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# integrity.sh - functions relating to source integrity checking # integrity.sh - functions relating to source integrity checking
# #
# Copyright (c) 2011-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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# generate_checksum.sh - functions for generating source checksums # 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 # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by

View file

@ -2,7 +2,7 @@
# #
# generate_signature.sh - functions for generating PGP signatures # 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 # 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