Compare commits
65 commits
morganamil
...
master
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 |
220 changed files with 938 additions and 662 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>
|
||||
甘露(Gan Lu) <rhythm.gan@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>
|
||||
Jonathan Conder <j@skurvy.no-ip.org> <jonno.conder@gmail.com>
|
||||
Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>
|
||||
|
|
10
NEWS
10
NEWS
|
@ -1,6 +1,6 @@
|
|||
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.
|
||||
- Download files to a temporary directory owned by DownloadUser
|
||||
- On Linux systems, ensure the download process does not write
|
||||
|
@ -649,7 +649,7 @@ VERSION DESCRIPTION
|
|||
file overwrites from malicious databases
|
||||
- makepkg:
|
||||
- restrict package name from starting with a dot
|
||||
- fix BZR source revision support (FS#35281)
|
||||
- fix Bazaar source revision support (FS#35281)
|
||||
- Use LOGDEST for log pipe
|
||||
- fix distcc disabling (FS#35741)
|
||||
- correct stat usage on BSD/Darwin (FS#35469)
|
||||
|
@ -665,7 +665,7 @@ VERSION DESCRIPTION
|
|||
FS#34716, FS#35097)
|
||||
- makepkg:
|
||||
- improve SVN VCS PKGBUILD handling (FS#34675, FS#34636)
|
||||
- allow "lp:" URLs for BZR sources (FS#34650)
|
||||
- allow "lp:" URLs for Bazaar sources (FS#34650)
|
||||
- prevent pkgver() capturing stderr (FS#34974)
|
||||
- fix attempt to remove package twice on failure (FS#34672)
|
||||
- contrib:
|
||||
|
@ -1338,7 +1338,7 @@ VERSION DESCRIPTION
|
|||
- add source package creation option
|
||||
- rankmirrors- allow reading from stdin (FS#8043)
|
||||
- and many other updates: 198 bugs/FRs closed since 3.0.0 release
|
||||
- switch to GIT for source code management
|
||||
- switch to Git for source code management
|
||||
3.0.6 - config files updated to reflect current -> core change
|
||||
- fix symlink overwriting issue (FS#7484)
|
||||
- fix config parsing with tr_TR locale (FS#7235)
|
||||
|
@ -1490,7 +1490,7 @@ VERSION DESCRIPTION
|
|||
- Cleanup db_loadpkgs(), add list_add_sorted()
|
||||
- Fixed a memory leak in db_find_conflicts()
|
||||
2.8.3 - Fixed a little makepkg bug with bash 3.0
|
||||
- Fixed resolvedeps to always prefer literals over provisios
|
||||
- Fixed resolvedeps to always prefer literals over providers
|
||||
- Added --config option to specify an alternate config file
|
||||
- Added "Include" directive to include repositories from
|
||||
config files (inspired by Michael Baehr's patch)
|
||||
|
|
229
README
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
|
||||
the library at the present time.
|
||||
|
||||
There is one special file,"alpm.h", which is the public interface that
|
||||
There is one special file, "alpm.h", which is the public interface that
|
||||
should be distributed and installed on systems with the library. Only
|
||||
structures, data and functions declared within this file are made available to
|
||||
the frontend. Lots of structures are of an opaque type and their fields are
|
||||
|
@ -239,7 +239,7 @@ API CHANGES BETWEEN 3.1 AND 3.2
|
|||
- alpm_checkdbconflicts()
|
||||
- alpm_sync_newversion()
|
||||
- alpm_deptest()
|
||||
- error codes :
|
||||
- error codes:
|
||||
PM_ERR_DLT_INVALID, PM_ERR_LIBARCHIVE, PM_ERR_LIBDOWNLOAD and
|
||||
PM_ERR_EXTERNAL_DOWNLOAD
|
||||
- flags:
|
||||
|
@ -352,7 +352,7 @@ API CHANGES BETWEEN 3.4 AND 3.5
|
|||
- alpm_db_get_pkg() for normal targets
|
||||
- alpm_find_dbs_satisfier() for versioned provisions
|
||||
- alpm_find_grp_pkgs() for groups
|
||||
- alpm_deptest() is replaced by the more flexibile alpm_find_satisfier()
|
||||
- alpm_deptest() is replaced by the more flexible alpm_find_satisfier()
|
||||
- size_t used for alpm_list_t sizes
|
||||
- return type for alpm_list_count()
|
||||
- parameter type in alpm_list_msort() and alpm_list_nth()
|
||||
|
@ -362,11 +362,11 @@ API CHANGES BETWEEN 3.4 AND 3.5
|
|||
- alpm_find_grp_pkgs()
|
||||
- alpm_trans_get_flags()
|
||||
- error codes:
|
||||
PM_ERR_DISK_SPACE, PM_ERR_WRITE
|
||||
- flags
|
||||
PM_TRANS_FLAG_NODEPVERSION, PM_TRANS_EVT_DISKSPACE_START,
|
||||
PM_TRANS_EVT_DISKSPACE_DONE, PM_TRANS_CONV_SELECT_PROVIDER,
|
||||
PM_TRANS_PROGRESS_DISKSPACE_START, PM_TRANS_PROGRESS_INTEGRITY_START
|
||||
PM_ERR_DISK_SPACE, PM_ERR_WRITE
|
||||
- flags:
|
||||
PM_TRANS_FLAG_NODEPVERSION, PM_TRANS_EVT_DISKSPACE_START,
|
||||
PM_TRANS_EVT_DISKSPACE_DONE, PM_TRANS_CONV_SELECT_PROVIDER,
|
||||
PM_TRANS_PROGRESS_DISKSPACE_START, PM_TRANS_PROGRESS_INTEGRITY_START
|
||||
|
||||
|
||||
API CHANGES BETWEEN 3.5 AND 4.0
|
||||
|
@ -419,7 +419,7 @@ API CHANGES BETWEEN 3.5 AND 4.0
|
|||
- alpm_release
|
||||
- alpm_remove_pkg
|
||||
- alpm_sync_sysupgrade
|
||||
- several structs are no longer opaque
|
||||
- several structs are no longer opaque:
|
||||
- alpm_conflict_t
|
||||
- alpm_delta_t
|
||||
- alpm_depend_t
|
||||
|
@ -431,19 +431,33 @@ API CHANGES BETWEEN 3.5 AND 4.0
|
|||
|
||||
[ADDED]
|
||||
- option functions:
|
||||
alpm_{get,set}_eventcb(), alpm_option_{get,set}_convcb(),
|
||||
alpm_option_{get,set}_progresscb()
|
||||
- alpm_{get,set}_eventcb()
|
||||
- alpm_option_{get,set}_convcb()
|
||||
- alpm_option_{get,set}_progresscb()
|
||||
- package signing functions:
|
||||
alpm_option_get_default_siglevel(), alpm_option_set_default_siglevel(),
|
||||
alpm_option_get_gpgdir(), alpm_option_set_gpgdir(), alpm_db_get_siglevel(),
|
||||
alpm_siglist_cleanup(), alpm_db_check_pgp_signature(), alpm_pkg_check_pgp_signature(),
|
||||
alpm_pkg_get_origin(), alpm_pkg_get_sha256sum(), alpm_pkg_get_base64_sig()
|
||||
- alpm_option_get_default_siglevel()
|
||||
- alpm_option_set_default_siglevel()
|
||||
- alpm_option_get_gpgdir()
|
||||
- alpm_option_set_gpgdir()
|
||||
- alpm_db_get_siglevel()
|
||||
- alpm_siglist_cleanup()
|
||||
- alpm_db_check_pgp_signature()
|
||||
- alpm_pkg_check_pgp_signature()
|
||||
- alpm_pkg_get_origin()
|
||||
- alpm_pkg_get_sha256sum()
|
||||
- alpm_pkg_get_base64_sig()
|
||||
- list functions:
|
||||
alpm_list_to_array(), alpm_list_previous()
|
||||
- alpm_list_to_array()
|
||||
- alpm_list_previous()
|
||||
- structs:
|
||||
alpm_backup_t, alpm_file_t, alpm_filelist_t
|
||||
- alpm_backup_t
|
||||
- alpm_file_t
|
||||
- alpm_filelist_t
|
||||
- enums:
|
||||
alpm_siglevel_t, alpm_sigstatus_t, alpm_sigvalidity_t, alpm_pkgfrom_t
|
||||
- alpm_siglevel_t
|
||||
- alpm_sigstatus_t
|
||||
- alpm_sigvalidity_t
|
||||
- alpm_pkgfrom_t
|
||||
- error codes:
|
||||
ALPM_ERR_DB_INVALID, ALPM_ERR_DB_INVALID_SIG, ALPM_ERR_GPGME,
|
||||
ALPM_ERR_PKG_INVALID_CHECKSUM, ALPM_ERR_PKG_INVALID_SIG, ALPM_ERR_SIG_INVALID,
|
||||
|
@ -470,10 +484,10 @@ API CHANGES BETWEEN 4.0 AND 4.1
|
|||
- alpm_db_unregister_all -> alpm_unregister_all_syncdbs
|
||||
- alpm_db_readgroup -> alpm_db_get_group
|
||||
- alpm_db_set_pkgreason -> alpm_pkg_set_reason (handle parameter removed)
|
||||
- alpm_time_t typedef used for all times
|
||||
- alpm_time_t typedef used for all times:
|
||||
- members of alpm_pgpkey_t
|
||||
- return types of alpm_pkg_get_builddate and alpm_pkg_get_installdate
|
||||
- delta options now use required ratio rather than on/off
|
||||
- delta options now use required ratio rather than on/off:
|
||||
- alpm_option_get_usedelta -> alpm_option_get_deltaratio
|
||||
- alpm_option_set_usedelta -> alpm_option_set_deltaratio
|
||||
|
||||
|
@ -490,21 +504,21 @@ API CHANGES BETWEEN 4.0 AND 4.1
|
|||
- alpm_db_usage_t
|
||||
- alpm_db_set_usage()
|
||||
- alpm_db_get_usage()
|
||||
- wrapper functions for reading mtree files
|
||||
- wrapper functions for reading mtree files:
|
||||
- alpm_pkg_mtree_open()
|
||||
- alpm_pkg_mtree_next()
|
||||
- alpm_pkg_mtree_close()
|
||||
- utility functions
|
||||
- utility functions:
|
||||
- alpm_pkg_find()
|
||||
- alpm_pkg_compute_optionalfor()
|
||||
- alpm_filelist_contains()
|
||||
- types
|
||||
- types:
|
||||
- alpm_time_t
|
||||
- alpm_errno_t
|
||||
- flags
|
||||
ALPM_EVENT_OPTDEP_REQUIRED, ALPM_EVENT_DATABASE_MISSING,
|
||||
ALPM_EVENT_KEYRING_START, ALPM_EVENT_KEYRING_DONE, ALPM_EVENT_KEY_DOWNLOAD_START,
|
||||
ALPM_EVENT_KEY_DOWNLOAD_DONE, ALPM_PROGRESS_KEYRING_START
|
||||
- flags:
|
||||
ALPM_EVENT_OPTDEP_REQUIRED, ALPM_EVENT_DATABASE_MISSING,
|
||||
ALPM_EVENT_KEYRING_START, ALPM_EVENT_KEYRING_DONE, ALPM_EVENT_KEY_DOWNLOAD_START,
|
||||
ALPM_EVENT_KEY_DOWNLOAD_DONE, ALPM_PROGRESS_KEYRING_START
|
||||
|
||||
|
||||
API CHANGES BETWEEN 4.1 AND 4.2
|
||||
|
@ -513,49 +527,49 @@ API CHANGES BETWEEN 4.1 AND 4.2
|
|||
[CHANGED]
|
||||
- alpm_filelist_t - removed member resolved_path
|
||||
- alpm_filelist_contains - now returns alpm_file_t
|
||||
- event callback
|
||||
- alpm_event_t renamed to alpm_event_type_t
|
||||
- alpm_event_t union added
|
||||
- alpm_event_cb now takes only an alpm_event_t parameter
|
||||
- alpm_event_any_t, alpm_package_operation_t, alpm_event_package_operation_t,
|
||||
alpm_event_optdep_removal_t, alpm_event_delta_patch_t, alpm_event_scriptlet_info_t,
|
||||
alpm_event_database_missing_t, alpm_event_pkgdownload_t, alpm_event_pacnew_created_t,
|
||||
alpm_event_pacsave_created_t, alpm_event_pacorig_created_t added
|
||||
- ALPM_EVENT_*_START -> ALPM_EVENT_PACKAGE_OPERATION_START
|
||||
- ALPM_EVENT_*_DONE -> ALPM_EVENT_PACKAGE_OPERATION_DONE
|
||||
- question callback
|
||||
- alpm_question_t renamed to alpm_question_type_t
|
||||
- alpm_question_t union added
|
||||
- alpm_cb_question now takes only an alpm_question_t parameter
|
||||
- alpm_question_any_t, alpm_question_install_ignorepkg_t, alpm_question_replace_t
|
||||
alpm_question_conflict_t, alpm_question_corrupted_t, alpm_question_remove_pkgs_t,
|
||||
alpm_question_select_provider_t, alpm_question_import_key_t added
|
||||
- event callback:
|
||||
- alpm_event_t renamed to alpm_event_type_t
|
||||
- alpm_event_t union added
|
||||
- alpm_event_cb now takes only an alpm_event_t parameter
|
||||
- alpm_event_any_t, alpm_package_operation_t, alpm_event_package_operation_t,
|
||||
alpm_event_optdep_removal_t, alpm_event_delta_patch_t, alpm_event_scriptlet_info_t,
|
||||
alpm_event_database_missing_t, alpm_event_pkgdownload_t, alpm_event_pacnew_created_t,
|
||||
alpm_event_pacsave_created_t, alpm_event_pacorig_created_t added
|
||||
- ALPM_EVENT_*_START -> ALPM_EVENT_PACKAGE_OPERATION_START
|
||||
- ALPM_EVENT_*_DONE -> ALPM_EVENT_PACKAGE_OPERATION_DONE
|
||||
- question callback:
|
||||
- alpm_question_t renamed to alpm_question_type_t
|
||||
- alpm_question_t union added
|
||||
- alpm_cb_question now takes only an alpm_question_t parameter
|
||||
- alpm_question_any_t, alpm_question_install_ignorepkg_t, alpm_question_replace_t
|
||||
alpm_question_conflict_t, alpm_question_corrupted_t, alpm_question_remove_pkgs_t,
|
||||
alpm_question_select_provider_t, alpm_question_import_key_t added
|
||||
|
||||
[ADDED]
|
||||
- memory management
|
||||
- memory management:
|
||||
- alpm_fileconflict_free()
|
||||
- alpm_depmissing_free()
|
||||
- alpm_conflict_free()
|
||||
- alpm_dep_free()
|
||||
- database usage
|
||||
- database usage:
|
||||
- alpm_db_usage_t
|
||||
- alpm_db_set_usage()
|
||||
- alpm_db_get_usage()
|
||||
- assume installed
|
||||
- assume installed:
|
||||
- alpm_option_get_assumeinstalled()
|
||||
- alpm_option_add_assumeinstalled()
|
||||
- alpm_option_set_assumeinstalled()
|
||||
- alpm_option_remove_assumeinstalled()
|
||||
- using noupgrade/noextract
|
||||
- using noupgrade/noextract:
|
||||
- alpm_option_match_noupgrade()
|
||||
- alpm_option_match_noextract()
|
||||
- utility functions
|
||||
- utility functions:
|
||||
- alpm_dep_from_string()
|
||||
- alpm_pkg_should_ignore()
|
||||
- alpm_decode_signature()
|
||||
- alpm_extract_keyid()
|
||||
- flags
|
||||
- ALPM_EVENT_RETRIEVE_DONE, ALPM_EVENT_RETRIEVE_FAILED, ALPM_EVENT_PKGDOWNLOAD_START,
|
||||
- flags:
|
||||
ALPM_EVENT_RETRIEVE_DONE, ALPM_EVENT_RETRIEVE_FAILED, ALPM_EVENT_PKGDOWNLOAD_START,
|
||||
ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED, ALPM_EVENT_OPTDEP_REMOVAL,
|
||||
ALPM_EVENT_PACNEW_CREATED, ALPM_EVENT_PACSVAE_CREATED, ALPM_EVENT_PACORIG_CREATED
|
||||
|
||||
|
@ -565,13 +579,13 @@ API CHANGES BETWEEN 4.2 AND 5.0
|
|||
|
||||
[REMOVED]
|
||||
- alpm_siglevel_t - removed members ALPM_SIG_PACKAGE_SET, ALPM_SIG_PACKAGE_TRUST_SET
|
||||
- removed .pacorig generation
|
||||
- removed .pacorig generation:
|
||||
- ALPM_EVENT_PACORIG_CREATED
|
||||
- alpm_event_pacorig_created_t
|
||||
- alpm_event_t.pacorig_created
|
||||
|
||||
[ADDED]
|
||||
- hook support
|
||||
- hook support:
|
||||
- alpm_option_get_hookdirs()
|
||||
- alpm_option_set_hookdirs()
|
||||
- alpm_option_add_hookdir()
|
||||
|
@ -581,14 +595,14 @@ API CHANGES BETWEEN 4.2 AND 5.0
|
|||
- ALPM_EVENT_HOOK_START, ALPM_EVENT_HOOK_DONE
|
||||
- ALPM_EVENT_HOOK_RUN_START, ALPM_EVENT_HOOK_RUN_DONE
|
||||
- ALPM_ERR_TRANS_HOOK_FAILED
|
||||
- different database extension support
|
||||
- different database extension support:
|
||||
- alpm_option_get_dbext()
|
||||
- alpm_option_set_dbext()
|
||||
- pkgbase accessor
|
||||
- pkgbase accessor:
|
||||
- alpm_pkg_get_base()
|
||||
- transaction events
|
||||
- transaction events:
|
||||
- ALPM_EVENT_TRANSACTION_START, ALPM_EVENT_TRANSACTION_DONE
|
||||
- database unlocking
|
||||
- database unlocking:
|
||||
- alpm_unlock()
|
||||
|
||||
|
||||
|
@ -598,7 +612,7 @@ API CHANGES BETWEEN 5.0 AND 5.1
|
|||
[CHANGED]
|
||||
- alpm_errno_t - added member ALPM_ERR_OK
|
||||
- alpm_siglevel_t - value of ALPM_SIG_USE_DEFAULT changed
|
||||
- functions using bitfields return/pass an int instead of an enum
|
||||
- functions using bitfields return/pass an int instead of an enum:
|
||||
- alpm_option_get_default_siglevel()
|
||||
- alpm_option_set_default_siglevel()
|
||||
- alpm_option_get_remote_file_siglevel()
|
||||
|
@ -615,19 +629,19 @@ API CHANGES BETWEEN 5.0 AND 5.1
|
|||
- alpm_option_set_local_file_siglevel()
|
||||
|
||||
[ADDED]
|
||||
- overwrite support
|
||||
- overwrite support:
|
||||
- alpm_option_get_overwrite_files()
|
||||
- alpm_option_set_overwrite_files()
|
||||
- alpm_option_add_overwrite_file()
|
||||
- alpm_option_remove_overwrite_file()
|
||||
- download timeout control
|
||||
- download timeout control:
|
||||
- alpm_option_set_disable_dl_timeout()
|
||||
- access make/checkdepends info
|
||||
- access make/checkdepends info:
|
||||
- alpm_pkg_get_checkdepends()
|
||||
- alpm_pkg_get_makedepends()
|
||||
- check pacman capabilities
|
||||
- check pacman capabilities:
|
||||
- alpm_capabilities()
|
||||
- duplicate and add to list
|
||||
- duplicate and add to list:
|
||||
- alpm_list_append_strdup()
|
||||
|
||||
|
||||
|
@ -635,7 +649,7 @@ API CHANGES BETWEEN 5.1 AND 5.2
|
|||
===============================
|
||||
|
||||
[REMOVED]
|
||||
- package delta support
|
||||
- package delta support:
|
||||
- alpm_delta_t
|
||||
- alpm_event_delta_patch_t
|
||||
- alpm_event_t union - removed alpm_event_delta_patch_t
|
||||
|
@ -662,10 +676,10 @@ API CHANGES BETWEEN 5.2 AND 6.0
|
|||
[REMOVED]
|
||||
- ALPM_EVENT_PKGDOWNLOAD_START, ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED
|
||||
- ALPM_ERR_PKG_REPO_NOT_FOUND
|
||||
- old TotalDownload implementation
|
||||
- alpm_cb_totaldl
|
||||
- alpm_option_get_totaldlcb()
|
||||
- alpm_option_set_totaldlcb()
|
||||
- old TotalDownload implementation:
|
||||
- alpm_cb_totaldl
|
||||
- alpm_option_get_totaldlcb()
|
||||
- alpm_option_set_totaldlcb()
|
||||
|
||||
[CHANGED]
|
||||
- alpm_db_update() now accepts a list of databases rather than a single database.
|
||||
|
@ -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_EVENT_RETRIEVE_* -> ALPM_EVENT_DB_RETRIEVE_* and ALPM_EVENT_PKG_RETRIEVE_*
|
||||
- alpm_cb_download pass event and data
|
||||
- multi architecture support
|
||||
- alpm_option_get_arch() -> alpm_option_get_architectures()
|
||||
- alpm_option_set_arch() -> alpm_option_set_architectures()
|
||||
- multi architecture support:
|
||||
- alpm_option_get_arch() -> alpm_option_get_architectures()
|
||||
- alpm_option_set_arch() -> alpm_option_set_architectures()
|
||||
- alpm_db_get_servers() copies parameter data
|
||||
|
||||
[ADDED]
|
||||
- parallel download support
|
||||
- alpm_option_set_parallel_downloads()
|
||||
- alpm_option_get_parallel_downloads()
|
||||
- file download events
|
||||
- alpm_download_event_type_t
|
||||
- alpm_download_event_init_t
|
||||
- alpm_download_event_progress_t
|
||||
- alpm_download_event_completed_t
|
||||
- download misc
|
||||
- ALPM_DOWNLOAD_RETRY
|
||||
- alpm_download_event_retry_t
|
||||
- alpm_event_pkg_retrieve_t
|
||||
- multiarchitecture support
|
||||
- alpm_option_add_architecture()
|
||||
- alpm_option_remove_architecture()
|
||||
- misc
|
||||
- alpm_pkg_get_sig()
|
||||
- parallel download support:
|
||||
- alpm_option_set_parallel_downloads()
|
||||
- alpm_option_get_parallel_downloads()
|
||||
- file download events:
|
||||
- alpm_download_event_type_t
|
||||
- alpm_download_event_init_t
|
||||
- alpm_download_event_progress_t
|
||||
- alpm_download_event_completed_t
|
||||
- download misc:
|
||||
- ALPM_DOWNLOAD_RETRY
|
||||
- alpm_download_event_retry_t
|
||||
- alpm_event_pkg_retrieve_t
|
||||
- multiarchitecture support:
|
||||
- alpm_option_add_architecture()
|
||||
- alpm_option_remove_architecture()
|
||||
- misc:
|
||||
- alpm_pkg_get_sig()
|
||||
- callbacks add front-end provided context
|
||||
|
||||
|
||||
|
@ -713,23 +727,32 @@ API CHANGES BETWEEN 6.0 AND 6.1
|
|||
- alpm_transflag_t - added ALPM_TRANS_FLAG_NOHOOKS
|
||||
|
||||
[ADDED]
|
||||
- extensible package data type
|
||||
- alpm_pkg_xdata_t
|
||||
- alpm_pkg_get_xdata()
|
||||
- accessor functions
|
||||
- alpm_db_get_handle()
|
||||
- alpm_pkg_get_handle()
|
||||
- cache server support
|
||||
- alpm_db_get_cache_servers()
|
||||
- alpm_db_set_cache_servers()
|
||||
- alpm_db_add_cache_server()
|
||||
- extensible package data type:
|
||||
- alpm_pkg_xdata_t
|
||||
- alpm_pkg_get_xdata()
|
||||
- accessor functions:
|
||||
- alpm_db_get_handle()
|
||||
- alpm_pkg_get_handle()
|
||||
- cache server support:
|
||||
- alpm_db_get_cache_servers()
|
||||
- alpm_db_set_cache_servers()
|
||||
- alpm_db_add_cache_server()
|
||||
|
||||
|
||||
API CHANGES BETWEEN 6.1 AND 7.0
|
||||
===============================
|
||||
|
||||
[ADDED]
|
||||
- sandbox functions
|
||||
- alpm_option_get_sandboxuser()
|
||||
- alpm_option_set_sandboxuser()
|
||||
- alpm_option_set_disable_sandbox()
|
||||
- alpm_sandbox_setup_child()
|
||||
- sandbox functions:
|
||||
- alpm_option_get_sandboxuser()
|
||||
- alpm_option_set_sandboxuser()
|
||||
- alpm_option_set_disable_sandbox()
|
||||
- alpm_sandbox_setup_child()
|
||||
|
||||
|
||||
API CHANGES BETWEEN 7.0 AND 7.1
|
||||
===============================
|
||||
|
||||
[CHANGED]
|
||||
- error codes:
|
||||
PM_ERR_TRANS_COMMITING renamed to PM_ERR_TRANS_COMMITTING
|
||||
|
|
|
@ -3,7 +3,7 @@ currently. Our translations are currently maintained in Transifex; please read
|
|||
doc/translation-help.txt for more details.
|
||||
|
||||
Below is a list of past translators before we switched to Transifex; more can
|
||||
be found by looking in the GIT history.
|
||||
be found by looking in the Git history.
|
||||
|
||||
If your language is not already in the various po/ subdirectories and you wish
|
||||
it was, set up a team in Transifex for your language and we will be happy to
|
||||
|
|
|
@ -11,8 +11,8 @@ Synopsis
|
|||
This manual page describes the format of a BUILDINFO file found in the root of
|
||||
a package created by makepkg. The file contains a description of the package's
|
||||
build environment. The information is formatted in key-value pairs separated by
|
||||
a '=', one value per line. Arrays are represented multiple keys with the same
|
||||
value.
|
||||
a '=', one value per line. Arrays are represented as multiple key-value pairs
|
||||
having the same key.
|
||||
|
||||
|
||||
Description
|
||||
|
|
|
@ -313,6 +313,15 @@ underscore and the architecture name e.g., 'replaces_x86_64=()'.
|
|||
Enable building packages using link time optimization. Adds '-flto'
|
||||
to both CFLAGS and CXXFLAGS.
|
||||
|
||||
*xdata (array)*::
|
||||
This array allows you to add additional metadata to the package.
|
||||
This data is neither used by pacman nor by makepkg;
|
||||
It has purely informational purpose, or may be interpreted by third-party tools.
|
||||
+
|
||||
All entries in that array must have the form 'key=value', where
|
||||
'key' is an arbitrary non-empty string and 'value' must not contain an equal sign.
|
||||
Furthermore, the key ``pkgtype'' is reserved for the makepkg program.
|
||||
|
||||
|
||||
Packaging Functions
|
||||
-------------------
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
## linkman: macro
|
||||
# Inspired by/borrowed from the GIT source tree at Documentation/asciidoc.conf
|
||||
# Inspired by/borrowed from the Git source tree at Documentation/asciidoc.conf
|
||||
#
|
||||
# Usage: linkman:command[manpage-section]
|
||||
#
|
||||
|
|
|
@ -252,7 +252,7 @@ the package database if it helps.
|
|||
|
||||
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
|
||||
<jvinet@zeroflux.org> and is licensed through the GNU General Public License,
|
||||
version 2 or later.
|
||||
|
|
|
@ -247,6 +247,11 @@ Environment Variables
|
|||
Use an alternate config file instead of the +{sysconfdir}/makepkg.conf+
|
||||
default.
|
||||
|
||||
**MAKEPKG_GIT_CONFIG=**"/path/to/file"::
|
||||
Use an alternate config file for Git instead of the
|
||||
+{sysconfdir}/makepkg.d/gitconfig+ default. makepkg always prevents Git
|
||||
from loading any other config files.
|
||||
|
||||
**PKGDEST=**"/path/to/directory"::
|
||||
Directory where the resulting packages will be stored. Overrides the
|
||||
corresponding value defined in linkman:makepkg.conf[5].
|
||||
|
@ -297,7 +302,7 @@ Environment Variables
|
|||
**BUILDTOOLVER=**"<version>"::
|
||||
The version of the '$BUILDTOOL' used.
|
||||
|
||||
**MAKEPKG_LINT_PKGBUILD=**0
|
||||
**MAKEPKG_LINT_PKGBUILD=**0::
|
||||
Setting to 0 disables PKGBUILD linting within makepkg. Useful on systems
|
||||
with slow bash subshell operations, or on PKGBUILDs with extreme amounts of
|
||||
package splitting.
|
||||
|
|
|
@ -62,6 +62,11 @@ Options
|
|||
A string such as ``i686-pc-linux-gnu''; do not touch this unless you know what
|
||||
you are doing. This can be commented out by most users if desired.
|
||||
|
||||
**NPROC=**""::
|
||||
Sets the number of processors to use for parallel jobs in makepkg.
|
||||
Note: this does not affect parallelization of tasks during ``build()`` and
|
||||
related functions.
|
||||
|
||||
**CPPFLAGS=**"cppflags"::
|
||||
Flags used for the C preprocessor; see CFLAGS for more information.
|
||||
|
||||
|
|
|
@ -151,7 +151,8 @@ Options
|
|||
+{localstatedir}/cache/pacman/pkg+). Multiple cache directories can be
|
||||
specified, and they are tried in the order they are passed to pacman.
|
||||
*NOTE*: This is an absolute path, and the root path is not automatically
|
||||
prepended.
|
||||
prepended. If DownloadUser is set in linkman:pacman.conf[5], then the
|
||||
specified user must have permission to access the cache directory.
|
||||
|
||||
*\--color* <when>::
|
||||
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
|
||||
Server = ftp://ftp.archlinux.org/$repo/os/$arch
|
||||
# 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
|
||||
|
|
|
@ -29,9 +29,10 @@ specified on the command line. Multiple packages to remove can be specified
|
|||
on the command line.
|
||||
|
||||
A package database is a tar file, optionally compressed. Valid extensions are
|
||||
``.db'' followed by an archive extension of ``.tar'', ``.tar.gz'', ``.tar.bz2'',
|
||||
``.tar.xz'', or ``.tar.Z''. The file does not need to exist, but all parent
|
||||
directories must exist.
|
||||
``.db'' followed by an archive extension of ``.tar'', ``.tar.bz2'',
|
||||
``.tar.gz'', ``.tar.lrz'', ``.tar.lz'', ``.tar.lz4'', ``.tar.lzo'',
|
||||
``.tar.xz'', ``.tar.zst'' or ``.tar.Z''. The file does not need to exist, but
|
||||
all parent directories must exist.
|
||||
|
||||
|
||||
Common Options
|
||||
|
@ -59,6 +60,14 @@ Common Options
|
|||
*\--nocolor*::
|
||||
Remove color from 'repo-add' and 'repo-remove' output.
|
||||
|
||||
*-R, \--remove*::
|
||||
Remove old package files from the disk when updating or removing their
|
||||
entry in the database.
|
||||
|
||||
*-w, \--wait-for-lock*::
|
||||
Wait for the lock file to be acquired. If unset, command will fail with
|
||||
exit code 2 if acquiring the lock fails. If set, it will retry to acquire
|
||||
lock until success.
|
||||
|
||||
repo-add Options
|
||||
----------------
|
||||
|
@ -66,10 +75,6 @@ repo-add Options
|
|||
Only add packages that are not already in the database. Warnings will be
|
||||
printed upon detection of existing packages, but they will not be re-added.
|
||||
|
||||
*-R, \--remove*::
|
||||
Remove old package files from the disk when updating their entry in the
|
||||
database.
|
||||
|
||||
*\--include-sigs*::
|
||||
Include package PGP signatures in the repository database (if available)
|
||||
|
||||
|
|
|
@ -11,9 +11,9 @@ NOTE: Some of this is paraphrased from the kernel documentation's
|
|||
|
||||
Getting the most recent source
|
||||
------------------------------
|
||||
Patches need to be submitted in GIT format and are best if they are against the
|
||||
Patches need to be submitted in Git format and are best if they are against the
|
||||
latest version of the code. There are several helpful tutorials for getting
|
||||
started with GIT if you have not worked with it before.
|
||||
started with Git if you have not worked with it before.
|
||||
|
||||
* https://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
|
||||
* https://wiki.archlinux.org/index.php/Super_Quick_Git_Guide
|
||||
|
|
|
@ -4,10 +4,10 @@ Pacman - Translating
|
|||
This document is here to guide you in helping translate pacman messages,
|
||||
libalpm messages, and the manual pages for the entire pacman package.
|
||||
|
||||
We are currently using https://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
|
||||
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
|
||||
gettext website is a very useful guide to read before embarking on translation
|
||||
|
@ -31,7 +31,7 @@ either be hand-edited, or modified with a tool such as poedit, gtranslator or
|
|||
kbabel. Using a translation tool tends to make the job easier.
|
||||
|
||||
Please read up on Transifex usage using the
|
||||
https://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
|
||||
an example set of commands if you have a source code checkout and are not
|
||||
|
@ -56,19 +56,19 @@ Pre-release Updates
|
|||
|
||||
A week or two before each release, the codebase will go into a string freeze
|
||||
and an email will be sent to the mailto:pacman-dev@lists.archlinux.org[pacman-dev]
|
||||
mailing list asking for translations. This email will have a prefix of
|
||||
*[translation]* for anyone looking to set up an email filter.
|
||||
mailing list asking for translations. An announcement in Transifex is also made,
|
||||
which reaches everyone that is member of the translation team.
|
||||
|
||||
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
|
||||
and front-end). Translators interested in helping are encouraged to use the
|
||||
Transifex project page. Each language will have three files available (libalpm,
|
||||
pacman and pacman-scripts). Translators interested in helping are encouraged to use the
|
||||
features of Transifex to let others know they are currently translating their
|
||||
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.
|
||||
|
||||
NOTE: Please upload your translations as soon as possible- this will give other
|
||||
NOTE: Please upload your translations as soon as possible - this will give other
|
||||
speakers of your language time to review your translations and update them as
|
||||
necessary.
|
||||
|
||||
|
@ -80,21 +80,25 @@ repository.
|
|||
|
||||
git clone https://gitlab.archlinux.org/pacman/pacman.git
|
||||
|
||||
Next, you will need to run `./autogen.sh` and `./configure` in the base
|
||||
directory to generate the correct Makefiles. At this point, all necessary
|
||||
make targets will be generated and we can begin updating the translation
|
||||
files.
|
||||
Next, you will need to configure the build environment. From the base directory,
|
||||
run:
|
||||
|
||||
We need to first update the main message catalog file. Navigate into either the
|
||||
`lib/libalpm/po` or `po` directory depending on which translation you wish to
|
||||
work on first, and execute the following command. If you are working in the
|
||||
`po/` tree, replace 'libalpm.pot' with 'pacman.pot':
|
||||
meson setup . build
|
||||
|
||||
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:
|
||||
|
||||
Next, update your specific language's translation file:
|
||||
meson compile -C build pacman-scripts-pot pacman-pot libalpm-pot
|
||||
|
||||
make <po file>-update
|
||||
We need to first update the main message catalog file. Navigate into either
|
||||
the `lib/libalpm/po`, `scripts/po` or `src/pacman/po` directory depending
|
||||
on which translation you wish to work on first, and execute the following
|
||||
command to update your specific language's translation file
|
||||
(replace `lang_code` with your language code e.g. 'pt_BR', and `pot_file`
|
||||
with `libalpm.pot`, `pacman.pot` or `pacman-scripts.pot`):
|
||||
|
||||
msgmerge --update --previous <lang_code>.po <pot_filename>.pot
|
||||
|
||||
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
|
||||
|
@ -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
|
||||
with the following command:
|
||||
|
||||
make update-po
|
||||
./build-aux/update-po
|
||||
|
||||
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/`
|
||||
directories, substituting where appropriate. First, edit the `LINGUAS` file and
|
||||
add your new language code at the bottom. Next, run the following command,
|
||||
substituting 'libalpm.pot' or 'pacman.pot' for potfile depending on which
|
||||
substituting `libalpm.pot` or `pacman.pot` for potfile depending on which
|
||||
directory you are currently working in:
|
||||
|
||||
msginit -l <lang code> -o <lang code>.po -i <potfile>
|
||||
msginit -l <lang_code> -o <lang_code>.po -i <potfile>
|
||||
|
||||
You can then also add your language code to the end of the `LINGUAS` file
|
||||
located in each po directory.
|
||||
|
@ -137,11 +141,13 @@ following two translations are equivalent:
|
|||
msgstr ""
|
||||
"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
|
||||
make
|
||||
cp <lang code>.gmo /usr/share/locale/<lang code>/LC_MESSAGES/pacman.mo
|
||||
meson compile -C build pacman-scripts-gmo pacman-gmo libalpm-gmo
|
||||
cp ./build/lib/libalpm/po/<lang_code>/LC_MESSAGES/libalpm.mo /usr/share/locale/<lang_code>/LC_MESSAGES/libalpm.mo
|
||||
cp ./build/scripts/po/<lang_code>/LC_MESSAGES/pacman-scripts.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman-scripts.mo
|
||||
cp ./build/src/pacman/po/<lang_code>/LC_MESSAGES/pacman.mo /usr/share/locale/<lang_code>/LC_MESSAGES/pacman.mo
|
||||
|
||||
|
||||
Translating Manpages
|
||||
|
|
|
@ -36,6 +36,8 @@ VCSCLIENTS=('bzr::breezy'
|
|||
CARCH="@CARCH@"
|
||||
CHOST="@CHOST@"
|
||||
|
||||
#NPROC=2
|
||||
|
||||
#-- Compiler and Linker Flags
|
||||
#CPPFLAGS=""
|
||||
#CFLAGS="-O2 -pipe"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
@ -25,6 +25,9 @@
|
|||
#include <curl/curl.h>
|
||||
#endif
|
||||
|
||||
#include <errno.h>
|
||||
#include <pwd.h>
|
||||
|
||||
/* libalpm */
|
||||
#include "alpm.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";
|
||||
char *hookdir;
|
||||
size_t hookdirlen, lockfilelen;
|
||||
struct passwd const *pw = NULL;
|
||||
alpm_handle_t *myhandle = _alpm_handle_new();
|
||||
|
||||
if(myhandle == NULL) {
|
||||
|
@ -78,6 +82,10 @@ alpm_handle_t SYMEXPORT *alpm_initialize(const char *root, const char *dbpath,
|
|||
|
||||
myhandle->parallel_downloads = 1;
|
||||
|
||||
/* set default sandboxuser */
|
||||
ASSERT((pw = getpwuid(0)) != NULL, myerr = errno; goto cleanup);
|
||||
STRDUP(myhandle->sandboxuser, pw->pw_name, goto nomem);
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
bindtextdomain("libalpm", LOCALEDIR);
|
||||
#endif
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
@ -451,14 +451,6 @@ typedef struct _alpm_pgpkey_t {
|
|||
unsigned int length;
|
||||
/** has the key been revoked */
|
||||
unsigned int revoked;
|
||||
/** A character representing the encryption algorithm used by the public key
|
||||
*
|
||||
* ? = unknown
|
||||
* R = RSA
|
||||
* D = DSA
|
||||
* E = EDDSA
|
||||
*/
|
||||
char pubkey_algo;
|
||||
} alpm_pgpkey_t;
|
||||
|
||||
/**
|
||||
|
@ -2265,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.
|
||||
* @param handle the context handle
|
||||
* @param disable_dl_timeout 0 for enabled, 1 for disabled
|
||||
|
@ -2307,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.
|
||||
* @param handle the context handle
|
||||
* @param disable_sandbox 0 for enabled, 1 for disabled
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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 Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* 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);
|
||||
FREELIST(payloads);
|
||||
}
|
||||
_alpm_remove_temporary_download_dir(temporary_syncpath);
|
||||
FREE(temporary_syncpath);
|
||||
FREE(syncpath);
|
||||
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 struct pkg_operations sync_pkg_ops;
|
||||
static int sync_pkg_ops_initalized = 0;
|
||||
if(!sync_pkg_ops_initalized) {
|
||||
static int sync_pkg_ops_initialized = 0;
|
||||
if(!sync_pkg_ops_initialized) {
|
||||
sync_pkg_ops = default_pkg_ops;
|
||||
sync_pkg_ops.get_validation = _sync_get_validation;
|
||||
sync_pkg_ops_initalized = 1;
|
||||
sync_pkg_ops_initialized = 1;
|
||||
}
|
||||
return &sync_pkg_ops;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
|
@ -181,13 +181,13 @@ static void _alpm_warn_dep_cycle(alpm_handle_t *handle, alpm_list_t *targets,
|
|||
} else {
|
||||
alpm_pkg_t *ancestorpkg = ancestor->data;
|
||||
alpm_pkg_t *childpkg = vertex->data;
|
||||
_alpm_log(handle, ALPM_LOG_WARNING, _("dependency cycle detected:\n"));
|
||||
_alpm_log(handle, ALPM_LOG_DEBUG, _("dependency cycle detected:\n"));
|
||||
if(reverse) {
|
||||
_alpm_log(handle, ALPM_LOG_WARNING,
|
||||
_alpm_log(handle, ALPM_LOG_DEBUG,
|
||||
_("%s will be removed after its %s dependency\n"),
|
||||
ancestorpkg->name, childpkg->name);
|
||||
} else {
|
||||
_alpm_log(handle, ALPM_LOG_WARNING,
|
||||
_alpm_log(handle, ALPM_LOG_DEBUG,
|
||||
_("%s will be installed before its %s dependency\n"),
|
||||
ancestorpkg->name, childpkg->name);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -73,16 +73,17 @@ static mode_t _getumask(void)
|
|||
return mask;
|
||||
}
|
||||
|
||||
static int finalize_download_file(const char *sandboxuser, const char *filename)
|
||||
static int finalize_download_file(const char *filename)
|
||||
{
|
||||
struct stat st;
|
||||
uid_t myuid = getuid();
|
||||
ASSERT(filename != NULL, return -1);
|
||||
ASSERT(stat(filename, &st) == 0, return -1);
|
||||
if(st.st_size == 0) {
|
||||
unlink(filename);
|
||||
return 1;
|
||||
}
|
||||
if(sandboxuser) {
|
||||
if(myuid == 0) {
|
||||
ASSERT(chown(filename, 0, 0) != -1, return -1);
|
||||
}
|
||||
ASSERT(chmod(filename, ~(_getumask()) & 0666) != -1, return -1);
|
||||
|
@ -697,9 +698,9 @@ cleanup:
|
|||
* only applies to FTP transfers. */
|
||||
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
|
||||
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, (char *)NULL);
|
||||
|
||||
if(payload->localf != NULL) {
|
||||
fclose(payload->localf);
|
||||
payload->localf = NULL;
|
||||
utimes_long(payload->tempfile_name, remote_time);
|
||||
}
|
||||
|
||||
|
@ -879,7 +880,6 @@ static int curl_download_internal(alpm_handle_t *handle,
|
|||
p = NULL;
|
||||
err = -1;
|
||||
}
|
||||
|
||||
while(true) {
|
||||
int msgs_left = 0;
|
||||
CURLMsg *msg = curl_multi_info_read(curlm, &msgs_left);
|
||||
|
@ -903,7 +903,6 @@ static int curl_download_internal(alpm_handle_t *handle,
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
int ret = err ? -1 : updated ? 0 : 1;
|
||||
_alpm_log(handle, ALPM_LOG_DEBUG, "curl_download_internal return code is %d\n", ret);
|
||||
alpm_list_free(payloads);
|
||||
|
@ -917,16 +916,15 @@ static int curl_download_internal(alpm_handle_t *handle,
|
|||
*/
|
||||
static int curl_download_internal_sandboxed(alpm_handle_t *handle,
|
||||
alpm_list_t *payloads /* struct dload_payload */,
|
||||
const char *localpath)
|
||||
const char *localpath,
|
||||
int *childsig)
|
||||
{
|
||||
int pid, err = 0, ret = -1, callbacks_fd[2];
|
||||
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;
|
||||
|
||||
sigemptyset(&sa_ign.sa_mask);
|
||||
sa_ign.sa_handler = SIG_IGN;
|
||||
sa_ign.sa_flags=0;
|
||||
|
||||
if(pipe(callbacks_fd) != 0) {
|
||||
return -1;
|
||||
|
@ -1024,8 +1022,12 @@ static int curl_download_internal_sandboxed(alpm_handle_t *handle,
|
|||
int wret;
|
||||
while((wret = waitpid(pid, &ret, 0)) == -1 && errno == EINTR);
|
||||
if(wret > 0) {
|
||||
if(WIFSIGNALED(ret)) {
|
||||
*childsig = WTERMSIG(ret);
|
||||
}
|
||||
if(!WIFEXITED(ret)) {
|
||||
/* the child did not terminate normally */
|
||||
handle->pm_errno = ALPM_ERR_RETRIEVE;
|
||||
ret = -1;
|
||||
}
|
||||
else {
|
||||
|
@ -1081,11 +1083,11 @@ static int payload_download_fetchcb(struct dload_payload *payload,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int move_file(const char* sandboxuser, const char *filepath, const char *directory)
|
||||
static int move_file(const char *filepath, const char *directory)
|
||||
{
|
||||
ASSERT(filepath != NULL, return -1);
|
||||
ASSERT(directory != NULL, return -1);
|
||||
int ret = finalize_download_file(sandboxuser, filepath);
|
||||
int ret = finalize_download_file(filepath);
|
||||
if(ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
|
@ -1104,33 +1106,45 @@ static int finalize_download_locations(alpm_list_t *payloads, const char *localp
|
|||
ASSERT(payloads != NULL, return -1);
|
||||
ASSERT(localpath != NULL, return -1);
|
||||
alpm_list_t *p;
|
||||
struct stat st;
|
||||
int returnvalue = 0;
|
||||
for(p = payloads; p; p = p->next) {
|
||||
struct dload_payload *payload = p->data;
|
||||
alpm_handle_t *handle = payload->handle;
|
||||
if(payload->tempfile_name) {
|
||||
move_file(handle->sandboxuser, payload->tempfile_name, localpath);
|
||||
const char *filename = NULL;
|
||||
|
||||
if(payload->destfile_name && stat(payload->destfile_name, &st) == 0) {
|
||||
filename = payload->destfile_name;
|
||||
} else if(stat(payload->tempfile_name, &st) == 0) {
|
||||
filename = payload->tempfile_name;
|
||||
}
|
||||
if(payload->destfile_name) {
|
||||
int ret = move_file(handle->sandboxuser, payload->destfile_name, localpath);
|
||||
|
||||
if(filename) {
|
||||
int ret = move_file(filename, localpath);
|
||||
|
||||
if(ret == -1) {
|
||||
/* ignore error if the file already existed - only signature file was downloaded */
|
||||
if(payload->mtime_existing_file == 0) {
|
||||
_alpm_log(handle, ALPM_LOG_ERROR, _("could not move %s into %s (%s)\n"),
|
||||
payload->destfile_name, localpath, strerror(errno));
|
||||
_alpm_log(payload->handle, ALPM_LOG_ERROR, _("could not move %s into %s (%s)\n"),
|
||||
filename, localpath, strerror(errno));
|
||||
returnvalue = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (payload->download_signature) {
|
||||
const char sig_suffix[] = ".sig";
|
||||
char *sig_filename = NULL;
|
||||
size_t sig_filename_len = strlen(payload->destfile_name) + sizeof(sig_suffix);
|
||||
MALLOC(sig_filename, sig_filename_len, continue);
|
||||
snprintf(sig_filename, sig_filename_len, "%s%s", payload->destfile_name, sig_suffix);
|
||||
move_file(handle->sandboxuser, sig_filename, localpath);
|
||||
FREE(sig_filename);
|
||||
if (payload->download_signature) {
|
||||
char *sig_filename;
|
||||
int ret;
|
||||
|
||||
filename = payload->destfile_name ? payload->destfile_name : payload->tempfile_name;
|
||||
sig_filename = _alpm_get_fullpath("", filename, ".sig");
|
||||
ASSERT(sig_filename, RET_ERR(payload->handle, ALPM_ERR_MEMORY, -1));
|
||||
ret = move_file(sig_filename, localpath);
|
||||
free(sig_filename);
|
||||
|
||||
if(ret == -1) {
|
||||
sig_filename = _alpm_get_fullpath("", filename, ".sig.part");
|
||||
ASSERT(sig_filename, RET_ERR(payload->handle, ALPM_ERR_MEMORY, -1));
|
||||
move_file(sig_filename, localpath);
|
||||
free(sig_filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1189,12 +1203,14 @@ int _alpm_download(alpm_handle_t *handle,
|
|||
const char *temporary_localpath)
|
||||
{
|
||||
int ret;
|
||||
int finalize_ret;
|
||||
int childsig = 0;
|
||||
prepare_resumable_downloads(payloads, localpath, handle->sandboxuser);
|
||||
|
||||
if(handle->fetchcb == NULL) {
|
||||
#ifdef HAVE_LIBCURL
|
||||
if(handle->sandboxuser) {
|
||||
ret = curl_download_internal_sandboxed(handle, payloads, temporary_localpath);
|
||||
ret = curl_download_internal_sandboxed(handle, payloads, temporary_localpath, &childsig);
|
||||
} else {
|
||||
ret = curl_download_internal(handle, payloads);
|
||||
}
|
||||
|
@ -1269,13 +1285,21 @@ download_signature:
|
|||
ret = updated ? 0 : 1;
|
||||
}
|
||||
|
||||
if (finalize_download_locations(payloads, localpath) != 0 && ret == 0) {
|
||||
finalize_ret = finalize_download_locations(payloads, localpath);
|
||||
_alpm_remove_temporary_download_dir(temporary_localpath);
|
||||
|
||||
/* propagate after finalizing so .part files get copied over */
|
||||
if(childsig != 0) {
|
||||
kill(getpid(), childsig);
|
||||
}
|
||||
if(finalize_ret != 0 && ret == 0) {
|
||||
RET_ERR(handle, ALPM_ERR_RETRIEVE, -1);
|
||||
}
|
||||
|
||||
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, '/');
|
||||
|
||||
|
@ -1288,7 +1312,7 @@ static char *filecache_find_url(alpm_handle_t *handle, const char *url)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
return _alpm_filecache_find(handle, filebase);
|
||||
return filebase;
|
||||
}
|
||||
|
||||
int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
|
||||
|
@ -1310,9 +1334,26 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
|
|||
|
||||
for(i = urls; i; i = i->next) {
|
||||
char *url = i->data;
|
||||
char *filepath = NULL;
|
||||
const char *urlbase = url_basename(url);
|
||||
|
||||
if(urlbase) {
|
||||
/* attempt to find the file in our pkgcache */
|
||||
filepath = _alpm_filecache_find(handle, urlbase);
|
||||
|
||||
if(filepath && (handle->siglevel & ALPM_SIG_PACKAGE)) {
|
||||
char *sig_filename = _alpm_get_fullpath("", urlbase, ".sig");
|
||||
|
||||
/* if there's no .sig file then forget about the pkg file and go for download */
|
||||
if(!_alpm_filecache_exists(handle, sig_filename)) {
|
||||
free(filepath);
|
||||
filepath = NULL;
|
||||
}
|
||||
|
||||
free(sig_filename);
|
||||
}
|
||||
}
|
||||
|
||||
/* attempt to find the file in our pkgcache */
|
||||
char *filepath = filecache_find_url(handle, url);
|
||||
if(filepath) {
|
||||
/* the file is locally cached so add it to the output right away */
|
||||
alpm_list_append(fetched, filepath);
|
||||
|
@ -1361,12 +1402,12 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
|
|||
if(payloads) {
|
||||
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
|
||||
event.pkg_retrieve.num = alpm_list_count(payloads);
|
||||
event.pkg_retrieve.total_size = 0;
|
||||
EVENT(handle, &event);
|
||||
if(_alpm_download(handle, payloads, cachedir, temporary_cachedir) == -1) {
|
||||
_alpm_log(handle, ALPM_LOG_WARNING, _("failed to retrieve some files\n"));
|
||||
event.type = ALPM_EVENT_PKG_RETRIEVE_FAILED;
|
||||
EVENT(handle, &event);
|
||||
|
||||
GOTO_ERR(handle, ALPM_ERR_RETRIEVE, err);
|
||||
} else {
|
||||
event.type = ALPM_EVENT_PKG_RETRIEVE_DONE;
|
||||
|
@ -1381,7 +1422,8 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
|
|||
const char *filename = mbasename(payload->destfile_name);
|
||||
filepath = _alpm_filecache_find(handle, filename);
|
||||
} else {
|
||||
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) {
|
||||
alpm_list_append(fetched, filepath);
|
||||
|
@ -1395,13 +1437,11 @@ int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
|
|||
FREELIST(payloads);
|
||||
}
|
||||
|
||||
_alpm_remove_temporary_download_dir(temporary_cachedir);
|
||||
FREE(temporary_cachedir);
|
||||
return 0;
|
||||
|
||||
err:
|
||||
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
|
||||
_alpm_remove_temporary_download_dir(temporary_cachedir);
|
||||
FREE(temporary_cachedir);
|
||||
FREELIST(payloads);
|
||||
FREELIST(*fetched);
|
||||
|
@ -1413,6 +1453,11 @@ void _alpm_dload_payload_reset(struct dload_payload *payload)
|
|||
{
|
||||
ASSERT(payload, return);
|
||||
|
||||
if(payload->localf != NULL) {
|
||||
fclose(payload->localf);
|
||||
payload->localf = NULL;
|
||||
}
|
||||
|
||||
FREE(payload->remote_name);
|
||||
FREE(payload->tempfile_name);
|
||||
FREE(payload->destfile_name);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@ -137,7 +137,7 @@ const char SYMEXPORT *alpm_strerror(alpm_errno_t err)
|
|||
return _("conflicting dependencies");
|
||||
case ALPM_ERR_FILE_CONFLICTS:
|
||||
return _("conflicting files");
|
||||
/* Miscellaenous */
|
||||
/* Miscellaneous */
|
||||
case ALPM_ERR_RETRIEVE:
|
||||
return _("failed to retrieve some files");
|
||||
case ALPM_ERR_INVALID_REGEX:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* 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
|
||||
*
|
||||
* 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
|
||||
* 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
|
||||
*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* 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,
|
||||
unsigned short disable_dl_timeout)
|
||||
{
|
||||
|
@ -952,6 +958,12 @@ int SYMEXPORT alpm_option_set_parallel_downloads(alpm_handle_t *handle,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int SYMEXPORT alpm_option_get_disable_sandbox(alpm_handle_t *handle)
|
||||
{
|
||||
CHECK_HANDLE(handle, return -1);
|
||||
return handle->disable_sandbox;
|
||||
}
|
||||
|
||||
int SYMEXPORT alpm_option_set_disable_sandbox(alpm_handle_t *handle,
|
||||
unsigned short disable_sandbox)
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005, 2006 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -235,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);
|
||||
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);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* 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.allowed_access = _LANDLOCK_ACCESS_FS_READ | _LANDLOCK_ACCESS_FS_WRITE | _LANDLOCK_ACCESS_FS_TRUNCATE;
|
||||
|
||||
/* make sure allowed_access is a subset of handled_access_fs, which may change for older landlock ABI */
|
||||
path_beneath.allowed_access &= ruleset_attr.handled_access_fs;
|
||||
|
||||
if(landlock_add_rule(ruleset_fd, LANDLOCK_RULE_PATH_BENEATH, &path_beneath, 0) == 0) {
|
||||
if(landlock_restrict_self(ruleset_fd, 0)) {
|
||||
_alpm_log(handle, ALPM_LOG_ERROR, _("restricting filesystem access failed because the landlock ruleset could not be applied!\n"));
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* 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->length = key->subkeys->length;
|
||||
pgpkey->revoked = key->subkeys->revoked;
|
||||
/* Initialize with '?', this is overwritten unless public key
|
||||
* algorithm is unknown. */
|
||||
pgpkey->pubkey_algo = '?';
|
||||
|
||||
switch(key->subkeys->pubkey_algo) {
|
||||
case GPGME_PK_RSA:
|
||||
case GPGME_PK_RSA_E:
|
||||
case GPGME_PK_RSA_S:
|
||||
pgpkey->pubkey_algo = 'R';
|
||||
break;
|
||||
|
||||
case GPGME_PK_DSA:
|
||||
pgpkey->pubkey_algo = 'D';
|
||||
break;
|
||||
|
||||
case GPGME_PK_ELG_E:
|
||||
case GPGME_PK_ELG:
|
||||
case GPGME_PK_ECDSA:
|
||||
case GPGME_PK_ECDH:
|
||||
/* value added in gpgme 1.5.0 */
|
||||
#if GPGME_VERSION_NUMBER >= 0x010500
|
||||
case GPGME_PK_ECC:
|
||||
#endif
|
||||
/* value added in gpgme 1.7.0 */
|
||||
#if GPGME_VERSION_NUMBER >= 0x010700
|
||||
case GPGME_PK_EDDSA:
|
||||
#endif
|
||||
pgpkey->pubkey_algo = 'E';
|
||||
break;
|
||||
}
|
||||
|
||||
ret = 1;
|
||||
|
||||
/* We do not want to add a default switch case above to receive
|
||||
* compiler error on new public key algorithm in gpgme. So check
|
||||
* here if we have a valid pubkey_algo. */
|
||||
if (pgpkey->pubkey_algo == '?') {
|
||||
_alpm_log(handle, ALPM_LOG_DEBUG,
|
||||
"unknown public key algorithm: %d\n", key->subkeys->pubkey_algo);
|
||||
}
|
||||
|
||||
gpg_error:
|
||||
if(ret != 1) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* 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.pkg_retrieve.total_size = 0;
|
||||
event.pkg_retrieve.num = 0;
|
||||
|
||||
/* sum up the number of packages to download and its total size */
|
||||
for(i = files; i; i = i->next) {
|
||||
|
@ -880,7 +882,6 @@ finish:
|
|||
pkg->infolevel &= ~INFRQ_DSIZE;
|
||||
pkg->download_size = 0;
|
||||
}
|
||||
_alpm_remove_temporary_download_dir(temporary_cachedir);
|
||||
FREE(temporary_cachedir);
|
||||
|
||||
return ret;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
@ -203,7 +203,7 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
|
|||
RET_ERR(handle, ALPM_ERR_TRANS_HOOK_FAILED, -1);
|
||||
}
|
||||
|
||||
trans->state = STATE_COMMITING;
|
||||
trans->state = STATE_COMMITTING;
|
||||
|
||||
alpm_logaction(handle, ALPM_CALLER_PREFIX, "transaction started\n");
|
||||
event.type = ALPM_EVENT_TRANSACTION_START;
|
||||
|
@ -239,7 +239,7 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
|
|||
}
|
||||
}
|
||||
|
||||
trans->state = STATE_COMMITED;
|
||||
trans->state = STATE_COMMITTED;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -253,7 +253,7 @@ int SYMEXPORT alpm_trans_interrupt(alpm_handle_t *handle)
|
|||
|
||||
trans = handle->trans;
|
||||
ASSERT(trans != NULL, RET_ERR_ASYNC_SAFE(handle, ALPM_ERR_TRANS_NULL, -1));
|
||||
ASSERT(trans->state == STATE_COMMITING || trans->state == STATE_INTERRUPTED,
|
||||
ASSERT(trans->state == STATE_COMMITTING || trans->state == STATE_INTERRUPTED,
|
||||
RET_ERR_ASYNC_SAFE(handle, ALPM_ERR_TRANS_TYPE, -1));
|
||||
|
||||
trans->state = STATE_INTERRUPTED;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
@ -30,8 +30,8 @@ typedef enum _alpm_transstate_t {
|
|||
STATE_INITIALIZED,
|
||||
STATE_PREPARED,
|
||||
STATE_DOWNLOADING,
|
||||
STATE_COMMITING,
|
||||
STATE_COMMITED,
|
||||
STATE_COMMITTING,
|
||||
STATE_COMMITTED,
|
||||
STATE_INTERRUPTED
|
||||
} alpm_transstate_t;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
|
@ -590,9 +590,7 @@ void _alpm_reset_signals(void)
|
|||
#endif
|
||||
0
|
||||
};
|
||||
struct sigaction def;
|
||||
def.sa_flags = 0;
|
||||
def.sa_handler = SIG_DFL;
|
||||
struct sigaction def = { .sa_handler = SIG_DFL };
|
||||
sigemptyset(&def.sa_mask);
|
||||
for(i = signals; *i; i++) {
|
||||
sigaction(*i, &def, NULL);
|
||||
|
@ -969,8 +967,7 @@ char *_alpm_temporary_download_dir_setup(const char *dir, const char *user)
|
|||
char *newdir = NULL;
|
||||
MALLOC(newdir, newdirlen, return NULL);
|
||||
snprintf(newdir, newdirlen - 1, "%s%s", dir, template);
|
||||
newdir = mkdtemp(newdir);
|
||||
if(newdir == NULL) {
|
||||
if(mkdtemp(newdir) == NULL) {
|
||||
free(newdir);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -433,6 +433,8 @@ configure_file(
|
|||
configuration : substs,
|
||||
install_dir : join_paths(SYSCONFDIR, 'makepkg.conf.d/'))
|
||||
|
||||
install_emptydir(join_paths(SYSCONFDIR, 'makepkg.d/'))
|
||||
|
||||
configure_file(
|
||||
input : 'etc/pacman.conf.in',
|
||||
output : 'pacman.conf',
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# NOTE: Please fill out the license field for your package! If it is 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.
|
||||
|
||||
# Maintainer: Your Name <youremail@domain.com>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -51,8 +51,8 @@ library_depends() {
|
|||
|
||||
unset prefix
|
||||
for libdir in ${LIB_DIRS[@]}; do
|
||||
if [[ ${libdir/*:} == ${libpath} ]]; then
|
||||
prefix=${libdir/:*}
|
||||
if [[ ${libdir#*:} == ${libpath} ]]; then
|
||||
prefix=${libdir%%:*}
|
||||
fi
|
||||
done
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -28,8 +28,8 @@ autodep_functions+=('library_provides')
|
|||
library_provides() {
|
||||
if check_option "autodeps" "y"; then
|
||||
for lib in ${LIB_DIRS[@]}; do
|
||||
dir=${lib/*:}
|
||||
prefix=${lib/:*}
|
||||
dir=${lib#*:}
|
||||
prefix=${lib%%:*}
|
||||
|
||||
if [[ ! -d "$pkgdir/$dir" ]]; then
|
||||
continue;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# buildenv.sh - functions for altering the build environment before
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -44,8 +44,9 @@ buildenv_ccache() {
|
|||
buildenv_distcc() {
|
||||
if check_buildoption "distcc" "y"; then
|
||||
if (( using_ccache )); then
|
||||
if [[ " $CCACHE_PREFIX " != *" distcc "* ]]; then
|
||||
export CCACHE_PREFIX="${CCACHE_PREFIX:+$CCACHE_PREFIX }distcc"
|
||||
local distcc=$(type -p distcc)
|
||||
if [[ " $CCACHE_PREFIX " != *" ${distcc} "* ]]; then
|
||||
export CCACHE_PREFIX="${CCACHE_PREFIX:+$CCACHE_PREFIX }${distcc}"
|
||||
fi
|
||||
export CCACHE_BASEDIR="$srcdir"
|
||||
elif [[ -d /usr/lib/distcc/bin ]]; then
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# debugflags.sh - Specify flags for building a package with debugging
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# 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
|
||||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# verify_checksum.sh - functions for checking 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# verify_signature.sh - functions for checking PGP signatures
|
||||
#
|
||||
# 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
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# lint_config.sh - functions for checking for makepkg.conf errors
|
||||
#
|
||||
# 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
|
||||
# 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