diff --git a/bin/xbps-install/state_cb.c b/bin/xbps-install/state_cb.c index 5381c9e8..11167d92 100644 --- a/bin/xbps-install/state_cb.c +++ b/bin/xbps-install/state_cb.c @@ -77,8 +77,6 @@ state_cb(struct xbps_state_cb_data *xscd, void *cbdata) printf("%s: configuring ...\n", xscd->arg); break; case XBPS_STATE_XBPS_UPDATE: - case XBPS_STATE_REGISTER: - case XBPS_STATE_UNREGISTER: case XBPS_STATE_CONFIGURE_DONE: /* empty */ break; @@ -132,8 +130,6 @@ state_cb(struct xbps_state_cb_data *xscd, void *cbdata) case XBPS_STATE_UNPACK_FAIL: case XBPS_STATE_UPDATE_FAIL: case XBPS_STATE_CONFIGURE_FAIL: - case XBPS_STATE_REGISTER_FAIL: - case XBPS_STATE_UNREGISTER_FAIL: case XBPS_STATE_REMOVE_FAIL: case XBPS_STATE_VERIFY_FAIL: case XBPS_STATE_DOWNLOAD_FAIL: diff --git a/bin/xbps-remove/main.c b/bin/xbps-remove/main.c index 603fefe7..bd2367cc 100644 --- a/bin/xbps-remove/main.c +++ b/bin/xbps-remove/main.c @@ -76,8 +76,6 @@ state_cb_rm(struct xbps_state_cb_data *xscd, void *cbdata) switch (xscd->state) { /* notifications */ - case XBPS_STATE_UNREGISTER: - break; case XBPS_STATE_REMOVE: printf("Removing `%s' ...\n", xscd->arg); break; @@ -99,7 +97,6 @@ state_cb_rm(struct xbps_state_cb_data *xscd, void *cbdata) xscd->xhp->rootdir); break; /* errors */ - case XBPS_STATE_UNREGISTER_FAIL: case XBPS_STATE_REMOVE_FAIL: xbps_error_printf("%s\n", xscd->desc); if (syslog_enabled) diff --git a/include/xbps_api.h.in b/include/xbps_api.h.in index 4614abbe..62b0717b 100644 --- a/include/xbps_api.h.in +++ b/include/xbps_api.h.in @@ -48,7 +48,7 @@ */ #define XBPS_PKGINDEX_VERSION "1.7" -#define XBPS_API_VERSION "20130307" +#define XBPS_API_VERSION "20130307-1" #ifndef XBPS_VERSION #define XBPS_VERSION "UNSET" @@ -159,18 +159,11 @@ */ #define XBPS_FLAG_INSTALL_AUTO 0x00000010 -/** - * @def XBPS_FLAG_INSTALL_MANUAL - * Enabled manual install mode for a package and all dependencies - * installed direct and indirectly. - */ -#define XBPS_FLAG_INSTALL_MANUAL 0x00000020 - /** * @def XBPS_FLAG_DEBUG * Enable debug mode to output debugging printfs to stdout/stderr. */ -#define XBPS_FLAG_DEBUG 0x00000040 +#define XBPS_FLAG_DEBUG 0x00000020 /** * @def XBPS_FLAG_FORCE_UNPACK @@ -178,7 +171,7 @@ * files will be unpacked overwritting the current ones. * Must be set through the xbps_handle::flags member. */ -#define XBPS_FLAG_FORCE_UNPACK 0x00000080 +#define XBPS_FLAG_FORCE_UNPACK 0x00000040 /** * @def XBPS_FETCH_CACHECONN @@ -233,8 +226,6 @@ extern "C" { * - XBPS_STATE_CONFIGURE: a package is being configured. * - XBPS_STATE_CONFIGURE_DONE: a package has been configured successfully. * - XBPS_STATE_CONFIG_FILE: a package configuration file is being processed. - * - XBPS_STATE_REGISTER: a package is being registered. - * - XBPS_STATE_UNREGISTER: a package is being unregistered. * - XBPS_STATE_REPOSYNC: a remote repository's package index is being * synchronized. * - XBPS_STATE_VERIFY_FAIL: binary package integrity has failed. @@ -250,8 +241,6 @@ extern "C" { * has failed. * - XBPS_STATE_UPDATE_FAIL: package update has failed. * - XBPS_STATE_UNPACK_FAIL: package unpack has failed. - * - XBPS_STATE_REGISTER_FAIL: package register has failed. - * - XBPS_STATE_UNREGISTER_FAIL: package unregister has failed. * - XBPS_STATE_REPOSYNC_FAIL: syncing remote repositories has failed. */ typedef enum xbps_state { @@ -276,8 +265,6 @@ typedef enum xbps_state { XBPS_STATE_UNPACK, XBPS_STATE_CONFIGURE, XBPS_STATE_CONFIG_FILE, - XBPS_STATE_REGISTER, - XBPS_STATE_UNREGISTER, XBPS_STATE_REPOSYNC, XBPS_STATE_VERIFY_FAIL, XBPS_STATE_DOWNLOAD_FAIL, @@ -290,8 +277,6 @@ typedef enum xbps_state { XBPS_STATE_CONFIG_FILE_FAIL, XBPS_STATE_UPDATE_FAIL, XBPS_STATE_UNPACK_FAIL, - XBPS_STATE_REGISTER_FAIL, - XBPS_STATE_UNREGISTER_FAIL, XBPS_STATE_REPOSYNC_FAIL, XBPS_STATE_XBPS_UPDATE, XBPS_STATE_CONFIGURE_DONE diff --git a/include/xbps_api_impl.h b/include/xbps_api_impl.h index 0203cf4d..effe2ac6 100644 --- a/include/xbps_api_impl.h +++ b/include/xbps_api_impl.h @@ -240,7 +240,6 @@ int HIDDEN xbps_remove_pkg_files(struct xbps_handle *, prop_dictionary_t, * From lib/package_register.c */ int HIDDEN xbps_register_pkg(struct xbps_handle *, prop_dictionary_t); -int HIDDEN xbps_unregister_pkg(struct xbps_handle *, const char *); /** * @private diff --git a/lib/package_register.c b/lib/package_register.c index b0c2a36b..82411fcb 100644 --- a/lib/package_register.c +++ b/lib/package_register.c @@ -52,8 +52,6 @@ xbps_register_pkg(struct xbps_handle *xhp, prop_dictionary_t pkgrd) provides = prop_dictionary_get(pkgrd, "provides"); rundeps = prop_dictionary_get(pkgrd, "run_depends"); - xbps_set_cb_state(xhp, XBPS_STATE_REGISTER, 0, pkgver, NULL); - assert(pkgver != NULL); assert(desc != NULL); @@ -76,11 +74,8 @@ xbps_register_pkg(struct xbps_handle *xhp, prop_dictionary_t pkgrd) rv = EINVAL; goto out; } - prop_dictionary_get_bool(pkgd, "automatic-install", &autoinst); if (xhp->flags & XBPS_FLAG_INSTALL_AUTO) autoinst = true; - else if (xhp->flags & XBPS_FLAG_INSTALL_MANUAL) - autoinst = false; if (!prop_dictionary_set_bool(pkgd, "automatic-install", autoinst)) { @@ -147,37 +142,11 @@ xbps_register_pkg(struct xbps_handle *xhp, prop_dictionary_t pkgrd) "%s: failed to set pkgd for %s\n", __func__, pkgver); goto out; } - (void)xbps_pkgdb_update(xhp, true); + rv = xbps_pkgdb_update(xhp, true); out: if (pkgname) free(pkgname); - if (rv != 0) { - xbps_set_cb_state(xhp, XBPS_STATE_REGISTER_FAIL, - rv, pkgver, "%s: failed to register package: %s", - pkgver, strerror(rv)); - } - return rv; } - -int HIDDEN -xbps_unregister_pkg(struct xbps_handle *xhp, const char *pkgver) -{ - char *pkgname; - - assert(xhp); - assert(pkgver); - - xbps_set_cb_state(xhp, XBPS_STATE_UNREGISTER, 0, pkgver, NULL, NULL); - - pkgname = xbps_pkg_name(pkgver); - assert(pkgname); - prop_dictionary_remove(xhp->pkgdb, pkgname); - free(pkgname); - - (void)xbps_pkgdb_update(xhp, true); - - return 0; -} diff --git a/lib/package_remove.c b/lib/package_remove.c index 4b776f31..036dacd8 100644 --- a/lib/package_remove.c +++ b/lib/package_remove.c @@ -319,7 +319,8 @@ purge: /* * Unregister package from pkgdb. */ - if ((rv = xbps_unregister_pkg(xhp, pkgver)) != 0) + prop_dictionary_remove(xhp->pkgdb, pkgname); + if ((rv = xbps_pkgdb_update(xhp, true)) != 0) goto out; xbps_dbg_printf(xhp, "[remove] unregister %s returned %d\n", pkgver, rv); diff --git a/lib/package_state.c b/lib/package_state.c index 12922bad..83221bcd 100644 --- a/lib/package_state.c +++ b/lib/package_state.c @@ -132,15 +132,6 @@ xbps_set_pkg_state_dictionary(prop_dictionary_t dict, pkg_state_t state) return set_new_state(dict, state); } -static int -set_pkg_objs(prop_dictionary_t pkgd, const char *pkgver) -{ - if (!prop_dictionary_set_cstring_nocopy(pkgd, "pkgver", pkgver)) - return EINVAL; - - return 0; -} - int xbps_set_pkg_state_installed(struct xbps_handle *xhp, const char *pkgver, @@ -158,9 +149,10 @@ xbps_set_pkg_state_installed(struct xbps_handle *xhp, if (pkgd == NULL) return ENOMEM; - if ((rv = set_pkg_objs(pkgd, pkgver)) != 0) { + if (!prop_dictionary_set_cstring_nocopy(pkgd, + "pkgver", pkgver)) { prop_object_release(pkgd); - return rv; + return EINVAL; } if ((rv = set_new_state(pkgd, state)) != 0) { prop_object_release(pkgd); diff --git a/lib/transaction_ops.c b/lib/transaction_ops.c index 81778c4a..60286011 100644 --- a/lib/transaction_ops.c +++ b/lib/transaction_ops.c @@ -66,6 +66,7 @@ trans_find_pkg(struct xbps_handle *xhp, const char *pkg, int action) char *pkgname; int rv = 0; pkg_state_t state = 0; + bool autoinst = false; assert(pkg != NULL); @@ -104,6 +105,11 @@ trans_find_pkg(struct xbps_handle *xhp, const char *pkg, int action) repopkgver, instpkgver, repoloc); return EEXIST; } + /* respect current install mode from pkgdb */ + prop_dictionary_get_bool(pkg_pkgdb, "automatic-install", + &autoinst); + prop_dictionary_set_bool(pkg_repod, "automatic-install", + autoinst); } /* * Prepare transaction dictionary.