From owner-svn-soc-all@FreeBSD.ORG Sat Jul 6 07:09:03 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 3AAA2517 for ; Sat, 6 Jul 2013 07:09:03 +0000 (UTC) (envelope-from mattbw@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) by mx1.freebsd.org (Postfix) with ESMTP id 27C901B52 for ; Sat, 6 Jul 2013 07:09:03 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r66792ZP016129 for ; Sat, 6 Jul 2013 07:09:02 GMT (envelope-from mattbw@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r66792Wm016125 for svn-soc-all@FreeBSD.org; Sat, 6 Jul 2013 07:09:02 GMT (envelope-from mattbw@FreeBSD.org) Date: Sat, 6 Jul 2013 07:09:02 GMT Message-Id: <201307060709.r66792Wm016125@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to mattbw@FreeBSD.org using -f From: mattbw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r254218 - soc2013/mattbw/tests/install MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jul 2013 07:09:03 -0000 Author: mattbw Date: Sat Jul 6 07:09:02 2013 New Revision: 254218 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=254218 Log: adds more testbed code for checking why install-packages isn't working Added: soc2013/mattbw/tests/install/ soc2013/mattbw/tests/install/Makefile soc2013/mattbw/tests/install/insttest.1 soc2013/mattbw/tests/install/insttest.c Added: soc2013/mattbw/tests/install/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2013/mattbw/tests/install/Makefile Sat Jul 6 07:09:02 2013 (r254218) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +PROG= insttest +CFLAGS+= `pkgconf --cflags pkg` -g +LDFLAGS+= `pkgconf --libs pkg` + +.include Added: soc2013/mattbw/tests/install/insttest.1 ============================================================================== Added: soc2013/mattbw/tests/install/insttest.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2013/mattbw/tests/install/insttest.c Sat Jul 6 07:09:02 2013 (r254218) @@ -0,0 +1,102 @@ +#include +#include +#include +#include "pkg.h" + +void handle_it(struct pkgdb_it *it); +int getdb(struct pkgdb **db); + +int +getdb(struct pkgdb **db) +{ + int err; + + err = pkgdb_access(PKGDB_MODE_READ, PKGDB_DB_REPO); + + if (err == EPKG_ENOACCESS) + fprintf(stderr, "check your privilege: %i\n", err); + else if (err != EPKG_OK) + fprintf(stderr, "access error: %i\n", err); + else { + err = pkgdb_open(db, PKGDB_REMOTE); + if (err != EPKG_OK) + fprintf(stderr, "open error: %i\n", err); + } + return err; +} + +int +main(int argc, char **argv) +{ + struct pkg *pkg; + struct pkgdb *db; + struct pkg_jobs *jobs; + int err; + + db = NULL; + pkg = NULL; + jobs = NULL; + + err = ((argc == 2 || argc == 3) ? EPKG_OK : EPKG_FATAL); + if (err == EPKG_OK) { + err = pkg_init(NULL); + if (err != EPKG_OK) + fprintf(stderr, "could not parse config file\n"); + } else + fprintf(stderr, "usage: %s name [repo]\n", argv[0]); + + if (err == EPKG_OK) + err = getdb(&db); + + if (err == EPKG_OK) { + err = pkg_jobs_new(&jobs, PKG_JOBS_INSTALL, db); + if (err != EPKG_OK) + fprintf(stderr, "couldn't create jobs\n"); + } + + if (err == EPKG_OK && argc == 3) { + char *rep; + + /* Test what happens to set_repository if it's passed NULL */ + if (strcmp(argv[2], "null") == 0) { + rep = NULL; + printf("using null\n"); + } else + rep = argv[2]; + + err = pkg_jobs_set_repository(jobs, rep); + if (err != EPKG_OK) + fprintf(stderr, "couldn't set repo\n"); + } + + if (err == EPKG_OK) { + err = pkg_jobs_add(jobs, MATCH_EXACT, argv + 1, 1); + if (err != EPKG_OK) + fprintf(stderr, "couldn't add to job\n"); + } + + if (err == EPKG_OK) { + err = pkg_jobs_solve(jobs); + if (err != EPKG_OK) + fprintf(stderr, "couldn't solve: %u\n", err); + } + + if (err == EPKG_OK) { + int c; + + c = pkg_jobs_count(jobs); + if (c > 0) { + printf("%i jobs\n", c); + while (pkg_jobs(jobs, &pkg) == EPKG_OK) + pkg_printf("%n\n", pkg); + } else + fprintf(stderr, "nothing to do\n"); + } + + printf("shutting down\n"); + pkg_jobs_free(jobs); + pkg_free(pkg); + pkgdb_close(db); + pkg_shutdown(); + printf("shutdown\n"); +}