Exemplo n.º 1
0
void
opkg_test (void)
{
  int err;
  pkg_t *pkg;

  err = opkg_update_package_lists (progress_callback, "Updating...");
  printf ("\nopkg_update_package_lists returned %d\n", err);

  opkg_list_packages (package_list_callback, NULL);
  printf ("\n");

  if (find_pkg)
  {
    printf ("Finding package \"%s\"\n", find_pkg->name);
    pkg = opkg_find_package (find_pkg->name, find_pkg->version, find_pkg->architecture, find_pkg->src->name);
    if (pkg)
    {
      print_package (pkg);
    }
    else
      printf ("Package \"%s\" not found!\n", find_pkg->name);
  }
  else
    printf ("No package available to test find_package.\n");

  err = opkg_install_package (TEST_PACKAGE, progress_callback, "Installing...");
  printf ("\nopkg_install_package returned %d\n", err);

  err = opkg_upgrade_package (TEST_PACKAGE, progress_callback, "Upgrading...");
  printf ("\nopkg_upgrade_package returned %d\n", err);

  err = opkg_remove_package (TEST_PACKAGE, progress_callback, "Removing...");
  printf ("\nopkg_remove_package returned %d\n", err);

  printf ("Listing upgradable packages...\n");
  opkg_list_upgradable_packages (package_list_upgradable_callback, NULL);

  err = opkg_upgrade_all (progress_callback, "Upgrading all...");
  printf ("\nopkg_upgrade_all returned %d\n", err);

}
bool service_retrieve_package_info_cb(LSHandle *handle, LSMessage *message, void *user_data)
{
	jvalue_ref reply_obj;
	jvalue_ref parsed_obj;
	jvalue_ref name_obj;
	jvalue_ref depends_obj;
	jvalue_ref recommends_obj;
	jvalue_ref conflicts_obj;
	pkg_t *package = NULL;
	const char *payload = NULL;
	const char *pkgname = NULL;
	raw_buffer name_buf;
	int n;

	payload = LSMessageGetPayload(message);
	parsed_obj = luna_service_message_parse_and_validate(payload);
	if (jis_null(parsed_obj)) {
		luna_service_message_reply_error_bad_json(handle, message);
		return true;
	}

	if (!jobject_get_exists(parsed_obj, J_CSTR_TO_BUF("name"), &name_obj)) {
		luna_service_message_reply_error_bad_json(handle, message);
		return true;
	}

	if (opkg_new()) {
		luna_service_message_reply_error_internal(handle, message);
		return true;
	}

	name_buf = jstring_get(name_obj);
	package = opkg_find_package(name_buf.m_str, NULL, NULL, NULL);

	if (!package) {
		luna_service_message_reply_custom_error(handle, message, "Package does not exist");
		goto cleanup;
	}

	set_flags_from_control(package);

	reply_obj = jobject_create();
	jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(true));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("version"), jstring_create(package->version ? package->version : ""));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("revision"), jstring_create(package->revision ? package->revision : ""));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("architecture"), jstring_create(package->architecture ? package->architecture : ""));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("section"), jstring_create(package->section ? package->section : ""));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("maintainer"), jstring_create(package->maintainer ? package->maintainer : ""));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("description"), jstring_create(package->description ? package->description : ""));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("tags"), jstring_create(package->tags ? package->tags : ""));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("size"), jnumber_create_i32(package->size));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("installed_size"), jnumber_create_i32(package->installed_size));
	jobject_put(reply_obj, J_CSTR_TO_JVAL("auto_installed"), jboolean_create(package->auto_installed > 0 ? true : false));

	if (!luna_service_message_validate_and_send(handle, message, reply_obj)) {
		luna_service_message_reply_error_internal(handle, message);
		goto cleanup;
	}

cleanup:
	opkg_free();

	return true;
}
Exemplo n.º 3
0
int
main (int argc, char **argv)
{
  pkg_t *pkg;
  int err;

  if (argc < 2)
  {
    printf ("Usage: %s command\n"
            "\nCommands:\n"
	    "\tupdate - Update package lists\n"
	    "\tfind [package] - Print details of the specified package\n"
	    "\tinstall [package] - Install the specified package\n"
	    "\tupgrade [package] - Upgrade the specified package\n"
	    "\tlist upgrades - List the available upgrades\n"
	    "\tlist all - List all available packages\n"
	    "\tlist installed - List all the installed packages\n"
	    "\tremove [package] - Remove the specified package\n"
	    "\trping - Reposiroties ping, check the accessibility of repositories\n"
	    "\ttest - Run test script\n"
    , basename (argv[0]));
    exit (0);
  }

  setenv("OFFLINE_ROOT", "/tmp", 0);

  if (opkg_new ()) {
	  printf("opkg_new() failed. This sucks.\n");
	  print_error_list();
	  return 1;
  }

  switch (argv[1][0])
  {
    case 'f':
      pkg = opkg_find_package (argv[2], NULL, NULL, NULL);
      if (pkg)
      {
	print_package (pkg);
      }
      else
	printf ("Package \"%s\" not found!\n", find_pkg->name);
      break;
    case 'i':
      err = opkg_install_package (argv[2], progress_callback, "Installing...");
      printf ("\nopkg_install_package returned %d\n", err);
      break;

    case 'u':
      if (argv[1][2] == 'd')
      {
        err = opkg_update_package_lists (progress_callback, "Updating...");
        printf ("\nopkg_update_package_lists returned %d\n", err);
        break;
      }
      else
      {
        if (argc < 3)
        {
          err = opkg_upgrade_all (progress_callback, "Upgrading all...");
          printf ("\nopkg_upgrade_all returned %d\n", err);
        }
        else
        {
          err = opkg_upgrade_package (argv[2], progress_callback, "Upgrading...");
          printf ("\nopkg_upgrade_package returned %d\n", err);
        }
      }
      break;

    case 'l':
      if (argc < 3)
      {
        printf ("Please specify one either all, installed or upgrades\n");
      }
      else
      {
        switch (argv[2][0])
        {
          case 'u':
            printf ("Listing upgradable packages...\n");
            opkg_list_upgradable_packages (package_list_upgradable_callback, NULL);
            break;
          case 'a':
            printf ("Listing all packages...\n");
            opkg_list_packages (package_list_callback, NULL);
            printf ("\n");
            break;
          case 'i':
            printf ("Listing installed packages...\n");
            opkg_list_packages (package_list_installed_callback, NULL);
            break;
          default:
            printf ("Unknown list option \"%s\"\n", argv[2]);
        }
      }
      break;

    case 'r':
      if (argv[1][1] == 'e')
      {
      	err = opkg_remove_package (argv[2], progress_callback, "Removing...");
      	printf ("\nopkg_remove_package returned %d\n", err);
	break;
      }else if (argv[1][1] == 'p')
      {
        err = opkg_repository_accessibility_check();
	printf("\nopkg_repository_accessibility_check returned (%d)\n", err);
        break;
      }

    default:
      printf ("Unknown command \"%s\"\n", argv[1]);
  }


  opkg_free ();

  return 0;
}