Преглед изворни кода

add a tiny dump solver to quickly output a scenario

David Kalnischkies пре 15 година
родитељ
комит
7f47135476
5 измењених фајлова са 60 додато и 1 уклоњено
  1. 50 0
      cmdline/apt-dump-solver.cc
  2. 7 0
      cmdline/makefile
  3. 1 0
      debian/apt-utils.install
  4. 1 0
      debian/apt.dirs
  5. 1 1
      debian/rules

+ 50 - 0
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);
+}

+ 7 - 0
cmdline/makefile

@@ -71,3 +71,10 @@ SLIBS = -lapt-pkg $(INTLLIBS)
 LIB_MAKES = apt-pkg/makefile
 LIB_MAKES = apt-pkg/makefile
 SOURCE = apt-internal-solver.cc
 SOURCE = apt-internal-solver.cc
 include $(PROGRAM_H)
 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)

+ 1 - 0
debian/apt-utils.install

@@ -1 +1,2 @@
 bin/libapt-inst*.so.* usr/lib/
 bin/libapt-inst*.so.* usr/lib/
+bin/apt-dump-solver usr/lib/apt/solvers/dump

+ 1 - 0
debian/apt.dirs

@@ -1,5 +1,6 @@
 usr/bin
 usr/bin
 usr/lib/apt/methods
 usr/lib/apt/methods
+usr/lib/apt/solvers
 usr/lib/dpkg/methods/apt
 usr/lib/dpkg/methods/apt
 etc/apt
 etc/apt
 etc/apt/apt.conf.d
 etc/apt/apt.conf.d

+ 1 - 1
debian/rules

@@ -182,7 +182,7 @@ apt: build build-doc
 	dh_install -p$@ --sourcedir=$(BLD)
 	dh_install -p$@ --sourcedir=$(BLD)
 
 
 	# Remove the bits that are in apt-utils
 	# 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
 	# https has its own package
 	rm debian/$@/usr/lib/apt/methods/https
 	rm debian/$@/usr/lib/apt/methods/https