Date: Sat, 6 Jul 2013 09:35:57 GMT From: mattbw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r254232 - soc2013/mattbw/backend/actions Message-ID: <201307060935.r669ZvHo044817@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mattbw Date: Sat Jul 6 09:35:57 2013 New Revision: 254232 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=254232 Log: install-packages seems to work enough to install packages now Modified: soc2013/mattbw/backend/actions/install-packages.c Modified: soc2013/mattbw/backend/actions/install-packages.c ============================================================================== --- soc2013/mattbw/backend/actions/install-packages.c Sat Jul 6 09:22:42 2013 (r254231) +++ soc2013/mattbw/backend/actions/install-packages.c Sat Jul 6 09:35:57 2013 (r254232) @@ -32,6 +32,8 @@ static gboolean body(struct query *q); static gboolean sim_body(struct query *q); static void do_install_packages(struct pkg_jobs *jobs, struct query *q, gboolean simulate); +static void do_install_solved_job(struct pkg_jobs *jobs, PkBackend *backend, gboolean simulate); +static void do_install_solved_job_real(struct pkg_jobs *jobs, PkBackend *backend); static void emit(struct pkg *pkg, const gchar *id, struct query *q); static void job (struct pkg_jobs *jobs, struct query *q); static void sim_emit(struct pkg *pkg, const gchar *id, struct query *q); @@ -81,17 +83,18 @@ return query_emit_match(q, sim_emit); } +/* + * Installs (or pretends to install) an unsolved installation job. + */ static void do_install_packages(struct pkg_jobs *jobs, struct query *q, gboolean simulate) { - int err; PkBackend *backend; backend = query_backend(q); pk_backend_set_status(backend, PK_STATUS_ENUM_DEP_RESOLVE); - err = pkg_jobs_solve(jobs); - if (err != EPKG_OK) + if (pkg_jobs_solve(jobs) != EPKG_OK) pk_backend_error_code(backend, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, "could not solve the job"); @@ -99,20 +102,42 @@ pk_backend_error_code(backend, PK_ERROR_ENUM_INTERNAL_ERROR, "job contains no packages"); - else { - struct pkg *pkg; + else + do_install_solved_job(jobs, backend, simulate); +} + +/* + * Installs (or pretends to install) a fully solved installation job. + */ +static void +do_install_solved_job(struct pkg_jobs *jobs, + PkBackend *backend, + gboolean simulate) +{ + struct pkg *pkg; - pkg = NULL; - while (pkg_jobs(jobs, &pkg) == EPKG_OK) - pkgutils_emit(pkg, - backend, - pkgutils_pkg_install_state(pkg)); - - if (simulate == FALSE) - pk_backend_error_code(backend, - PK_ERROR_ENUM_NOT_SUPPORTED, - "not implemented yet"); - } + pkg = NULL; + while (pkg_jobs(jobs, &pkg) == EPKG_OK) + pkgutils_emit(pkg, + backend, + pkgutils_pkg_install_state(pkg)); + + if (simulate == FALSE) + do_install_solved_job_real(jobs, backend); +} + +/* + * Actually installs a fully solved installation job. + */ +static void +do_install_solved_job_real(struct pkg_jobs *jobs, PkBackend *backend) +{ + + pk_backend_set_status(backend, PK_STATUS_ENUM_INSTALL); + if (pkg_jobs_apply(jobs) != EPKG_OK) + pk_backend_error_code(backend, + PK_ERROR_ENUM_PACKAGE_FAILED_TO_INSTALL, + "job failed"); } /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307060935.r669ZvHo044817>