Compare commits
70 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
fe6e678e59 | ||
![]() |
48a784dde8 | ||
![]() |
67e3a7be36 | ||
![]() |
45c4eef61d | ||
![]() |
5c451cd976 | ||
![]() |
d87dd153fc | ||
![]() |
6fcecbd08d | ||
![]() |
528709131f | ||
![]() |
9fca328caf | ||
![]() |
af54cd4ee1 | ||
![]() |
e392f01a94 | ||
![]() |
f722b86990 | ||
![]() |
4ddc642398 | ||
![]() |
53b1db84ef | ||
![]() |
571c13236f | ||
![]() |
64299ccfbb | ||
![]() |
692f7a2cfe | ||
![]() |
b104b95423 | ||
![]() |
2bcdbc6a87 | ||
![]() |
46f7f6e9ac | ||
![]() |
38394d54f0 | ||
![]() |
267a0cc912 | ||
![]() |
d0c10a795e | ||
![]() |
0d37c1daa0 | ||
![]() |
24fc50269d | ||
![]() |
08070e9abe | ||
![]() |
f13d7d480c | ||
![]() |
007261ade5 | ||
![]() |
bbe3f614b2 | ||
![]() |
f07d547cf1 | ||
![]() |
34f09204fa | ||
![]() |
0f6b4f4fab | ||
![]() |
bc7b8e2eb2 | ||
![]() |
faea473550 | ||
![]() |
680169fb61 | ||
![]() |
e767cf9a54 | ||
![]() |
e65b7d421c | ||
![]() |
e6b3eb2570 | ||
![]() |
7ccf316ceb | ||
![]() |
ae603e35d7 | ||
![]() |
4908eed57d | ||
![]() |
286e776eda | ||
![]() |
cc87999d6d | ||
![]() |
425ff046ed | ||
![]() |
5f4c7e3ddc | ||
![]() |
02b35b9155 | ||
![]() |
dbde37aafb | ||
![]() |
0c136ecc8a | ||
![]() |
5e2a763e4a | ||
![]() |
62d3192126 | ||
![]() |
3e557af72f | ||
![]() |
fa7a9f748d | ||
![]() |
870eae26dc | ||
![]() |
cb940620bc | ||
![]() |
dd55afad68 | ||
![]() |
775db50538 | ||
![]() |
95a7d416ce | ||
![]() |
9154600490 | ||
![]() |
e0162a6868 | ||
![]() |
71afd4d88f | ||
![]() |
a2d029388c | ||
![]() |
8a60361949 | ||
![]() |
e80569f5da | ||
![]() |
60ec268458 | ||
![]() |
7bc5d55b56 | ||
![]() |
6ba5c20e76 | ||
![]() |
4c18204938 | ||
![]() |
cf473bcfbd | ||
![]() |
f142df92c7 | ||
![]() |
c3aa1bc123 |
225 changed files with 1170 additions and 663 deletions
2
.mailmap
2
.mailmap
|
@ -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 Steffens <jan.steffens@gmail.com>
|
Jan Alexander Steffens (heftig) <heftig@archlinux.org> <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
10
NEWS
|
@ -1,6 +1,6 @@
|
||||||
VERSION DESCRIPTION
|
VERSION DESCRIPTION
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
7.0.0 - Add DownloadUser configuation option used to drop-privileges
|
7.0.0 - Add DownloadUser configuration 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 BZR source revision support (FS#35281)
|
- fix Bazaar 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 BZR sources (FS#34650)
|
- allow "lp:" URLs for Bazaar 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 provisios
|
- Fixed resolvedeps to always prefer literals over providers
|
||||||
- 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
229
README
|
@ -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 flexibile alpm_find_satisfier()
|
- alpm_deptest() is replaced by the more flexible 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,19 +431,33 @@ API CHANGES BETWEEN 3.5 AND 4.0
|
||||||
|
|
||||||
[ADDED]
|
[ADDED]
|
||||||
- option functions:
|
- option functions:
|
||||||
alpm_{get,set}_eventcb(), alpm_option_{get,set}_convcb(),
|
- alpm_{get,set}_eventcb()
|
||||||
alpm_option_{get,set}_progresscb()
|
- alpm_option_{get,set}_convcb()
|
||||||
|
- alpm_option_{get,set}_progresscb()
|
||||||
- package signing functions:
|
- package signing functions:
|
||||||
alpm_option_get_default_siglevel(), alpm_option_set_default_siglevel(),
|
- alpm_option_get_default_siglevel()
|
||||||
alpm_option_get_gpgdir(), alpm_option_set_gpgdir(), alpm_db_get_siglevel(),
|
- alpm_option_set_default_siglevel()
|
||||||
alpm_siglist_cleanup(), alpm_db_check_pgp_signature(), alpm_pkg_check_pgp_signature(),
|
- alpm_option_get_gpgdir()
|
||||||
alpm_pkg_get_origin(), alpm_pkg_get_sha256sum(), alpm_pkg_get_base64_sig()
|
- alpm_option_set_gpgdir()
|
||||||
|
- alpm_db_get_siglevel()
|
||||||
|
- alpm_siglist_cleanup()
|
||||||
|
- alpm_db_check_pgp_signature()
|
||||||
|
- alpm_pkg_check_pgp_signature()
|
||||||
|
- alpm_pkg_get_origin()
|
||||||
|
- alpm_pkg_get_sha256sum()
|
||||||
|
- alpm_pkg_get_base64_sig()
|
||||||
- list functions:
|
- list functions:
|
||||||
alpm_list_to_array(), alpm_list_previous()
|
- alpm_list_to_array()
|
||||||
|
- alpm_list_previous()
|
||||||
- structs:
|
- structs:
|
||||||
alpm_backup_t, alpm_file_t, alpm_filelist_t
|
- alpm_backup_t
|
||||||
|
- alpm_file_t
|
||||||
|
- alpm_filelist_t
|
||||||
- enums:
|
- enums:
|
||||||
alpm_siglevel_t, alpm_sigstatus_t, alpm_sigvalidity_t, alpm_pkgfrom_t
|
- alpm_siglevel_t
|
||||||
|
- alpm_sigstatus_t
|
||||||
|
- alpm_sigvalidity_t
|
||||||
|
- alpm_pkgfrom_t
|
||||||
- error codes:
|
- 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,
|
||||||
|
@ -470,10 +484,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
|
||||||
|
|
||||||
|
@ -490,21 +504,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
|
||||||
|
@ -513,49 +527,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
|
||||||
|
|
||||||
|
@ -565,13 +579,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()
|
||||||
|
@ -581,14 +595,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()
|
||||||
|
|
||||||
|
|
||||||
|
@ -598,7 +612,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()
|
||||||
|
@ -615,19 +629,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()
|
||||||
|
|
||||||
|
|
||||||
|
@ -635,7 +649,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
|
||||||
|
@ -662,10 +676,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.
|
||||||
|
@ -673,29 +687,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
|
||||||
|
|
||||||
|
|
||||||
|
@ -713,23 +727,32 @@ 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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 multiple keys with the same
|
a '=', one value per line. Arrays are represented as multiple key-value pairs
|
||||||
value.
|
having the same key.
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -313,6 +313,15 @@ 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
|
||||||
-------------------
|
-------------------
|
||||||
|
|
|
@ -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]
|
||||||
#
|
#
|
||||||
|
|
|
@ -252,7 +252,7 @@ the package database if it helps.
|
||||||
|
|
||||||
Copyright
|
Copyright
|
||||||
---------
|
---------
|
||||||
pacman is Copyright (C) 2006-2024 Pacman Development Team
|
pacman is Copyright (C) 2006-2025 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.
|
||||||
|
|
|
@ -247,6 +247,11 @@ 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].
|
||||||
|
@ -297,7 +302,7 @@ Environment Variables
|
||||||
**BUILDTOOLVER=**"<version>"::
|
**BUILDTOOLVER=**"<version>"::
|
||||||
The version of the '$BUILDTOOL' used.
|
The version of the '$BUILDTOOL' used.
|
||||||
|
|
||||||
**MAKEPKG_LINT_PKGBUILD=**0
|
**MAKEPKG_LINT_PKGBUILD=**0::
|
||||||
Setting to 0 disables PKGBUILD linting within makepkg. Useful on systems
|
Setting to 0 disables PKGBUILD linting within makepkg. Useful on systems
|
||||||
with slow bash subshell operations, or on PKGBUILDs with extreme amounts of
|
with slow bash subshell operations, or on PKGBUILDs with extreme amounts of
|
||||||
package splitting.
|
package splitting.
|
||||||
|
|
|
@ -62,6 +62,11 @@ 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.
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,8 @@ 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.
|
prepended. If DownloadUser is set in linkman:pacman.conf[5], then the
|
||||||
|
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
|
||||||
|
|
|
@ -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 = {sysconfdir}/pacman.d/mirrorlist
|
Include = /etc/pacman.d/mirrorlist
|
||||||
--------
|
--------
|
||||||
|
|
||||||
The order of repositories in the configuration files matters; repositories
|
The order of repositories in the configuration files matters; repositories
|
||||||
|
|
|
@ -29,9 +29,10 @@ 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.gz'', ``.tar.bz2'',
|
``.db'' followed by an archive extension of ``.tar'', ``.tar.bz2'',
|
||||||
``.tar.xz'', or ``.tar.Z''. The file does not need to exist, but all parent
|
``.tar.gz'', ``.tar.lrz'', ``.tar.lz'', ``.tar.lz4'', ``.tar.lzo'',
|
||||||
directories must exist.
|
``.tar.xz'', ``.tar.zst'' or ``.tar.Z''. The file does not need to exist, but
|
||||||
|
all parent directories must exist.
|
||||||
|
|
||||||
|
|
||||||
Common Options
|
Common Options
|
||||||
|
@ -59,6 +60,14 @@ 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
|
||||||
----------------
|
----------------
|
||||||
|
@ -66,10 +75,6 @@ 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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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://www.transifex.com/[Transifex] as the translation
|
We are currently using https://app.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://www.transifex.com/projects/p/archlinux-pacman/[pacman project page].
|
https://explore.transifex.com/toofishes/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://docs.transifex.com/[Transifex Help] if you are not familiar.
|
https://help.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. This email will have a prefix of
|
mailing list asking for translations. An announcement in Transifex is also made,
|
||||||
*[translation]* for anyone looking to set up an email filter.
|
which reaches everyone that is member of the translation team.
|
||||||
|
|
||||||
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 two files available (back-end
|
Transifex project page. Each language will have three files available (libalpm,
|
||||||
and front-end). Translators interested in helping are encouraged to use the
|
pacman and pacman-scripts). 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 (*OR* realizes they do not have
|
Once a translator has completed the translation offline (*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,21 +80,25 @@ repository.
|
||||||
|
|
||||||
git clone https://gitlab.archlinux.org/pacman/pacman.git
|
git clone https://gitlab.archlinux.org/pacman/pacman.git
|
||||||
|
|
||||||
Next, you will need to run `./autogen.sh` and `./configure` in the base
|
Next, you will need to configure the build environment. From the base directory,
|
||||||
directory to generate the correct Makefiles. At this point, all necessary
|
run:
|
||||||
make targets will be generated and we can begin updating the translation
|
|
||||||
files.
|
|
||||||
|
|
||||||
We need to first update the main message catalog file. Navigate into either the
|
meson setup . build
|
||||||
`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':
|
|
||||||
|
|
||||||
make libalpm.pot-update
|
If any required dependencies are missing, please install. After that,
|
||||||
|
update the template translation (.pot) files to the latest state of
|
||||||
|
the source code by running:
|
||||||
|
|
||||||
|
meson compile -C build pacman-scripts-pot pacman-pot libalpm-pot
|
||||||
|
|
||||||
|
We need to first update the main message catalog file. Navigate into either
|
||||||
|
the `lib/libalpm/po`, `scripts/po` or `src/pacman/po` directory depending
|
||||||
|
on which translation you wish to work on first, and execute the following
|
||||||
|
command to update your specific language's translation file
|
||||||
|
(replace `lang_code` with your language code e.g. 'pt_BR', and `pot_file`
|
||||||
|
with `libalpm.pot`, `pacman.pot` or `pacman-scripts.pot`):
|
||||||
|
|
||||||
Next, update your specific language's translation file:
|
msgmerge --update --previous <lang_code>.po <pot_filename>.pot
|
||||||
|
|
||||||
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
|
||||||
|
@ -103,7 +107,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:
|
||||||
|
|
||||||
make update-po
|
./build-aux/update-po
|
||||||
|
|
||||||
Adding a New Language
|
Adding a New Language
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -112,10 +116,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.
|
||||||
|
@ -137,11 +141,13 @@ following two translations are equivalent:
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"This is a test translation"
|
"This is a test translation"
|
||||||
|
|
||||||
If you want to test the translation (for example, the front-end one):
|
If you want to test the translation (copy the .po file you want to test,
|
||||||
|
you may ignore the rest), replacing `<lang_code>` accordingly:
|
||||||
|
|
||||||
rm *.gmo stamp-po
|
meson compile -C build pacman-scripts-gmo pacman-gmo libalpm-gmo
|
||||||
make
|
cp ./build/lib/libalpm/po/<lang_code>/LC_MESSAGES/libalpm.mo /usr/share/locale/<lang_code>/LC_MESSAGES/libalpm.mo
|
||||||
cp <lang code>.gmo /usr/share/locale/<lang code>/LC_MESSAGES/pacman.mo
|
cp ./build/scripts/po/<lang_code>/LC_MESSAGES/pacman-scripts.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman-scripts.mo
|
||||||
|
cp ./build/src/pacman/po/<lang_code>/LC_MESSAGES/pacman.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman.mo
|
||||||
|
|
||||||
|
|
||||||
Translating Manpages
|
Translating Manpages
|
||||||
|
|
|
@ -36,6 +36,8 @@ 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"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* add.c
|
* add.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* add.h
|
* add.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* alpm.c
|
* alpm.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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,6 +25,9 @@
|
||||||
#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"
|
||||||
|
@ -39,6 +42,7 @@ 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) {
|
||||||
|
@ -78,6 +82,10 @@ 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
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* alpm.h
|
* alpm.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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,6 +34,7 @@
|
||||||
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 */
|
||||||
|
@ -450,14 +451,6 @@ 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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2264,6 +2257,12 @@ 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
|
||||||
|
@ -2306,6 +2305,12 @@ 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
|
||||||
|
@ -2971,9 +2976,10 @@ 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);
|
int alpm_sandbox_setup_child(alpm_handle_t *handle, const char *sandboxuser, const char *sandbox_path, bool restrict_syscalls);
|
||||||
|
|
||||||
/* End of libalpm_misc */
|
/* End of libalpm_misc */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* alpm_list.c
|
* alpm_list.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* alpm_list.h
|
* alpm_list.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* backup.c
|
* backup.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* backup.h
|
* backup.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* be_local.c : backend for the local database
|
* be_local.c : backend for the local database
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* be_package.c : backend for packages
|
* be_package.c : backend for packages
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* be_sync.c : backend for sync databases
|
* be_sync.c : backend for sync databases
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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,7 +268,6 @@ 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);
|
||||||
|
@ -309,11 +308,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_initalized = 0;
|
static int sync_pkg_ops_initialized = 0;
|
||||||
if(!sync_pkg_ops_initalized) {
|
if(!sync_pkg_ops_initialized) {
|
||||||
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_initalized = 1;
|
sync_pkg_ops_initialized = 1;
|
||||||
}
|
}
|
||||||
return &sync_pkg_ops;
|
return &sync_pkg_ops;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* conflict.c
|
* conflict.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* conflict.h
|
* conflict.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* db.c
|
* db.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* db.h
|
* db.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||||
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* deps.c
|
* deps.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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_WARNING, _("dependency cycle detected:\n"));
|
_alpm_log(handle, ALPM_LOG_DEBUG, _("dependency cycle detected:\n"));
|
||||||
if(reverse) {
|
if(reverse) {
|
||||||
_alpm_log(handle, ALPM_LOG_WARNING,
|
_alpm_log(handle, ALPM_LOG_DEBUG,
|
||||||
_("%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_WARNING,
|
_alpm_log(handle, ALPM_LOG_DEBUG,
|
||||||
_("%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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* deps.h
|
* deps.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||||
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* diskspace.c
|
* diskspace.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2010-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2010-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* diskspace.h
|
* diskspace.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2010-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2010-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* dload.c
|
* dload.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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
|
||||||
|
@ -76,13 +76,16 @@ static mode_t _getumask(void)
|
||||||
static int finalize_download_file(const char *filename)
|
static int finalize_download_file(const char *filename)
|
||||||
{
|
{
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
uid_t myuid = getuid();
|
||||||
ASSERT(filename != NULL, return -1);
|
ASSERT(filename != NULL, return -1);
|
||||||
ASSERT(stat(filename, &st) == 0, return -1);
|
ASSERT(stat(filename, &st) == 0, return -1);
|
||||||
if(st.st_size == 0) {
|
if(st.st_size == 0) {
|
||||||
unlink(filename);
|
unlink(filename);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
ASSERT(chown(filename, 0, 0) != -1, return -1);
|
if(myuid == 0) {
|
||||||
|
ASSERT(chown(filename, 0, 0) != -1, return -1);
|
||||||
|
}
|
||||||
ASSERT(chmod(filename, ~(_getumask()) & 0666) != -1, return -1);
|
ASSERT(chmod(filename, ~(_getumask()) & 0666) != -1, return -1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -695,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -877,7 +880,6 @@ 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);
|
||||||
|
@ -901,7 +903,6 @@ 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);
|
||||||
|
@ -915,16 +916,15 @@ 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, oldint, oldquit;
|
struct sigaction sa_ign = { .sa_handler = SIG_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 +963,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);
|
ret = alpm_sandbox_setup_child(handle, handle->sandboxuser, localpath, true);
|
||||||
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,8 +1022,12 @@ 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 {
|
||||||
|
@ -1102,30 +1106,45 @@ 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;
|
||||||
if(payload->tempfile_name) {
|
const char *filename = NULL;
|
||||||
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) {
|
|
||||||
int ret = move_file(payload->destfile_name, localpath);
|
if(filename) {
|
||||||
|
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) {
|
||||||
const char sig_suffix[] = ".sig";
|
char *sig_filename;
|
||||||
char *sig_filename = NULL;
|
int ret;
|
||||||
size_t sig_filename_len = strlen(payload->destfile_name) + sizeof(sig_suffix);
|
|
||||||
MALLOC(sig_filename, sig_filename_len, continue);
|
filename = payload->destfile_name ? payload->destfile_name : payload->tempfile_name;
|
||||||
snprintf(sig_filename, sig_filename_len, "%s%s", payload->destfile_name, sig_suffix);
|
sig_filename = _alpm_get_fullpath("", filename, ".sig");
|
||||||
|
ASSERT(sig_filename, RET_ERR(payload->handle, ALPM_ERR_MEMORY, -1));
|
||||||
|
ret = move_file(sig_filename, localpath);
|
||||||
|
free(sig_filename);
|
||||||
|
|
||||||
|
if(ret == -1) {
|
||||||
|
sig_filename = _alpm_get_fullpath("", filename, ".sig.part");
|
||||||
|
ASSERT(sig_filename, RET_ERR(payload->handle, ALPM_ERR_MEMORY, -1));
|
||||||
move_file(sig_filename, localpath);
|
move_file(sig_filename, localpath);
|
||||||
FREE(sig_filename);
|
free(sig_filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1184,12 +1203,14 @@ 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);
|
ret = curl_download_internal_sandboxed(handle, payloads, temporary_localpath, &childsig);
|
||||||
} else {
|
} else {
|
||||||
ret = curl_download_internal(handle, payloads);
|
ret = curl_download_internal(handle, payloads);
|
||||||
}
|
}
|
||||||
|
@ -1264,13 +1285,21 @@ download_signature:
|
||||||
ret = updated ? 0 : 1;
|
ret = updated ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (finalize_download_locations(payloads, localpath) != 0 && ret == 0) {
|
finalize_ret = finalize_download_locations(payloads, localpath);
|
||||||
return -1;
|
_alpm_remove_temporary_download_dir(temporary_localpath);
|
||||||
|
|
||||||
|
/* propagate after finalizing so .part files get copied over */
|
||||||
|
if(childsig != 0) {
|
||||||
|
kill(getpid(), childsig);
|
||||||
}
|
}
|
||||||
|
if(finalize_ret != 0 && ret == 0) {
|
||||||
|
RET_ERR(handle, ALPM_ERR_RETRIEVE, -1);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *filecache_find_url(alpm_handle_t *handle, const char *url)
|
static const char *url_basename(const char *url)
|
||||||
{
|
{
|
||||||
const char *filebase = strrchr(url, '/');
|
const char *filebase = strrchr(url, '/');
|
||||||
|
|
||||||
|
@ -1283,7 +1312,7 @@ static char *filecache_find_url(alpm_handle_t *handle, const char *url)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _alpm_filecache_find(handle, filebase);
|
return 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,
|
||||||
|
@ -1305,9 +1334,26 @@ 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);
|
||||||
|
@ -1356,12 +1402,12 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
|
||||||
if(payloads) {
|
if(payloads) {
|
||||||
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
|
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
|
||||||
event.pkg_retrieve.num = alpm_list_count(payloads);
|
event.pkg_retrieve.num = alpm_list_count(payloads);
|
||||||
|
event.pkg_retrieve.total_size = 0;
|
||||||
EVENT(handle, &event);
|
EVENT(handle, &event);
|
||||||
if(_alpm_download(handle, payloads, cachedir, temporary_cachedir) == -1) {
|
if(_alpm_download(handle, payloads, cachedir, temporary_cachedir) == -1) {
|
||||||
_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;
|
||||||
|
@ -1376,7 +1422,8 @@ 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 {
|
||||||
STRDUP(filepath, payload->tempfile_name, GOTO_ERR(handle, ALPM_ERR_MEMORY, err));
|
const char *filename = mbasename(payload->tempfile_name);
|
||||||
|
filepath = _alpm_filecache_find(handle, filename);
|
||||||
}
|
}
|
||||||
if(filepath) {
|
if(filepath) {
|
||||||
alpm_list_append(fetched, filepath);
|
alpm_list_append(fetched, filepath);
|
||||||
|
@ -1390,13 +1437,11 @@ 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);
|
||||||
|
@ -1408,6 +1453,11 @@ 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);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* dload.h
|
* dload.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* error.c
|
* error.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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");
|
||||||
/* Miscellaenous */
|
/* Miscellaneous */
|
||||||
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:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* filelist.c
|
* filelist.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2012-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* filelist.h
|
* filelist.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2012-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* graph.c - helpful graph structure and setup/teardown methods
|
* graph.c - helpful graph structure and setup/teardown methods
|
||||||
*
|
*
|
||||||
* Copyright (c) 2007-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2007-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* graph.h - helpful graph structure and setup/teardown methods
|
* graph.h - helpful graph structure and setup/teardown methods
|
||||||
*
|
*
|
||||||
* Copyright (c) 2007-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2007-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* group.c
|
* group.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* group.h
|
* group.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* handle.c
|
* handle.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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,6 +935,12 @@ 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)
|
||||||
{
|
{
|
||||||
|
@ -952,6 +958,12 @@ 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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* handle.h
|
* handle.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* hook.c
|
* hook.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2015-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2015-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* hook.h
|
* hook.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2015-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2015-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
/*
|
/*
|
||||||
* libarchive-compat.h
|
* libarchive-compat.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2013-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* log.c
|
* log.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* log.h
|
* log.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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
|
||||||
|
|
|
@ -26,6 +26,7 @@ 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
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* package.c
|
* package.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* package.h
|
* package.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* pkghash.c
|
* pkghash.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* pkghash.h
|
* pkghash.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* remove.c
|
* remove.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* remove.h
|
* remove.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* sandbox.c
|
* sandbox.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2021-2025 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,9 +17,14 @@
|
||||||
* 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>
|
||||||
|
|
||||||
|
@ -27,9 +32,10 @@
|
||||||
#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)
|
int SYMEXPORT alpm_sandbox_setup_child(alpm_handle_t *handle, const char* sandboxuser, const char* sandbox_path, bool restrict_syscalls)
|
||||||
{
|
{
|
||||||
struct passwd const *pw = NULL;
|
struct passwd const *pw = NULL;
|
||||||
|
|
||||||
|
@ -39,6 +45,13 @@ 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);
|
||||||
|
@ -222,7 +235,9 @@ bool _alpm_sandbox_process_cb_download(alpm_handle_t *handle, int callback_pipe)
|
||||||
ASSERT(read_from_pipe(callback_pipe, filename, filename_size) != -1, FREE(filename); return false);
|
ASSERT(read_from_pipe(callback_pipe, filename, filename_size) != -1, FREE(filename); return false);
|
||||||
filename[filename_size] = '\0';
|
filename[filename_size] = '\0';
|
||||||
|
|
||||||
handle->dlcb(handle->dlcb_ctx, filename, type, &cb_data);
|
if(handle->dlcb) {
|
||||||
|
handle->dlcb(handle->dlcb_ctx, filename, type, &cb_data);
|
||||||
|
}
|
||||||
FREE(filename);
|
FREE(filename);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* sandbox_fs.c
|
* sandbox_fs.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2021-2025 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
|
||||||
|
@ -150,6 +150,9 @@ bool _alpm_sandbox_fs_restrict_writes_to(alpm_handle_t *handle, const char *path
|
||||||
path_beneath.parent_fd = open(path, O_PATH | O_CLOEXEC | O_DIRECTORY);
|
path_beneath.parent_fd = open(path, O_PATH | O_CLOEXEC | O_DIRECTORY);
|
||||||
path_beneath.allowed_access = _LANDLOCK_ACCESS_FS_READ | _LANDLOCK_ACCESS_FS_WRITE | _LANDLOCK_ACCESS_FS_TRUNCATE;
|
path_beneath.allowed_access = _LANDLOCK_ACCESS_FS_READ | _LANDLOCK_ACCESS_FS_WRITE | _LANDLOCK_ACCESS_FS_TRUNCATE;
|
||||||
|
|
||||||
|
/* make sure allowed_access is a subset of handled_access_fs, which may change for older landlock ABI */
|
||||||
|
path_beneath.allowed_access &= ruleset_attr.handled_access_fs;
|
||||||
|
|
||||||
if(landlock_add_rule(ruleset_fd, LANDLOCK_RULE_PATH_BENEATH, &path_beneath, 0) == 0) {
|
if(landlock_add_rule(ruleset_fd, LANDLOCK_RULE_PATH_BENEATH, &path_beneath, 0) == 0) {
|
||||||
if(landlock_restrict_self(ruleset_fd, 0)) {
|
if(landlock_restrict_self(ruleset_fd, 0)) {
|
||||||
_alpm_log(handle, ALPM_LOG_ERROR, _("restricting filesystem access failed because the landlock ruleset could not be applied!\n"));
|
_alpm_log(handle, ALPM_LOG_ERROR, _("restricting filesystem access failed because the landlock ruleset could not be applied!\n"));
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* sandbox_fs.h
|
* sandbox_fs.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2021-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2021-2025 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
|
||||||
|
|
165
lib/libalpm/sandbox_syscalls.c
Normal file
165
lib/libalpm/sandbox_syscalls.c
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
26
lib/libalpm/sandbox_syscalls.h
Normal file
26
lib/libalpm/sandbox_syscalls.h
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* 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 */
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* signing.c
|
* signing.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2008-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2008-2025 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,46 +371,6 @@ 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) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* signing.h
|
* signing.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2008-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2008-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* sync.c
|
* sync.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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>
|
||||||
|
@ -817,6 +817,8 @@ static int download_files(alpm_handle_t *handle)
|
||||||
}
|
}
|
||||||
|
|
||||||
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
|
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
|
||||||
|
event.pkg_retrieve.total_size = 0;
|
||||||
|
event.pkg_retrieve.num = 0;
|
||||||
|
|
||||||
/* sum up the number of packages to download and its total size */
|
/* sum up the number of packages to download and its total size */
|
||||||
for(i = files; i; i = i->next) {
|
for(i = files; i; i = i->next) {
|
||||||
|
@ -880,7 +882,6 @@ 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;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* sync.h
|
* sync.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||||
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* trans.c
|
* trans.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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_COMMITING;
|
trans->state = STATE_COMMITTING;
|
||||||
|
|
||||||
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_COMMITED;
|
trans->state = STATE_COMMITTED;
|
||||||
|
|
||||||
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_COMMITING || trans->state == STATE_INTERRUPTED,
|
ASSERT(trans->state == STATE_COMMITTING || 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;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* trans.h
|
* trans.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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_COMMITING,
|
STATE_COMMITTING,
|
||||||
STATE_COMMITED,
|
STATE_COMMITTED,
|
||||||
STATE_INTERRUPTED
|
STATE_INTERRUPTED
|
||||||
} alpm_transstate_t;
|
} alpm_transstate_t;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* util.c
|
* util.c
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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,9 +590,7 @@ void _alpm_reset_signals(void)
|
||||||
#endif
|
#endif
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
struct sigaction def;
|
struct sigaction def = { .sa_handler = SIG_DFL };
|
||||||
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);
|
||||||
|
@ -969,8 +967,7 @@ 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);
|
||||||
newdir = mkdtemp(newdir);
|
if(mkdtemp(newdir) == NULL) {
|
||||||
if(newdir == NULL) {
|
|
||||||
free(newdir);
|
free(newdir);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* util.h
|
* util.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
|
||||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2006-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
* Copyright (c) 2006-2025 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
|
||||||
|
|
|
@ -122,12 +122,17 @@ 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',
|
||||||
|
@ -327,7 +332,7 @@ libcommon = static_library(
|
||||||
gnu_symbol_visibility : 'hidden',
|
gnu_symbol_visibility : 'hidden',
|
||||||
install : false)
|
install : false)
|
||||||
|
|
||||||
alpm_deps = [crypto_provider, libarchive, libcurl, libintl, gpgme]
|
alpm_deps = [crypto_provider, libarchive, libcurl, libintl, libseccomp, gpgme]
|
||||||
|
|
||||||
libalpm_a = static_library(
|
libalpm_a = static_library(
|
||||||
'alpm_objlib',
|
'alpm_objlib',
|
||||||
|
@ -428,6 +433,8 @@ 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',
|
||||||
|
|
|
@ -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'.
|
||||||
|
|
||||||
# The following guidelines are specific to BZR, GIT, HG and SVN packages.
|
# Guidelines specific to Bazaar, Git, Mercurial and Subversion 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>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# autodep.sh - functions for automatically adding depends/provides
|
# autodep.sh - functions for automatically adding depends/provides
|
||||||
#
|
#
|
||||||
# Copyright (c) 2021-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# library_depends.sh - Automatically add library requirements to depends
|
# library_depends.sh - Automatically add library requirements to depends
|
||||||
#
|
#
|
||||||
# Copyright (c) 2021-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2021-2025 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
|
||||||
|
|
||||||
|
|
|
@ -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-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2021-2025 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;
|
||||||
|
|
|
@ -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-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2015-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# buildflags.sh - Clear user-specified buildflags if requested
|
# buildflags.sh - Clear user-specified buildflags if requested
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# 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-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2007-2025 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,8 +44,9 @@ 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
|
||||||
if [[ " $CCACHE_PREFIX " != *" distcc "* ]]; then
|
local distcc=$(type -p distcc)
|
||||||
export CCACHE_PREFIX="${CCACHE_PREFIX:+$CCACHE_PREFIX }distcc"
|
if [[ " $CCACHE_PREFIX " != *" ${distcc} "* ]]; then
|
||||||
|
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
|
||||||
|
|
|
@ -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-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# fortran.sh - Specify flags for building a package with Fortran
|
# fortran.sh - Specify flags for building a package with Fortran
|
||||||
#
|
#
|
||||||
# Copyright (c) 2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2024-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
# 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-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2021-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# makeflags.sh - Clear user-specified makeflags if requested
|
# makeflags.sh - Clear user-specified makeflags if requested
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2007-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# rust.sh - Specify flags for building a package with rust
|
# rust.sh - Specify flags for building a package with rust
|
||||||
#
|
#
|
||||||
# Copyright (c) 2022-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2022-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# executable.sh - confirm presence of dependent executables
|
# executable.sh - confirm presence of dependent executables
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2018-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# ccache.sh - Confirm presence of ccache binary
|
# ccache.sh - Confirm presence of ccache binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# checksum.sh - Confirm presence of binaries for checksum operations
|
# checksum.sh - Confirm presence of binaries for checksum operations
|
||||||
#
|
#
|
||||||
# Copyright (c) 2016-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2016-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# debugedit.sh - Confirm presence of debugedit binary
|
# debugedit.sh - Confirm presence of debugedit binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2022-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2022-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# distcc.sh - Confirm presence of distcc binary
|
# distcc.sh - Confirm presence of distcc binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# fakeroot.sh - Confirm presence of fakeroot binary
|
# fakeroot.sh - Confirm presence of fakeroot binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# gpg.sh - Confirm presence of gpg binary
|
# gpg.sh - Confirm presence of gpg binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# gzip.sh - Confirm presence of gzip binary
|
# gzip.sh - Confirm presence of gzip binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# pacman.sh - Confirm presence of pacman binary
|
# pacman.sh - Confirm presence of pacman binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2012-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# strip.sh - Confirm presence of strip binary
|
# strip.sh - Confirm presence of strip binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# sudo.sh - Confirm presence of sudo binary
|
# sudo.sh - Confirm presence of sudo binary
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# vcs.sh - Confirm presence of binaries for VCS operations
|
# vcs.sh - Confirm presence of binaries for VCS operations
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2014-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# integrity.sh - functions relating to source integrity checking
|
# integrity.sh - functions relating to source integrity checking
|
||||||
#
|
#
|
||||||
# Copyright (c) 2011-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2011-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# generate_checksum.sh - functions for generating source checksums
|
# generate_checksum.sh - functions for generating source checksums
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2014-2025 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#
|
#
|
||||||
# generate_signature.sh - functions for generating PGP signatures
|
# generate_signature.sh - functions for generating PGP signatures
|
||||||
#
|
#
|
||||||
# Copyright (c) 2008-2024 Pacman Development Team <pacman-dev@lists.archlinux.org>
|
# Copyright (c) 2008-2025 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
Loading…
Add table
Reference in a new issue