Commit Graph

1558 Commits

Author SHA1 Message Date
Duncan Overbruck
c6aaafb123
lib/initend.c: allow XBPS{,_TARGET}_ARCH variables to overwrite config 2021-02-04 23:27:11 +01:00
gt7-void
167289d590
Avoid file descriptor leakes (fix #303)
HTTP connections are cached for performance, but they end up being
leaked when running configure scripts. To avoid this, close the
connection cache after all downloads are finished.

Closes: #326 [via git-merge-pr]
2021-02-04 23:16:27 +01:00
Érico Rolim
a95f3d56c8
lib/Makefile: fix linking for libxbps.so.
Both CFLAGS and LDFLAGS need to be passed during linkage as CFLAGS may
contain things that influence linkage (e.g. ssp_nonshared may be
necessary to link when using strong stack protector).

Pointed out by q66.

Closes: #330 [via git-merge-pr]
2021-02-04 23:15:11 +01:00
Érico Rolim
9c5443d134
fetch/http: add missing case when treating status code.
The HTTP_REDIRECT() macro already included this case, but the
switch-case with the return value of http_get_reply(conn) didn't. This
made it so that a server returning HTTP_TEMP_REDIRECT (307) would
generate a failure, unless libfetch was used in verbose mode, in which
case the headers would be parsed (in order to report errors), then the
'Location' header would be found and a new connection would be made.

Fixes #348
2021-02-04 23:14:34 +01:00
Érico Rolim
456f07c218
proplib_wrapper: remove return from void functions.
Spotted while trying to build XBPS with cproc.
2021-02-04 23:09:35 +01:00
Érico Rolim
dc8c8c3868
lib/Makefile: guard -fvisibility=hidden flag. 2021-02-04 23:09:35 +01:00
Érico Rolim
0b23de1bec
__UNCONST: use uintptr_t instead of unsigned long.
The width of unsigned long matching the width of a pointer isn't
guaranteed by any standard, though it is a requirement of the Linux
syscall API. Using uintptr_t directly is always correct.
2021-02-04 23:04:59 +01:00
Érico Rolim
47df729bcc
tree-wide: remove unnecessary __UNCONST usage. 2021-02-04 23:02:39 +01:00
Duncan Overbruck
51b39002e5
Revert "Move all external code to lib/external."
This reverts commit 9effec0c4e.
2021-02-04 22:42:57 +01:00
Duncan Overbruck
93410bee7f
Revert "xbps_init: autodetect musl libc variant at compile time."
This reverts commit 7f75fd840a.
2021-02-04 22:41:21 +01:00
Duncan Overbruck
44cd938115
Revert "Use shared LICENSE file for all xbps code."
This reverts commit be7d8cfaf1.

This commit missed some previous copyrights mentioned,
in general I think its better to have this per-file to
follow who wrote what and when.
2020-04-29 14:12:10 +02:00
Juan RP
9effec0c4e
Move all external code to lib/external. 2020-04-24 12:32:09 +02:00
Juan RP
be7d8cfaf1
Use shared LICENSE file for all xbps code. 2020-04-24 11:44:19 +02:00
Juan RP
530e79c7ee
Fix warnings detected by LTO. 2020-04-23 08:32:54 +02:00
Juan RP
7d8247ae56
Multiple changes to pkgs on hold mode.
- Added transaction stats for pkgs on hold.

- Always add packages on hold to the transaction dictionary,
  its type will be set to XBPS_TRANS_HOLD.

- Changed xbps_transaction_update_pkg() to have a new "force"
  bool argument to force an update with a pkg on hold.

- As discussed in #274 with @Duncaen the only way to update a
  pkg on hold is by using `-f`, i.e `xbps-install -f foo`.

Closes #265
Closes #274
2020-04-23 06:03:56 +02:00
Juan RP
6b6b394686
lib: keep pkgdb props on updates in the proper place.
Improve f906f5a83d
2020-04-22 12:20:38 +02:00
Juan RP
f906f5a83d xbps_register_pkg: keep stored props in pkgdb on updates.
I noticed that while updating a pkg that is on hold
or in repolock mode, does not keep those properties.

Always set those props in the new pkg dictionary to respect
this behaviour. If there's a pkg on hold and you update it,
you want to keep it in this state unless you tell it to change.

Added new test case to verify.
2020-04-22 12:00:26 +02:00
Juan RP
d5251a9c23
xbps_init: fix typo in debug output.
For #264
2020-04-20 20:20:29 +02:00
Juan RP
e155ba6d20
lib/package_alternatives.c: revert back to orig order.
my mistake, I somehow confused it.
2020-04-20 10:32:14 +02:00
Juan RP
35ae128826
lib/fetch: fix CID 284966 in a different way.
Hopefully this fixes it for real.
2020-04-20 10:31:13 +02:00
Juan RP
8663c3bd75
lib/fetch/common.c: fix CID 284959 (NULL returns).
Also fix previous CID.
2020-04-19 11:53:28 +02:00
Juan RP
359721baa6
lib/fetch/common.c: fix CID 284966 (Resource leak). 2020-04-19 11:43:54 +02:00
Juan RP
7b623783c8
lib/package_alternatives.c: fix CID 284970 (Resource leak).
Also fix calloc args order.
2020-04-19 11:38:09 +02:00
Juan RP
c5904cc6ef
lib/conf.c: fix CID 284952 (Identical branches). 2020-04-19 11:22:17 +02:00
Juan RP
96acc6d8ef
lib/portableproplib/prop_object.c: fix CID 284969 (Double free). 2020-04-19 11:17:39 +02:00
Juan RP
83d87ce05b
lib/transaction_files.c: fix CID 284958 (Resource leak). 2020-04-19 11:17:02 +02:00
Juan RP
debfcf1273
Use xbps_repo_release() where applicable. 2020-04-19 11:09:05 +02:00
Juan RP
4990a2dd91 lib/Makefile: bump LIBXBPS_MICRO. 2020-04-14 20:27:54 +02:00
Juan RP
70efe5c63a repo: introduce xbps_repo_release(), misc changes.
- xbps_repo_release(): new function to release all resources
  associated with a repository object.

- xbps_repo_close(): this now just closes the file descriptor
  associated with the archive and associated resources.

- repo_open_local: after getting the repository dictionaries,
  use xbps_repo_close() to release archive resources.

Bump XBPS_API_VERSION.
2020-04-14 20:27:54 +02:00
Juan RP
bd707acfee
repo: fix a double free with invalid repodata.
Fixes #248

Added new test case to verify.
2020-03-31 18:36:04 +02:00
Duncan Overbruck
044f75450b
lib/transaction_check_revdeps.c: fix previous fix
Don't set transaction type from inside the revdep check,
if the package is being removed then there is not point
in continueing checking if its breaks.

Referencing #245
2020-03-05 00:40:47 +01:00
Duncan Overbruck
aed9402d62
lib/transaction_check_revdeps.c: fix regression in revdeps check
this is probably the same as reported in #245.

Its again not resetting/initializing a variable in a loop,
falling back to the previous set value.
2020-03-04 23:51:06 +01:00
Piotr Wójcik
5737d9a941 xbps-fetch: TIMEOUT_CONNECTION to customize time waiting for response 2020-03-03 08:15:00 +01:00
Juan RP
24bbfffba1
xbps_transaction_prepare: fix stats for removals. 2020-02-25 08:43:52 +01:00
Juan RP
77c72f9c2c
lib/plist_find.c: fix false positive detecting vpkgs.
If target pkg was matched via xbps_pkg_version(), it was
incorrectly accessing the first vpkg stored.
2020-02-24 10:22:52 +01:00
Juan RP
cc601e1e91
xbps_repo_get_{virtual,}pkg: add debug on match. 2020-02-24 10:22:15 +01:00
Duncan Overbruck
c3830670f8 lib/transaction_files.c: cleanup memory 2020-02-23 22:18:34 +01:00
Duncan Overbruck
64f96ec940 transaction_files.c: port to uthash 2020-02-23 22:18:34 +01:00
Juan RP
657a717855 xbps_get_pkg_fulldeptree: switch to uthash.
There are still two users that can benefit from
uthash: transaction_files.c and xbps-fbulk.

cc @duncaen
2020-02-23 22:18:34 +01:00
Juan RP
c8d676f10e xbps_find_pkg_orphans: fix for #234
Make sure "automatic" bool is initialized to false before
checking its value. This way if xbps_dictionary_get_bool()
fails, "automatic" will be set to false.

Closes #234
2020-02-22 00:00:22 +01:00
Juan RP
f9ccd9b627 xbps_transaction_prepare: set transd stats correctly.
- if pkg trans type is UPDATE or REMOVE, don't set
  download stats, we don't need them.
- Simplify code.
2020-02-21 10:51:20 +01:00
Juan RP
06c9891ae3 xbps_transaction_*: multiple performance improvements (v2).
This commit implements multiple performance improvements
to the transaction code:

- Don't process xbps_pkg_name() N times each time we access
  its package dictionary (via pkgdb or rpool), just do it once
  at xbps_pkgdb_init() time. At pkgdb init time, it just creates
  a property in pkgdb, "pkgname". At rpool time, each time a
  package is accessed, the "pkgname" string property is added.

- The package transaction dictionary contains the "transaction"
  object to know what's the pkg type. This has been changed to an
  uint8, this simplifies the logic and it's faster than checking
  a string object. See xbps_trans_type_t and xbps_transaction_pkg_type().

- Fixed the issue that was marked with XXX in transaction shlibs
  checking code. This has been fixed and improved and resources are
  now just freed as expected.

- Simplified random code all over the place, avoiding unnecessary
  allocations or operations.

- Rename some transaction files to have a better description.

This is my first rototill to the code in 2020.
2020-02-21 09:37:32 +01:00
Juan RP
4d6d328c62
xbps_transaction_prepare: fix for XBPS_FLAG_DOWNLOAD_ONLY.
We don't really care if all pkgs are on hold, so modify
logic to avoid this part and exit early.
2020-02-18 09:07:03 +01:00
Juan RP
1b9dc3cc4d
xbps_transaction_prepare: set "total-download-size" correctly.
- It was set only with XBPS_FLAG_DOWNLOAD_ONLY.
- Simplify the logic.

In response to #187 and #230
2020-02-18 08:34:41 +01:00
Duncan Overbruck
3ad575178e lib/initend.c: use new xbps_path_* functions 2020-02-14 19:20:54 +01:00
Duncan Overbruck
0f61a1a5a2 lib/util_path.c: add some util functions to work with paths 2020-02-14 19:20:54 +01:00
Juan RP
fba65ad9da xbps_transaction_store: ensure no multiple versions.
This change ensures that no multiple versions of the same pkg
are added to the transaction; if a new version of the same
package is being added as a dependency, compare stored
and current and use the greatest one.

This fixes the recent issue seen in the aarch64 builders, where
two versions of the same package were added to the transaction.

Added a new test case.
2020-02-14 08:41:35 +01:00
Duncan Overbruck
fbba38b006 lib/util_hash.c: add conditions to avoid misuse without asserts 2020-02-10 15:03:54 +01:00
Duncan Overbruck
d99aae586a lib/download.c: fix digestlen assert and add if condition to avoid misuse 2020-02-10 15:03:54 +01:00
Duncan Overbruck
2ef79bcc09
lib/util_hash.c: change asserts to allow at least X buffer length 2020-02-10 13:32:17 +01:00