diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2013-11-26 14:49:04 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2013-11-26 14:49:04 +0000 |
commit | 579d16acec9f0941638f345e1853e63ab6a1749b (patch) | |
tree | bfa6ddecc2ed8e93414385e9a37d888c5bc1c0b5 /ports-mgmt | |
parent | Release final pkg 1.2 version: (diff) |
Welcome pkg 1.2 final
Changelog:
- Improved build system
- Allow to hook plugins, before closing the local db if it was opened in RW mode
- Allow ARCH to be printed by pkg info
- New pkg bootstrap subcommand that is the counter part of the pkg(7) bootstrap subcommand
- Use port specified in the SRV entries to connect to a given mirror
- Properly support srv priority/weigh when ordering mirrors
- Lots of spelling/grammar fixes
- Broken incremental pkg repo support was removed.
- ABI is now checked again using globs:
* a 'noarch' package should just specify: ARCH: 'freebsd:*'
* a package working on both i386 and amd64: ARCH: 'freebsd:9:x86:*'
- new pkg config subcommand to allow direct query of options
- options can now have a description
- pkg repo can now take new arguments:
pkg repo [path] [rsa_key|'signing_command: <command>']
This allow calling external command to perform the signing and
pass the checksum to be signed in the command stdin.
- in case pkg info is querying a file or is a single direct match
query then default on -f
- pkg info -q is now equivalent of pkg info -qa
- expat is now always bundled (for vuxml)
- vuxml is now the default source for pkg audit
- Accept empty/comment only configuration files
- Print a pkg name only once - even if multiple vulns were found - when using -q
in pkg audit
- pkg info now default on glob matching
- Support for pkg+foo url scheme where foo can be (http, https, ftp).
- pkg add is now able to read the packages from a pipe or a non-regular
file '-' is an alias for stdin, this also works from pipes, fifos,
unix domain sockets etc.
- New 'fingerprint' kind of signature:
if a repository is declared using the fingerprint type of
signature, a fingerprint directory should also be provided.
Inside that fingerprint directory should be 2 directories:
trusted and revoked. Those directories will contains files (in
yaml/ucl format) containing the fingerprint of the trusted
certificated and the revoked ones:
--- begins --
function: sha256
fingerprint: an_hex_representation_of_the_fingerprint
--- ends ---
All unknown attribute will be silently ignored to allow extending
in the future.
It also support multiple signatures inside the catalog. the
catalog should provide the signature in the following form:
name.sig
name.cert
- packagesite in pkg.conf is deprecated in favour using dedicated
repository configuration files
- REPO_DIR is now a list instead of a simple string
- New git like aliases to allow creating custom commands
- Allow using '?' operator in pkg query expressions
- Fix ssh:// support
- New PKG_SSH_ARGS to allow passing custom arguments to ssh command
used for the ssh:// protocol
- Do not generate catalogs in pkg 1.0 format anymore.
- YAML is replaced by UCL format:
Both formats are really simular. pkg(8) will falls back on parsing YAML
when the UCL parser fail. And will emit a warning to the
user showing a syntax that is compatible with both YAML and UCL.
More informations on UCL: https://github.com/vstakhov/libucl
- Dependencies on library is now automatic via pkg register and pkg
create
- Auto upgrade of pkg(8) now restart the upgrade process automatically
- Lots of bug fixes discovered by Coverity Scan
- New debug level traces
- Bug fixes in zsh completion
- rquery can now take a -I argument to output index like lines (needed for
bsdconfig)
- Skip self upgrade with -F is passed
- Autodetect if libelf should be used bundled
- Lots of bug fixes
Thanks a lot to all people allowed this release to happen, may that be from providing
code, ideas, submitting bugs, documenting or just supporting.
Notes
Notes:
svn path=/head/; revision=334937
Diffstat (limited to 'ports-mgmt')
20 files changed, 15 insertions, 569 deletions
diff --git a/ports-mgmt/pkg/Makefile b/ports-mgmt/pkg/Makefile index febd8db768fc..3858d07d9464 100644 --- a/ports-mgmt/pkg/Makefile +++ b/ports-mgmt/pkg/Makefile @@ -1,8 +1,7 @@ # $FreeBSD$ PORTNAME= pkg -DISTVERSION= 1.1.4 -PORTREVISION= 10 +DISTVERSION= 1.2 CATEGORIES= ports-mgmt MASTER_SITES= http://files.etoilebsd.net/pkg/ \ http://mirror.shatow.net/freebsd/${PORTNAME}/ \ @@ -77,7 +76,7 @@ pre-everything:: PKG_DEPENDS= .undef INSTALLS_DEPENDS .if !exists(${LOCALBASE}/sbin/pkg) -PKG_BIN= ${WRKSRC}/pkg-static/pkg-static +PKG_BIN= ${WRKSRC}/pkg/pkg-static .endif .endif diff --git a/ports-mgmt/pkg/distinfo b/ports-mgmt/pkg/distinfo index ea3362ab64ab..be8270884a97 100644 --- a/ports-mgmt/pkg/distinfo +++ b/ports-mgmt/pkg/distinfo @@ -1,2 +1,2 @@ -SHA256 (pkg-1.1.4.tar.xz) = d84c9052f18c9d64cb369b9f3e8c1542f79f1152032169b1d28fbc2308c2dcbd -SIZE (pkg-1.1.4.tar.xz) = 1554804 +SHA256 (pkg-1.2.tar.xz) = 1e353780a9f78ab4b962108c8fa245406823467eb81e762cb682c6fb72c60a38 +SIZE (pkg-1.2.tar.xz) = 1802740 diff --git a/ports-mgmt/pkg/files/patch-external__Makefile b/ports-mgmt/pkg/files/patch-external__Makefile deleted file mode 100644 index b7c61154374a..000000000000 --- a/ports-mgmt/pkg/files/patch-external__Makefile +++ /dev/null @@ -1,11 +0,0 @@ ---- ./external/Makefile.orig 2013-07-06 05:48:19.000000000 -0500 -+++ ./external/Makefile 2013-10-12 07:25:25.353758158 -0500 -@@ -1,8 +1,6 @@ - SUBDIR= sqlite - --.if !exists(/usr/include/bsdyml.h) - SUBDIR+= libyaml --.endif - - .if defined(WITH_BUNDLED_LIBELF) - SUBDIR+= libelf diff --git a/ports-mgmt/pkg/files/patch-libpkg__Makefile b/ports-mgmt/pkg/files/patch-libpkg__Makefile deleted file mode 100644 index f72e4f7fadc1..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__Makefile +++ /dev/null @@ -1,15 +0,0 @@ ---- ./libpkg/Makefile.orig 2013-07-06 05:48:19.000000000 -0500 -+++ ./libpkg/Makefile 2013-10-12 07:25:25.353758158 -0500 -@@ -82,12 +82,8 @@ - -I${.CURDIR}/../external/sqlite \ - -I${.CURDIR}/../external/uthash - --.if !exists(/usr/include/bsdyml.h) - CFLAGS+= -DBUNDLED_YAML -I ${.CURDIR}/../external/libyaml/include - LDADD+= -L${.OBJDIR}/../external/libyaml -lyaml --.else --LDADD+= -lbsdyml --.endif - - .if defined(WITH_BUNDLED_LIBELF) - CFLAGS+= -I${.CURDIR}/../external/libelf \ diff --git a/ports-mgmt/pkg/files/patch-libpkg__dns_utils.c b/ports-mgmt/pkg/files/patch-libpkg__dns_utils.c deleted file mode 100644 index 05381ce09625..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__dns_utils.c +++ /dev/null @@ -1,108 +0,0 @@ ---- ./libpkg/dns_utils.c.orig 2013-07-06 05:48:19.000000000 -0500 -+++ ./libpkg/dns_utils.c 2013-11-19 11:13:45.349130754 -0600 -@@ -40,6 +40,65 @@ - unsigned char buf[1024]; - } query_t; - -+static int -+srv_priority_cmp(const void *a, const void *b) -+{ -+ const struct dns_srvinfo *da, *db; -+ -+ da = *(struct dns_srvinfo * const *)a; -+ db = *(struct dns_srvinfo * const *)b; -+ -+ return ((da->priority > db->priority) - (da->priority < db->priority)); -+} -+ -+static int -+srv_final_cmp(const void *a, const void *b) -+{ -+ const struct dns_srvinfo *da, *db; -+ int res; -+ -+ da = *(struct dns_srvinfo * const *)a; -+ db = *(struct dns_srvinfo * const *)b; -+ -+ res = ((da->priority > db->priority) - (da->priority < db->priority)); -+ if (res == 0) -+ res = ((db->finalweight > da->finalweight) - (db->finalweight < da->finalweight)); -+ -+ return (res); -+} -+ -+static void -+compute_weight(struct dns_srvinfo **d, int first, int last) -+{ -+ int i, j; -+ int totalweight = 0; -+ int *chosen; -+ -+ for (i = 0; i <= last; i++) -+ totalweight += d[i]->weight; -+ -+ if (totalweight == 0) -+ return; -+ -+ chosen = malloc(sizeof(int) * (last - first + 1)); -+ -+ for (i = 0; i <= last; i++) { -+ for (;;) { -+ chosen[i] = random() % (d[i]->weight * 100 / totalweight); -+ for (j = 0; j < i; j++) { -+ if (chosen[i] == chosen[j]) -+ break; -+ } -+ if (j == i) { -+ d[i]->finalweight = chosen[i]; -+ break; -+ } -+ } -+ } -+ -+ free(chosen); -+} -+ - struct dns_srvinfo * - dns_getsrvinfo(const char *zone) - { -@@ -49,6 +108,7 @@ - struct dns_srvinfo **res, *first; - unsigned char *end, *p; - unsigned int type, class, ttl, priority, weight, port; -+ int f, l; - - if ((len = res_query(zone, C_IN, T_SRV, q.buf, sizeof(q.buf))) == -1 || - len < (int)sizeof(HEADER)) -@@ -120,12 +180,31 @@ - res[n]->weight = weight; - res[n]->port = port; - res[n]->next = NULL; -+ res[n]->finalweight = 0; - strlcpy(res[n]->host, host, MAXHOSTNAMELEN); - - p += len; - n++; - } - -+ /* order by priority */ -+ qsort(res, n, sizeof(res[0]), srv_priority_cmp); -+ -+ priority = 0; -+ f = 0; -+ l = 0; -+ for (i = 0; i < n; i++) { -+ if (res[i]->priority != priority) { -+ if (f != l) -+ compute_weight(res, f, l); -+ f = i; -+ priority = res[i]->priority; -+ } -+ l = i; -+ } -+ -+ qsort(res, n, sizeof(res[0]), srv_final_cmp); -+ - for (i = 0; i < n - 1; i++) - res[i]->next = res[i + 1]; - diff --git a/ports-mgmt/pkg/files/patch-libpkg__fetch.c b/ports-mgmt/pkg/files/patch-libpkg__fetch.c deleted file mode 100644 index 866a21b82ef2..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__fetch.c +++ /dev/null @@ -1,88 +0,0 @@ ---- ./libpkg/fetch.c.orig 2013-07-06 05:48:19.000000000 -0500 -+++ ./libpkg/fetch.c 2013-11-19 11:13:45.352130038 -0600 -@@ -179,6 +179,8 @@ - return (EPKG_FATAL); - } - -+#define URL_SCHEME_PREFIX "pkg+" -+ - int - pkg_fetch_file_to_fd(struct pkg_repo *repo, const char *url, int dest, time_t *t) - { -@@ -204,6 +206,7 @@ - int kq = -1, flags = 0; - struct kevent e, ev; - struct timespec ts; -+ bool pkg_url_scheme = false; - - if (pkg_config_int64(PKG_CONFIG_FETCH_RETRY, &max_retry) == EPKG_FATAL) - max_retry = 3; -@@ -215,6 +218,34 @@ - - retry = max_retry; - -+ /* A URL of the form http://host.example.com/ where -+ * host.example.com does not resolve as a simple A record is -+ * not valid according to RFC 2616 Section 3.2.2. Our usage -+ * with SRV records is incorrect. However it is encoded into -+ * /usr/sbin/pkg in various releases so we can't just drop it. -+ * -+ * Instead, introduce new pkg+http://, pkg+https://, -+ * pkg+ssh://, pkg+ftp://, pkg+file:// to support the -+ * SRV-style server discovery, and also to allow eg. Firefox -+ * to run pkg-related stuff given a pkg+foo:// URL. -+ * -+ * Warn if using plain http://, https:// etc with SRV -+ */ -+ -+ if (strncmp(URL_SCHEME_PREFIX, url, strlen(URL_SCHEME_PREFIX)) == 0) { -+ if (repo->mirror_type != SRV) { -+ pkg_emit_error("packagesite URL error for %s -- " -+ URL_SCHEME_PREFIX -+ ":// implies SRV mirror type", url); -+ -+ /* Too early for there to be anything to cleanup */ -+ return(EPKG_FATAL); -+ } -+ -+ url += strlen(URL_SCHEME_PREFIX); -+ pkg_url_scheme = true; -+ } -+ - u = fetchParseURL(url); - if (t != NULL) - u->ims_time = *t; -@@ -253,6 +284,12 @@ - if (repo != NULL && repo->mirror_type == SRV && - (strncmp(u->scheme, "http", 4) == 0 - || strcmp(u->scheme, "ftp") == 0)) { -+ -+ if (!pkg_url_scheme) -+ pkg_emit_notice( -+ "Warning: use of %s:// URL scheme with SRV records is deprecated: " -+ "switch to pkg+%s://", u->scheme, u->scheme); -+ - snprintf(zone, sizeof(zone), - "_%s._tcp.%s", u->scheme, u->host); - if (repo->srv == NULL) -@@ -268,8 +305,10 @@ - } - } - -- if (repo != NULL && repo->mirror_type == SRV && repo->srv != NULL) -+ if (repo != NULL && repo->mirror_type == SRV && repo->srv != NULL) { - strlcpy(u->host, srv_current->host, sizeof(u->host)); -+ u->port = srv_current->port; -+ } - else if (repo != NULL && repo->mirror_type == HTTP && repo->http != NULL) { - strlcpy(u->scheme, http_current->url->scheme, sizeof(u->scheme)); - strlcpy(u->host, http_current->url->host, sizeof(u->host)); -@@ -366,7 +405,7 @@ - - cleanup: - -- if (strcmp(u->scheme, "ssh") != 0) { -+ if (u != NULL && strcmp(u->scheme, "ssh") != 0) { - if (remote != NULL) - fclose(remote); - } else { diff --git a/ports-mgmt/pkg/files/patch-libpkg__packing.c b/ports-mgmt/pkg/files/patch-libpkg__packing.c deleted file mode 100644 index 8fc72c7b7be7..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__packing.c +++ /dev/null @@ -1,59 +0,0 @@ ---- libpkg/packing.c.orig 2013-10-05 19:46:59.920058519 +0200 -+++ libpkg/packing.c 2013-10-05 19:49:46.531103495 +0200 -@@ -36,6 +36,8 @@ - #include <string.h> - #include <sys/mman.h> - #include <limits.h> -+#include <pwd.h> -+#include <grp.h> - - #include "pkg.h" - #include "private/event.h" -@@ -44,6 +46,7 @@ - static const char *packing_set_format(struct archive *a, pkg_formats format); - - struct packing { -+ bool pass; - struct archive *aread; - struct archive *awrite; - struct archive_entry_linkresolver *resolver; -@@ -67,6 +70,7 @@ - archive_read_disk_set_symlink_physical((*pack)->aread); - - if (!is_dir(path)) { -+ (*pack)->pass = false; - (*pack)->awrite = archive_write_new(); - archive_write_set_format_pax_restricted((*pack)->awrite); - ext = packing_set_format((*pack)->awrite, format); -@@ -89,6 +93,7 @@ - return EPKG_FATAL; - } - } else { /* pass mode directly write to the disk */ -+ (*pack)->pass = true; - (*pack)->awrite = archive_write_disk_new(); - archive_write_disk_set_options((*pack)->awrite, - EXTRACT_ARCHIVE_FLAGS); -@@ -177,11 +182,21 @@ - archive_entry_set_size(entry, 0); - } - -- if (uname != NULL && uname[0] != '\0') -+ if (uname != NULL && uname[0] != '\0') { -+ if (pack->pass) { -+ struct passwd *pw = getpwnam(uname); -+ archive_entry_set_uid(entry, pw->pw_uid); -+ } - archive_entry_set_uname(entry, uname); -+ } - -- if (gname != NULL && gname[0] != '\0') -+ if (gname != NULL && gname[0] != '\0') { -+ if (pack->pass) { -+ struct group *gr = getgrnam(gname); -+ archive_entry_set_gid(entry, gr->gr_gid); -+ } - archive_entry_set_gname(entry, gname); -+ } - - if (perm != 0) - archive_entry_set_perm(entry, perm); diff --git a/ports-mgmt/pkg/files/patch-libpkg__pkg.c b/ports-mgmt/pkg/files/patch-libpkg__pkg.c deleted file mode 100644 index d01d2b4c4bbb..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__pkg.c +++ /dev/null @@ -1,47 +0,0 @@ ---- libpkg/pkg.c.orig 2013-07-06 12:48:19.000000000 +0200 -+++ libpkg/pkg.c 2013-10-05 19:45:16.675062417 +0200 -@@ -1181,6 +1181,20 @@ - struct pkg_dir *dir = NULL; - char spath[MAXPATHLEN + 1]; - char dpath[MAXPATHLEN + 1]; -+ bool disable_mtree; -+ const char *prefix; -+ char *mtree; -+ -+ pkg_config_bool(PKG_CONFIG_DISABLE_MTREE, &disable_mtree); -+ if (!disable_mtree) { -+ pkg_get(pkg, PKG_PREFIX, &prefix, PKG_MTREE, &mtree); -+ do_extract_mtree(mtree, prefix); -+ } -+ -+ /* -+ * Execute pre-install scripts -+ */ -+ pkg_script_run(pkg, PKG_SCRIPT_PRE_INSTALL); - - if (packing_init(&pack, dest, 0) != EPKG_OK) { - /* TODO */ -@@ -1190,15 +1204,21 @@ - while (pkg_dirs(pkg, &dir) == EPKG_OK) { - snprintf(spath, sizeof(spath), "%s%s", src, pkg_dir_path(dir)); - snprintf(dpath, sizeof(dpath), "%s%s", dest, pkg_dir_path(dir)); -- packing_append_file(pack, spath, dpath); -+ packing_append_file_attr(pack, spath, dpath, -+ dir->uname, dir->gname, dir->perm); - } - - while (pkg_files(pkg, &file) == EPKG_OK) { - snprintf(spath, sizeof(spath), "%s%s", src, pkg_file_path(file)); - snprintf(dpath, sizeof(dpath), "%s%s", dest, pkg_file_path(file)); -- packing_append_file(pack, spath, dpath); -+ packing_append_file_attr(pack, spath, dpath, -+ file->uname, file->gname, file->perm); - } - -+ /* -+ * Execute post install scripts -+ */ -+ pkg_script_run(pkg, PKG_SCRIPT_POST_INSTALL); - - return (packing_finish(pack)); - } diff --git a/ports-mgmt/pkg/files/patch-libpkg__pkg.h.in b/ports-mgmt/pkg/files/patch-libpkg__pkg.h.in deleted file mode 100644 index 2afea253b6d0..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__pkg.h.in +++ /dev/null @@ -1,11 +0,0 @@ ---- ./libpkg/pkg.h.in.orig 2013-07-06 12:48:19.000000000 +0200 -+++ ./libpkg/pkg.h.in 2013-09-19 20:59:25.679219359 +0200 -@@ -626,7 +626,7 @@ - #define PKG_CONTAINS_STATIC_LIBS (1U << 25) - #define PKG_CONTAINS_H_OR_LA (1U << 26) - --int pkg_analyse_files(struct pkgdb *, struct pkg *); -+int pkg_analyse_files(struct pkgdb *, struct pkg *, const char *stage); - - /** - * Suggest if a package could be marked architecture independent or diff --git a/ports-mgmt/pkg/files/patch-libpkg__pkg_add.c b/ports-mgmt/pkg/files/patch-libpkg__pkg_add.c deleted file mode 100644 index fab93b6a51af..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__pkg_add.c +++ /dev/null @@ -1,11 +0,0 @@ ---- libpkg/pkg_add.c.orig 2013-07-06 12:48:19.000000000 +0200 -+++ libpkg/pkg_add.c 2013-09-24 14:22:38.561062335 +0200 -@@ -100,7 +100,7 @@ - return (retcode); - } - --static int -+int - do_extract_mtree(char *mtree, const char *prefix) - { - struct archive *a = NULL; diff --git a/ports-mgmt/pkg/files/patch-libpkg__pkg_create.c b/ports-mgmt/pkg/files/patch-libpkg__pkg_create.c deleted file mode 100644 index 4e7ddc1cbc91..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__pkg_create.c +++ /dev/null @@ -1,11 +0,0 @@ ---- ./libpkg/pkg_create.c.orig 2013-09-24 16:27:05.716245523 -0500 -+++ ./libpkg/pkg_create.c 2013-09-24 16:27:17.642245427 -0500 -@@ -323,7 +323,7 @@ - goto cleanup; - } - -- if (pkg_files(pkg, &file) != EPKG_OK && -+ if (0 && pkg_files(pkg, &file) != EPKG_OK && - pkg_dirs(pkg, &dir) != EPKG_OK) { - /* Now traverse the file directories, adding to the archive */ - packing_append_tree(pkg_archive, md_dir, NULL); diff --git a/ports-mgmt/pkg/files/patch-libpkg__pkg_elf.c b/ports-mgmt/pkg/files/patch-libpkg__pkg_elf.c deleted file mode 100644 index 343c43eaef48..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__pkg_elf.c +++ /dev/null @@ -1,114 +0,0 @@ ---- ./libpkg/pkg_elf.c.orig 2013-07-06 12:48:19.000000000 +0200 -+++ ./libpkg/pkg_elf.c 2013-09-19 21:49:03.825014672 +0200 -@@ -87,6 +87,8 @@ - const char *name, bool is_shlib) - { - const char *pkgname, *pkgversion; -+ struct pkg_file *file = NULL; -+ const char *filepath; - - switch(filter_system_shlibs(name, NULL, 0)) { - case EPKG_OK: /* A non-system library */ -@@ -100,6 +102,15 @@ - if (is_shlib) - return (EPKG_OK); - -+ /* Search in libraries we do provide */ -+ while (pkg_files(pkg, &file) == EPKG_OK) { -+ filepath = pkg_file_path(file); -+ if (strcmp(&filepath[strlen(filepath) - strlen(name)], name) == 0) { -+ pkg_addshlib_required(pkg, name); -+ return (EPKG_OK); -+ } -+ } -+ - pkg_get(pkg, PKG_NAME, &pkgname, PKG_VERSION, &pkgversion); - warnx("(%s-%s) %s - shared library %s not found", - pkgname, pkgversion, fpath, name); -@@ -271,6 +282,10 @@ - ret = EPKG_END; /* Some error occurred, ignore this file */ - goto cleanup; - } -+ if (data->d_buf == NULL) { -+ ret = EPKG_END; /* No osname available */ -+ goto cleanup; -+ } - osname = (const char *) data->d_buf + sizeof(Elf_Note); - if (strncasecmp(osname, "freebsd", sizeof("freebsd")) != 0 && - strncasecmp(osname, "dragonfly", sizeof("dragonfly")) != 0) { -@@ -323,7 +338,7 @@ - if (dyn->d_tag != DT_RPATH && dyn->d_tag != DT_RUNPATH) - continue; - -- shlib_list_from_rpath(elf_strptr(e, sh_link, dyn->d_un.d_val), -+ shlib_list_from_rpath(elf_strptr(e, sh_link, dyn->d_un.d_val), - dirname(fpath)); - break; - } -@@ -377,11 +392,11 @@ - } - - int --pkg_analyse_files(struct pkgdb *db, struct pkg *pkg) -+pkg_analyse_files(struct pkgdb *db, struct pkg *pkg, const char *stage) - { - struct pkg_file *file = NULL; - int ret = EPKG_OK; -- const char *fpath; -+ char fpath[MAXPATHLEN]; - bool autodeps = false; - bool developer = false; - int (*action)(void *, struct pkg *, const char *, const char *, bool); -@@ -410,7 +425,10 @@ - PKG_CONTAINS_H_OR_LA); - - while (pkg_files(pkg, &file) == EPKG_OK) { -- fpath = pkg_file_path(file); -+ if (stage != NULL) -+ snprintf(fpath, MAXPATHLEN, "%s/%s", stage, pkg_file_path(file)); -+ else -+ strlcpy(fpath, pkg_file_path(file), MAXPATHLEN); - - ret = analyse_elf(pkg, fpath, action, db); - if (developer) { -@@ -484,7 +502,7 @@ - uint32_t version = 0; - int ret = EPKG_OK; - int i; -- const char *abi, *endian_corres_str, *wordsize_corres_str; -+ const char *abi, *endian_corres_str, *wordsize_corres_str, *fpu; - - if (elf_version(EV_CURRENT) == EV_NONE) { - pkg_emit_error("ELF library initialization failed: %s", -@@ -569,10 +587,28 @@ - endian_corres_str = elf_corres_to_string(endian_corres, - (int)elfhdr.e_ident[EI_DATA]); - -+ /* FreeBSD doesn't support the hard-float ABI yet */ -+ fpu = "softfp"; -+ if ((elfhdr.e_flags & 0xFF000000) != 0) { -+ /* This is an EABI file, the conformance level is set */ -+ abi = "eabi"; -+ } else if (elfhdr.e_ident[EI_OSABI] != ELFOSABI_NONE) { -+ /* -+ * EABI executables all have this field set to -+ * ELFOSABI_NONE, therefore it must be an oabi file. -+ */ -+ abi = "oabi"; -+ } else { -+ /* -+ * We may have failed to positively detect the ABI, -+ * set the ABI to unknown. If we end up here one of -+ * the above cases should be fixed for the binary. -+ */ -+ pkg_emit_error("unknown ARM ABI"); -+ goto cleanup; -+ } - snprintf(dest + strlen(dest), sz - strlen(dest), ":%s:%s:%s", -- endian_corres_str, -- (elfhdr.e_flags & EF_ARM_NEW_ABI) > 0 ? "eabi" : "oabi", -- (elfhdr.e_flags & EF_ARM_VFP_FLOAT) > 0 ? "softfp" : "vfp"); -+ endian_corres_str, abi, fpu); - break; - case EM_MIPS: - /* diff --git a/ports-mgmt/pkg/files/patch-libpkg__pkgdb.c b/ports-mgmt/pkg/files/patch-libpkg__pkgdb.c deleted file mode 100644 index 8f93324bab28..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__pkgdb.c +++ /dev/null @@ -1,11 +0,0 @@ ---- ./libpkg/pkgdb.c.orig 2013-09-19 20:55:45.183234062 +0200 -+++ ./libpkg/pkgdb.c 2013-09-19 20:55:15.578236583 +0200 -@@ -2661,7 +2661,7 @@ - return (EPKG_FATAL); - } - -- if ((ret = pkg_analyse_files(db, pkg)) == EPKG_OK) { -+ if ((ret = pkg_analyse_files(db, pkg, NULL)) == EPKG_OK) { - if (!db->prstmt_initialized && - prstmt_initialize(db) != EPKG_OK) - return (EPKG_FATAL); diff --git a/ports-mgmt/pkg/files/patch-libpkg__private__elf_tables.h b/ports-mgmt/pkg/files/patch-libpkg__private__elf_tables.h deleted file mode 100644 index 15f6fed982eb..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__private__elf_tables.h +++ /dev/null @@ -1,13 +0,0 @@ ---- ./libpkg/private/elf_tables.h.orig 2013-07-06 12:48:19.000000000 +0200 -+++ ./libpkg/private/elf_tables.h 2013-09-19 21:52:03.661029778 +0200 -@@ -59,7 +59,9 @@ - { -1, NULL } - }; - --#define EF_MIPS_ABI 0x0000F000 -+#ifndef EF_MIPS_ABI -+#define EF_MIPS_ABI 0x0000f000 -+#endif - #define E_MIPS_ABI_O32 0x00001000 - #define E_MIPS_ABI_N32 0x00000020 - diff --git a/ports-mgmt/pkg/files/patch-libpkg__private__pkg.h b/ports-mgmt/pkg/files/patch-libpkg__private__pkg.h deleted file mode 100644 index 090a19b6c87e..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__private__pkg.h +++ /dev/null @@ -1,8 +0,0 @@ ---- ./libpkg/private/pkg.h.orig 2013-09-24 14:56:39.000000000 +0200 -+++ ./libpkg/private/pkg.h 2013-09-24 14:57:23.000000000 +0200 -@@ -405,4 +405,5 @@ - int pkg_emit_filelist(struct pkg *, FILE *); - int pkg_parse_manifest_archive(struct pkg *pkg, struct archive *a, struct pkg_manifest_key *keys); - -+int do_extract_mtree(char *mtree, const char *prefix); - #endif diff --git a/ports-mgmt/pkg/files/patch-libpkg__private__utils.h b/ports-mgmt/pkg/files/patch-libpkg__private__utils.h deleted file mode 100644 index a7e992134101..000000000000 --- a/ports-mgmt/pkg/files/patch-libpkg__private__utils.h +++ /dev/null @@ -1,10 +0,0 @@ ---- ./libpkg/private/utils.h.orig 2013-07-06 05:48:19.000000000 -0500 -+++ ./libpkg/private/utils.h 2013-11-19 11:13:45.354131958 -0600 -@@ -60,6 +60,7 @@ - unsigned int priority; - unsigned int weight; - unsigned int port; -+ unsigned int finalweight; - char host[MAXHOSTNAMELEN]; - struct dns_srvinfo *next; - }; diff --git a/ports-mgmt/pkg/files/patch-pkg-static__Makefile b/ports-mgmt/pkg/files/patch-pkg-static__Makefile deleted file mode 100644 index b05db45bc478..000000000000 --- a/ports-mgmt/pkg/files/patch-pkg-static__Makefile +++ /dev/null @@ -1,15 +0,0 @@ ---- ./pkg-static/Makefile.orig 2013-07-06 05:48:19.000000000 -0500 -+++ ./pkg-static/Makefile 2013-10-12 07:25:25.352756808 -0500 -@@ -6,12 +6,8 @@ - NOMAN= yes - LDADD_STATIC= -L${.OBJDIR}/../external/sqlite - --.if !exists(/usr/include/bsdyml.h) - LDADD_STATIC+= -L${.OBJDIR}/../external/libyaml \ - -lyaml --.else --LDADD_STATIC+= -lbsdyml --.endif - - .if defined(WITH_BUNDLED_LIBELF) - LDADD_STATIC+= -L${.OBJDIR}/../external/libelf diff --git a/ports-mgmt/pkg/files/patch-pkg__register.c b/ports-mgmt/pkg/files/patch-pkg__register.c deleted file mode 100644 index ddb4bccbf270..000000000000 --- a/ports-mgmt/pkg/files/patch-pkg__register.c +++ /dev/null @@ -1,11 +0,0 @@ ---- ./pkg/register.c.orig 2013-09-19 20:56:18.299519000 +0200 -+++ ./pkg/register.c 2013-09-19 20:56:34.568231772 +0200 -@@ -285,7 +285,7 @@ - */ - - if (!testing_mode) -- pkg_analyse_files(db, pkg); -+ pkg_analyse_files(db, pkg, input_path); - - pkg_get(pkg, PKG_ARCH, &arch); - if (arch == NULL) { diff --git a/ports-mgmt/pkg/files/patch-pkg__upgrade.c b/ports-mgmt/pkg/files/patch-pkg__upgrade.c deleted file mode 100644 index 862e27022b9b..000000000000 --- a/ports-mgmt/pkg/files/patch-pkg__upgrade.c +++ /dev/null @@ -1,11 +0,0 @@ ---- ./pkg/upgrade.c.orig 2013-09-25 07:37:38.657129024 -0500 -+++ ./pkg/upgrade.c 2013-09-25 07:37:52.227152887 -0500 -@@ -151,7 +151,7 @@ - - if (!quiet || dry_run) { - print_jobs_summary(jobs, -- "Uprgades have been requested for the following %d " -+ "Upgrades have been requested for the following %d " - "packages:\n\n", nbactions); - - if (!yes && !dry_run) diff --git a/ports-mgmt/pkg/pkg-plist b/ports-mgmt/pkg/pkg-plist index 823010497fa0..ee14906f3d14 100644 --- a/ports-mgmt/pkg/pkg-plist +++ b/ports-mgmt/pkg/pkg-plist @@ -1,16 +1,14 @@ -etc/pkg.conf.sample -sbin/pkg -sbin/pkg-static -sbin/pkg2ng -include/pkg.h -lib/libpkg.so.1 -lib/libpkg.so -lib/libpkg.a -etc/periodic/daily/400.status-pkg +etc/bash_completion.d/_pkg.bash etc/periodic/daily/411.pkg-backup etc/periodic/daily/490.status-pkg-changes etc/periodic/security/410.pkg-audit etc/periodic/security/460.pkg-checksum +etc/periodic/weekly/400.status-pkg +etc/pkg.conf.sample +include/pkg.h +lib/libpkg.a +lib/libpkg.so +lib/libpkg.so.1 libdata/pkgconfig/pkg.pc man/man3/pkg_printf.3.gz man/man5/pkg-repository.5.gz @@ -47,11 +45,14 @@ man/man8/pkg-upgrade.8.gz man/man8/pkg-version.8.gz man/man8/pkg-which.8.gz man/man8/pkg.8.gz +sbin/pkg +sbin/pkg-static +sbin/pkg2ng share/zsh/site-functions/_pkg -etc/bash_completion.d/_pkg.bash @dirrmtry etc/bash_completion.d @dirrmtry etc/periodic/daily @dirrmtry etc/periodic/security +@dirrmtry etc/periodic/weekly @dirrmtry etc/periodic @dirrmtry share/zsh/site-functions @dirrmtry share/zsh |