summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2011-05-03 17:27:11 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2011-05-03 17:27:11 +0200
commit7f4713547665e12e032501228a98586e5add48f7 (patch)
tree24b7888cbbc24046ae15aa36b410e561db50721c
parentee8c790a660a817417267379bca1a26e7813dfde (diff)
add a tiny dump solver to quickly output a scenario
-rw-r--r--cmdline/apt-dump-solver.cc50
-rw-r--r--cmdline/makefile7
-rw-r--r--debian/apt-utils.install1
-rw-r--r--debian/apt.dirs1
-rwxr-xr-xdebian/rules2
5 files changed, 60 insertions, 1 deletions
diff --git a/cmdline/apt-dump-solver.cc b/cmdline/apt-dump-solver.cc
new file mode 100644
index 000000000..5bcfe4f06
--- /dev/null
+++ b/cmdline/apt-dump-solver.cc
@@ -0,0 +1,50 @@
+// -*- mode: cpp; mode: fold -*-
+// Description /*{{{*/
+/* #####################################################################
+
+ dummy solver to get quickly a scenario file out of APT
+
+ ##################################################################### */
+ /*}}}*/
+// Include Files /*{{{*/
+#include <apt-pkg/edsp.h>
+
+#include <config.h>
+
+#include <cstdio>
+ /*}}}*/
+
+// ShowHelp - Show a help screen /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool ShowHelp() {
+
+ std::cout <<
+ PACKAGE " " VERSION " for " COMMON_ARCH " compiled on " __DATE__ " " __TIME__ << std::endl <<
+ "Usage: apt-dump-resolver\n"
+ "\n"
+ "apt-dump-resolver is a dummy solver who just dumps its input to the\n"
+ "file /tmp/dump.edsp and exists with a proper EDSP error.\n"
+ "\n"
+ " This dump has lost Super Cow Powers.\n";
+ return true;
+}
+ /*}}}*/
+int main(int argc,const char *argv[]) /*{{{*/
+{
+ if (argc > 1 && (strcmp(argv[1], "--help") == 0 || strcmp(argv[1],"-h") == 0 ||
+ strcmp(argv[1],"-v") == 0 || strcmp(argv[1],"--version") == 0)) {
+ ShowHelp();
+ return 0;
+ }
+
+ FILE* input = fdopen(STDIN_FILENO, "r");
+ FILE* output = fopen("/tmp/dump.edsp", "w");
+ char buffer[400];
+ while (fgets(buffer, sizeof(buffer), input) != NULL)
+ fputs(buffer, output);
+ fclose(output);
+ fclose(input);
+
+ EDSP::WriteError("I am too dumb, i can just dump!", stdout);
+}
diff --git a/cmdline/makefile b/cmdline/makefile
index 4462ccaf4..aea5d1db5 100644
--- a/cmdline/makefile
+++ b/cmdline/makefile
@@ -71,3 +71,10 @@ SLIBS = -lapt-pkg $(INTLLIBS)
LIB_MAKES = apt-pkg/makefile
SOURCE = apt-internal-solver.cc
include $(PROGRAM_H)
+
+# The internal solver acting as an external
+PROGRAM=apt-dump-solver
+SLIBS = -lapt-pkg $(INTLLIBS)
+LIB_MAKES = apt-pkg/makefile
+SOURCE = apt-dump-solver.cc
+include $(PROGRAM_H)
diff --git a/debian/apt-utils.install b/debian/apt-utils.install
index d947f26d4..0c72bfdc8 100644
--- a/debian/apt-utils.install
+++ b/debian/apt-utils.install
@@ -1 +1,2 @@
bin/libapt-inst*.so.* usr/lib/
+bin/apt-dump-solver usr/lib/apt/solvers/dump
diff --git a/debian/apt.dirs b/debian/apt.dirs
index 2770d79bb..f9c0b6c3e 100644
--- a/debian/apt.dirs
+++ b/debian/apt.dirs
@@ -1,5 +1,6 @@
usr/bin
usr/lib/apt/methods
+usr/lib/apt/solvers
usr/lib/dpkg/methods/apt
etc/apt
etc/apt/apt.conf.d
diff --git a/debian/rules b/debian/rules
index c8aefee63..77a7b4fdb 100755
--- a/debian/rules
+++ b/debian/rules
@@ -182,7 +182,7 @@ apt: build build-doc
dh_install -p$@ --sourcedir=$(BLD)
# Remove the bits that are in apt-utils
- rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS))
+ rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS) dump-solver)
# https has its own package
rm debian/$@/usr/lib/apt/methods/https