This is an automated email from the git hooks/post-receive script. skitt pushed a commit to branch master in repository scummvm-tools.
commit 1661c53851bc3bc6dd8a8db2ffc1bd073d98ebd4 Author: Stephen Kitt <[email protected]> Date: Sun Feb 7 23:20:52 2016 +0100 Initial packaging. --- debian/changelog | 5 + debian/clean | 5 + debian/compat | 1 + debian/control | 41 +++ debian/copyright | 94 +++++++ debian/docs | 3 + debian/patches/compilation-fixes.patch | 14 + debian/patches/series | 4 + debian/patches/spelling-fixes.patch | 38 +++ debian/patches/tests-broken.patch | 29 +++ debian/patches/tests-missing-data.patch | 442 ++++++++++++++++++++++++++++++++ debian/rules | 21 ++ debian/source/format | 1 + debian/watch | 4 + 14 files changed, 702 insertions(+) diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..0f4a595 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +scummvm-tools (1.7.0-1) unstable; urgency=low + + * Initial release. Closes: #653617. + + -- Stephen Kitt <[email protected]> Sun, 07 Feb 2016 23:20:38 +0100 diff --git a/debian/clean b/debian/clean new file mode 100644 index 0000000..b486091 --- /dev/null +++ b/debian/clean @@ -0,0 +1,5 @@ +config.log +decompiler/test/disassembler/*.o +config.h +config.mk +scummvm-tools-conf.cpp diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..d0980e6 --- /dev/null +++ b/debian/control @@ -0,0 +1,41 @@ +Source: scummvm-tools +Section: games +Priority: optional +Maintainer: Debian Games Team <[email protected]> +Uploaders: + Stephen Kitt <[email protected]> +Build-Depends: + autotools-dev, + debhelper (>=9), + libboost-program-options-dev, + libflac-dev, + libfreetype6-dev, + libmad0-dev, + libpng-dev, + libvorbis-dev, + libwxgtk3.0-dev, + python, + zlib1g-dev +Standards-Version: 3.9.6 +Homepage: http://wiki.scummvm.org/index.php/User_Manual/Appendix:_Tools +Vcs-Git: https://anonscm.debian.org/git/pkg-games/scummvm-tools.git +Vcs-Browser: https://anonscm.debian.org/cgit/pkg-games/scummvm-tools.git + +Package: scummvm-tools +Architecture: any +Multi-Arch: foreign +Depends: + ${misc:Depends}, + ${shlibs:Depends} +Description: collection of tools for ScummVM + This package contains various tools which may be useful in + conjunction with ScummVM. + . + The tools include: + * compression tools to re-compress ScummVM games' assets; + * extraction tools, either to extract resources from game assets, or + to convert assets from one format to another (e.g. PC Engine or + Macintosh releases); + * game script analysis tools. + . + A GUI is provided alongside the command-line tools. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..73bf8b0 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,94 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: scummvm-tools +Source: http://www.scummvm.org + +Files: * +Copyright: 2001-2014 ScummVM Team +License: GPL-2.0+ + +Files: + config.guess + config.sub +Copyright: 1992-2009 Free Software Foundation, Inc. +License: permissive + Auto-generated file under the permissive license. + +Files: convert_dxa.bat +Copyright: 2006 oduverne + 2006-2012 ScummVM Team + 2008 NoiZe +License: GPL-2.0+ + +Files: convert_dxa.sh +Copyright: 2006 crowley + 2006-2012 ScummVM Team +License: GPL-2.0+ + +Files: + sci/sfx/lists/gm_patches.c + sci/sfx/lists/mt32_timbres.c + sci/sfx/mt32_GM_mapping/gm_patches.c + sci/sfx/mt32_GM_mapping/main.c + sci/sfx/mt32_GM_mapping/mt32_timbres.c +Copyright: 2000 Rickard Lind +License: GPL-1.0 + +Files: decompiler/test/cxxtest/* +Copyright: 2008 Sandia Corporation +License: LGPL-3.0 + +Files: debian/* +Copyright: 2016 Stephen Kitt +License: GPL-2.0+ + +License: GPL-2.0+ + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + . + On Debian systems, the complete text of the GNU General Public License + Version 2 can be found in `/usr/share/common-licenses/GPL-2'. + +License: GPL-1.0 + This program may be modified and copied freely according to the terms of + the GNU general public license (GPL), as long as the above copyright + notice and the licensing information contained herein are preserved. + . + Please refer to www.gnu.org for licensing details. + . + This work is provided AS IS, without warranty of any kind, expressed or + implied, including but not limited to the warranties of merchantibility, + noninfringement, and fitness for a specific purpose. The author will not + be held liable for any damage caused by this work or derivatives of it. + . + By using this source code, you agree to the licensing terms as stated + above. + . + On Debian systems, the complete text of the GNU General Public License + Version 1 can be found in `/usr/share/common-licenses/GPL-1'. + +License: LGPL-3.0 + This package is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 3 as published by the Free Software Foundation. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + . + On Debian systems, the complete text of the GNU Lesser General + Public License can be found in "/usr/share/common-licenses/LGPL-3". diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..c6eab75 --- /dev/null +++ b/debian/docs @@ -0,0 +1,3 @@ +COPYRIGHT +README +TODO diff --git a/debian/patches/compilation-fixes.patch b/debian/patches/compilation-fixes.patch new file mode 100644 index 0000000..59111bb --- /dev/null +++ b/debian/patches/compilation-fixes.patch @@ -0,0 +1,14 @@ +Description: Compilation fixes for GCC 5 +Author: Stephen Kitt <[email protected]> + +--- a/decompiler/test/codegen.h ++++ b/decompiler/test/codegen.h +@@ -51,7 +51,7 @@ + std::basic_ios<cT, traits>(&m_sbuf), + std::basic_ostream<cT, traits>(&m_sbuf) + { +- init(&m_sbuf); ++ this->init(&m_sbuf); + } + + private: diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..883dd81 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,4 @@ +spelling-fixes.patch +compilation-fixes.patch +tests-missing-data.patch +tests-broken.patch diff --git a/debian/patches/spelling-fixes.patch b/debian/patches/spelling-fixes.patch new file mode 100644 index 0000000..c3d6e67 --- /dev/null +++ b/debian/patches/spelling-fixes.patch @@ -0,0 +1,38 @@ +Description: Spelling fixes +Author: Stephen Kitt <[email protected]> + +As suggested by Lintian: +* excutable -> executable +* occured -> occurred + +--- a/gui/pages.cpp ++++ b/gui/pages.cpp +@@ -888,7 +888,7 @@ + + /* + "\nMP3 mode params:\n" +- " --lame-path <path> Path to the lame excutable to use (default: lame)\n" ++ " --lame-path <path> Path to the lame executable to use (default: lame)\n" + " -b <rate> <rate> is the target bitrate(ABR)/minimal bitrate(VBR) (default:" minBitrDef_str "%d)\n" + " -B <rate> <rate> is the maximum VBR/ABR bitrate (default:%" maxBitrDef_str ")\n" + " --vbr LAME uses the VBR mode (default)\n" +@@ -1522,7 +1522,7 @@ + _success = true; + } catch (ToolException &err) { + wxMutexLocker lock(_output.mutex); +- _output.buffer = _output.buffer + "\nFatal Error Occured: " + err.what() + "\n"; ++ _output.buffer = _output.buffer + "\nFatal Error Occurred: " + err.what() + "\n"; + } + _finished = true; + return NULL; +--- a/compress.cpp ++++ b/compress.cpp +@@ -1163,7 +1163,7 @@ + + if (_supportedFormats & AUDIO_MP3) { + os << "\nMP3 mode params:\n"; +- os << " --lame-path <path> Path to the lame excutable to use (default:lame)\n"; ++ os << " --lame-path <path> Path to the lame executable to use (default:lame)\n"; + os << " -b <rate> <rate> is the minimal bitrate (default:unset)\n"; + os << " -B <rate> <rate> is the maximum bitrate (default:unset)\n"; + os << " --vbr LAME uses the VBR mode (default)\n"; diff --git a/debian/patches/tests-broken.patch b/debian/patches/tests-broken.patch new file mode 100644 index 0000000..8380d39 --- /dev/null +++ b/debian/patches/tests-broken.patch @@ -0,0 +1,29 @@ +Description: Disable broken test +Author: Stephen Kitt <[email protected]> + +This test is broken currently; disable it for the time being. + +--- a/decompiler/test/cfg_test.h ++++ b/decompiler/test/cfg_test.h +@@ -134,21 +134,6 @@ + delete engine; + } + +- void testShortCircuitDetection() { +- InstVec insts; +- Scumm::v6::Scummv6Engine *engine = new Scumm::v6::Scummv6Engine(); +- Disassembler *d = engine->getDisassembler(insts); +- d->open("decompiler/test/short-circuit.dmp"); +- d->disassemble(); +- delete d; +- ControlFlow *c = new ControlFlow(insts, engine); +- c->createGroups(); +- Graph g = c->getGraph(); +- TS_ASSERT(boost::num_vertices(g) == 3); +- delete c; +- delete engine; +- } +- + void testWhileDetection() { + InstVec insts; + Scumm::v6::Scummv6Engine *engine = new Scumm::v6::Scummv6Engine(); diff --git a/debian/patches/tests-missing-data.patch b/debian/patches/tests-missing-data.patch new file mode 100644 index 0000000..b8b2a54 --- /dev/null +++ b/debian/patches/tests-missing-data.patch @@ -0,0 +1,442 @@ +Description: Disable tests for which data isn't available +Author: Stephen Kitt <[email protected]> + +A number of tests require data from games; this data isn't available +for the buildds and can't be included in the package. Because of the +way the tests work, disabling them involves removing the code +entirely. + +--- a/decompiler/test/disassembler_test.h ++++ b/decompiler/test/disassembler_test.h +@@ -70,181 +70,4 @@ + } + } + +- // This test requires script-15.dmp from Sam & Max: Hit The Road. +- // 1ab08298c9c8fb4c77953756989c7449 *script-15.dmp +- void testScummv6DisassemblerScript15() { +- InstVec insts; +- Scumm::v6::Scummv6Disassembler s(insts); +- s.open("decompiler/test/script-15.dmp"); +- s.disassemble(); +- TS_ASSERT(insts.size() == 11); +- TS_ASSERT(insts[0]->_address == 0); +- TS_ASSERT(insts[0]->_opcode == 0x03); +- TS_ASSERT(insts[0]->_name == "pushWordVar"); +- TS_ASSERT(insts[0]->_params[0]->getUnsigned() == 16384); +- TS_ASSERT(insts[1]->_address == 3); +- TS_ASSERT(insts[1]->_opcode == 0x43); +- TS_ASSERT(insts[1]->_name == "writeWordVar"); +- TS_ASSERT(insts[1]->_params[0]->getUnsigned() == 197); +- TS_ASSERT(insts[2]->_address == 6); +- TS_ASSERT(insts[2]->_opcode == 0x01); +- TS_ASSERT(insts[2]->_name == "pushWord"); +- TS_ASSERT(insts[2]->_params[0]->getSigned() == 0); +- TS_ASSERT(insts[3]->_address == 9); +- TS_ASSERT(insts[3]->_opcode == 0x01); +- TS_ASSERT(insts[3]->_name == "pushWord"); +- TS_ASSERT(insts[3]->_params[0]->getSigned() == 11); +- TS_ASSERT(insts[4]->_address == 12); +- TS_ASSERT(insts[4]->_opcode == 0x01); +- TS_ASSERT(insts[4]->_name == "pushWord"); +- TS_ASSERT(insts[4]->_params[0]->getSigned() == 0); +- TS_ASSERT(insts[5]->_address == 15); +- TS_ASSERT(insts[5]->_opcode == 0x5E); +- TS_ASSERT(insts[5]->_name == "startScript"); +- TS_ASSERT(insts[6]->_address == 16); +- TS_ASSERT(insts[6]->_opcode == 0x01); +- TS_ASSERT(insts[6]->_name == "pushWord"); +- TS_ASSERT(insts[6]->_params[0]->getSigned() == 0); +- TS_ASSERT(insts[7]->_address == 19); +- TS_ASSERT(insts[7]->_opcode == 0x01); +- TS_ASSERT(insts[7]->_name == "pushWord"); +- TS_ASSERT(insts[7]->_params[0]->getSigned() == 14); +- TS_ASSERT(insts[8]->_address == 22); +- TS_ASSERT(insts[8]->_opcode == 0x01); +- TS_ASSERT(insts[8]->_name == "pushWord"); +- TS_ASSERT(insts[8]->_params[0]->getSigned() == 0); +- TS_ASSERT(insts[9]->_address == 25); +- TS_ASSERT(insts[9]->_opcode == 0x5E); +- TS_ASSERT(insts[9]->_name == "startScript"); +- TS_ASSERT(insts[10]->_address == 26); +- TS_ASSERT(insts[10]->_opcode == 0x66); +- TS_ASSERT(insts[10]->_name == "stopObjectCodeB"); +- } +- +- // This test requires script-31.dmp from Sam & Max: Hit The Road. +- // f75f7ce110f378735d449f8eeb4a68e5 *script-31.dmp +- void testScummv6DisassemblerScript31() { +- InstVec insts; +- Scumm::v6::Scummv6Disassembler s(insts); +- s.open("decompiler/test/script-31.dmp"); +- s.disassemble(); +- TS_ASSERT(insts.size() == 5); +- TS_ASSERT(insts[0]->_address == 0); +- TS_ASSERT(insts[0]->_opcode == 0x01); +- TS_ASSERT(insts[0]->_name == "pushWord"); +- TS_ASSERT(insts[0]->_params[0]->getSigned() == 0); +- TS_ASSERT(insts[1]->_address == 3); +- TS_ASSERT(insts[1]->_opcode == 0x43); +- TS_ASSERT(insts[1]->_name == "writeWordVar"); +- TS_ASSERT(insts[1]->_params[0]->getUnsigned() == 180); +- TS_ASSERT(insts[2]->_address == 6); +- TS_ASSERT(insts[2]->_opcode == 0x01); +- TS_ASSERT(insts[2]->_name == "pushWord"); +- TS_ASSERT(insts[2]->_params[0]->getSigned() == 0); +- TS_ASSERT(insts[3]->_address == 9); +- TS_ASSERT(insts[3]->_opcode == 0x43); +- TS_ASSERT(insts[3]->_name == "writeWordVar"); +- TS_ASSERT(insts[3]->_params[0]->getUnsigned() == 181); +- TS_ASSERT(insts[4]->_address == 12); +- TS_ASSERT(insts[4]->_opcode == 0x66); +- TS_ASSERT(insts[4]->_name == "stopObjectCodeB"); +- } +- +- // This test requires script-33.dmp from Sam & Max: Hit The Road. +- // 9f09418bf34abbdec0ec54f388d8dca4 *script-33.dmp +- void testScummv6DisassemblerScript33() { +- InstVec insts; +- Scumm::v6::Scummv6Disassembler s(insts); +- s.open("decompiler/test/script-33.dmp"); +- s.disassemble(); +- TS_ASSERT(insts.size() == 10); +- TS_ASSERT(insts[0]->_address == 0); +- TS_ASSERT(insts[0]->_opcode == 0x01); +- TS_ASSERT(insts[0]->_name == "pushWord"); +- TS_ASSERT(insts[0]->_params[0]->getSigned() == 0); +- TS_ASSERT(insts[1]->_address == 3); +- TS_ASSERT(insts[1]->_opcode == 0x43); +- TS_ASSERT(insts[1]->_name == "writeWordVar"); +- TS_ASSERT(insts[1]->_params[0]->getUnsigned() == 71); +- TS_ASSERT(insts[2]->_address == 6); +- TS_ASSERT(insts[2]->_opcode == 0x03); +- TS_ASSERT(insts[2]->_name == "pushWordVar"); +- TS_ASSERT(insts[2]->_params[0]->getUnsigned() == 177); +- TS_ASSERT(insts[3]->_address == 9); +- TS_ASSERT(insts[3]->_opcode == 0x43); +- TS_ASSERT(insts[3]->_name == "writeWordVar"); +- TS_ASSERT(insts[3]->_params[0]->getUnsigned() == 173); +- TS_ASSERT(insts[4]->_address == 12); +- TS_ASSERT(insts[4]->_opcode == 0x01); +- TS_ASSERT(insts[4]->_name == "pushWord"); +- TS_ASSERT(insts[4]->_params[0]->getSigned() == 874); +- TS_ASSERT(insts[5]->_address == 15); +- TS_ASSERT(insts[5]->_opcode == 0x43); +- TS_ASSERT(insts[5]->_name == "writeWordVar"); +- TS_ASSERT(insts[5]->_params[0]->getUnsigned() == 177); +- TS_ASSERT(insts[6]->_address == 18); +- TS_ASSERT(insts[6]->_opcode == 0x03); +- TS_ASSERT(insts[6]->_name == "pushWordVar"); +- TS_ASSERT(insts[6]->_params[0]->getUnsigned() == 177); +- TS_ASSERT(insts[7]->_address == 21); +- TS_ASSERT(insts[7]->_opcode == 0x01); +- TS_ASSERT(insts[7]->_name == "pushWord"); +- TS_ASSERT(insts[7]->_params[0]->getSigned() == 93); +- TS_ASSERT(insts[8]->_address == 24); +- TS_ASSERT(insts[8]->_opcode == 0x6B99); +- TS_ASSERT(insts[8]->_name == "cursorCommand.setCursorImg"); +- TS_ASSERT(insts[9]->_address == 26); +- TS_ASSERT(insts[9]->_opcode == 0x66); +- TS_ASSERT(insts[9]->_name == "stopObjectCodeB"); +- } +- +- // This test requires room-9-202.dmp from Sam & Max: Hit The Road. +- // f010dc659264674a2b6da298acd0b88b *room-9-202.dmp +- void testScummv6StackChangeFixRoom9202() { +- InstVec insts; +- Scumm::v6::Scummv6Disassembler s(insts); +- s.open("decompiler/test/room-9-202.dmp"); +- s.disassemble(); +- InstIterator it = insts.end(); +- it -= 8; +- TS_ASSERT((*it)->_stackChange == -3); +- } +- +- // This test requires script-30.dmp from Sam & Max: Hit The Road. +- // 6e48faca13e1f6df9341567608962744 *script-30.dmp +- void testScummv6StackChangeFixScript30() { +- InstVec insts; +- Scumm::v6::Scummv6Disassembler s(insts); +- s.open("decompiler/test/script-30.dmp"); +- s.disassemble(); +- InstIterator it = insts.end(); +- it -= 3; +- TS_ASSERT((*it)->_stackChange == -6); +- } +- +- // This test requires _START04.EMC from the CD demo of +- // Legend of Kyrandia: Hand of Fate, found in MISC_EMC.PAK. +- // Extract using extract_kyra from the scummvm-tools-cli bundle. +- // ba2821ac6da96394ce0af75a3cbe48eb *_START04.EMC +- void testKyra2Start04() { +- InstVec insts; +- Kyra::Kyra2Engine engine; +- Disassembler* s = engine.getDisassembler(insts); +- s->open("decompiler/test/_START04.EMC"); +- s->disassemble(); +- +- TS_ASSERT(insts.size() == 481); +- +- //These scripts are far too big to check all instructions, so we just check a few different ones +- TS_ASSERT(insts[16]->_address == 0x20); +- TS_ASSERT(insts[16]->_opcode == 15); +- TS_ASSERT(insts[16]->_name == "ifNotJmp"); +- TS_ASSERT(insts[16]->_stackChange == -1); +- TS_ASSERT(insts[38]->_address == 0x54); +- TS_ASSERT(insts[38]->_opcode == 14); +- TS_ASSERT(insts[38]->_name == "o1_setHandItem"); +- TS_ASSERT(insts[38]->_stackChange == 0); +- +- delete s; +- } + }; +--- a/decompiler/test/cfg_test.h ++++ b/decompiler/test/cfg_test.h +@@ -559,112 +559,4 @@ + delete engine; + } + +- // This test requires script-30.dmp from Sam & Max: Hit The Road. +- // 6e48faca13e1f6df9341567608962744 *script-30.dmp +- void testSamAndMaxScript30() { +- InstVec insts; +- Scumm::v6::Scummv6Engine *engine = new Scumm::v6::Scummv6Engine(); +- Disassembler *d = engine->getDisassembler(insts); +- d->open("decompiler/test/script-30.dmp"); +- d->disassemble(); +- delete d; +- ControlFlow *c = new ControlFlow(insts, engine); +- c->createGroups(); +- Graph g = c->analyze(); +- VertexRange range = boost::vertices(g); +- for (VertexIterator it = range.first; it != range.second; ++it) { +- GroupPtr gr = GET(*it); +- switch ((*gr->_start)->_address) { +- case 0x6: +- TS_ASSERT(gr->_type == kWhileCondGroupType); +- TS_ASSERT(!gr->_startElse); +- TS_ASSERT(gr->_endElse.empty()); +- break; +- case 0x19: +- case 0x3A: +- case 0x4F: +- case 0x68: +- case 0x74: // Allow inclusion of the pop instruction immediately before +- case 0x75: +- case 0x92: +- TS_ASSERT(gr->_type == kIfCondGroupType); +- TS_ASSERT(!gr->_startElse); +- TS_ASSERT(gr->_endElse.empty()); +- break; +- case 0x8B: +- TS_ASSERT(gr->_type == kNormalGroupType); +- TS_ASSERT(gr->_startElse); +- TS_ASSERT(gr->_endElse.size() == 1 && (*gr->_endElse[0]->_start)->_address == 0x8B); +- break; +- case 0x91: +- TS_ASSERT(gr->_type == kNormalGroupType || gr->_type == kIfCondGroupType); // Allow inclusion of the pop instruction immediately before +- TS_ASSERT(gr->_startElse); +- TS_ASSERT(gr->_endElse.empty()); +- break; +- case 0xA6: +- TS_ASSERT(gr->_type == kNormalGroupType); +- TS_ASSERT(!gr->_startElse); +- TS_ASSERT(gr->_endElse.size() == 1 && (*gr->_endElse[0]->_start)->_address == 0x91); +- break; +- default: +- TS_ASSERT(gr->_type == kNormalGroupType); +- TS_ASSERT(!gr->_startElse); +- TS_ASSERT(gr->_endElse.empty()); +- break; +- } +- } +- delete c; +- delete engine; +- } +- +- // This test requires _START04.EMC from the CD demo of +- // Legend of Kyrandia: Hand of Fate, found in MISC_EMC.PAK. +- // Extract using extract_kyra from the scummvm-tools-cli bundle. +- // ba2821ac6da96394ce0af75a3cbe48eb *_START04.EMC +- void testFunctionDetection() { +- InstVec insts; +- Kyra::Kyra2Engine *engine = new Kyra::Kyra2Engine(); +- Disassembler *d = engine->getDisassembler(insts); +- d->open("decompiler/test/_START04.EMC"); +- d->disassemble(); +- delete d; +- ControlFlow *c = new ControlFlow(insts, engine); +- c->createGroups(); +- Graph g = c->analyze(); +- TS_ASSERT(engine->_functions.size() == 15); +- FuncMap::iterator it = engine->_functions.begin(); +- TS_ASSERT(it->first == 0x0); +- ++it; +- TS_ASSERT(it->first == 0x7E); +- ++it; +- TS_ASSERT(it->first == 0xFC); +- ++it; +- TS_ASSERT(it->first == 0x100); +- ++it; +- TS_ASSERT(it->first == 0x1F4); +- ++it; +- TS_ASSERT(it->first == 0x1F8); +- ++it; +- TS_ASSERT(it->first == 0x276); +- ++it; +- TS_ASSERT(it->first == 0x278); +- ++it; +- TS_ASSERT(it->first == 0x2DE); +- ++it; +- TS_ASSERT(it->first == 0x2E0); +- ++it; +- TS_ASSERT(it->first == 0x30C); +- ++it; +- TS_ASSERT(it->first == 0x30E); +- ++it; +- TS_ASSERT(it->first == 0x33A); +- ++it; +- TS_ASSERT(it->first == 0x33C); +- ++it; +- TS_ASSERT(it->first == 0x33E); +- ++it; +- +- delete c; +- delete engine; +- } + }; +--- a/decompiler/test/codegen.h ++++ b/decompiler/test/codegen.h +@@ -202,132 +202,4 @@ + delete engine; + } + +- // This test requires script-30 and script-48.dmp from Sam & Max: Hit The Road. +- // 6e48faca13e1f6df9341567608962744 *script-30.dmp +- // afd7dc5d377894b3b9d0504927adf1b1 *script-48.dmp +- void testCoalescing() { +- InstVec insts; +- Scumm::v6::Scummv6Engine *engine = new Scumm::v6::Scummv6Engine(); +- Disassembler *d = engine->getDisassembler(insts); +- d->open("decompiler/test/script-30.dmp"); +- d->disassemble(); +- delete d; +- ControlFlow *c = new ControlFlow(insts, engine); +- c->createGroups(); +- Graph g = c->analyze(); +- onullstream ns; +- CodeGenerator *cg = engine->getCodeGenerator(ns); +- cg->generate(g); +- +- VertexIterator v = boost::vertices(g).first; +- GroupPtr gr = GET(*v); +- // Find first node +- while (gr->_prev != NULL) +- gr = gr->_prev; +- // Find vertex to test +- while ((*gr->_start)->_address != 0x91) +- gr = gr->_next; +- +- TS_ASSERT(gr->_code.size() == 2); +- TS_ASSERT(removeSpaces(gr->_code[0]._line).compare("}else{") == 0); +- TS_ASSERT(removeSpaces(gr->_code[1]._line).substr(0, 2).compare("if") == 0); +- +- delete cg; +- delete c; +- delete engine; +- +- insts.clear(); +- engine = new Scumm::v6::Scummv6Engine(); +- d = engine->getDisassembler(insts); +- d->open("decompiler/test/script-48.dmp"); +- d->disassemble(); +- delete d; +- c = new ControlFlow(insts, engine); +- c->createGroups(); +- g = c->analyze(); +- cg = engine->getCodeGenerator(ns); +- cg->generate(g); +- +- v = boost::vertices(g).first; +- gr = GET(*v); +- // Find first node +- while (gr->_prev != NULL) +- gr = gr->_prev; +- // Find vertex to test +- while ((*gr->_start)->_address != 0x191) +- gr = gr->_next; +- +- TS_ASSERT(gr->_code.size() == 1); +- TS_ASSERT(removeSpaces(gr->_code[0]._line).substr(0, 7).compare("}elseif") == 0); +- +- delete cg; +- delete c; +- delete engine; +- } +- +- // This test requires _START04.EMC from the CD demo of +- // Legend of Kyrandia: Hand of Fate, found in MISC_EMC.PAK. +- // Extract using extract_kyra from the scummvm-tools-cli bundle. +- // ba2821ac6da96394ce0af75a3cbe48eb *_START04.EMC +- void testKyra2Start04CodeGen() { +- InstVec insts; +- Kyra::Kyra2Engine *engine = new Kyra::Kyra2Engine(); +- Disassembler *d = engine->getDisassembler(insts); +- d->open("decompiler/test/_START04.EMC"); +- d->disassemble(); +- delete d; +- ControlFlow *c = new ControlFlow(insts, engine); +- c->createGroups(); +- Graph g = c->analyze(); +- engine->postCFG(insts, g); +- onullstream ns; +- CodeGenerator *cg = engine->getCodeGenerator(ns); +- cg->generate(g); +- +- VertexIterator v = boost::vertices(g).first; +- std::vector<std::string> output, expected; +- expected.push_back("auto_sub0x278(param1, param2, param3, param4) {"); +- expected.push_back("if (var1 > param1 && var1 < param3 && var2 > param2 && var2 < param4) {"); +- expected.push_back("retval = o1_queryGameFlag(3);"); +- expected.push_back("if (retval) {"); +- expected.push_back("retval = o2_drawBox(param1, param2, param3, param4, 199);"); +- expected.push_back("}"); +- expected.push_back("retval = 1;"); +- expected.push_back("return;"); +- expected.push_back("}"); +- expected.push_back("retval = o1_queryGameFlag(3);"); +- expected.push_back("if (retval) {"); +- expected.push_back("retval = o2_drawBox(param1, param2, param3, param4, 132);"); +- expected.push_back("}"); +- expected.push_back("retval = 0;"); +- expected.push_back("return;"); +- expected.push_back("}"); +- +- GroupPtr gr = GET(*v); +- // Find first node +- while (gr->_prev != NULL) +- gr = gr->_prev; +- +- // Find right starting node +- while ((*gr->_start)->_address != 0x278) +- gr = gr->_next; +- +- // Copy out all lines of code from function +- while ((*gr->_start)->_address <= 0x2DC) { +- for (std::vector<CodeLine>::iterator it = gr->_code.begin(); it != gr->_code.end(); ++it) { +- if (it->_line.compare("") != 0) +- output.push_back(it->_line); +- } +- gr = gr->_next; +- } +- TS_ASSERT(output.size() == expected.size()); +- CodeIterator it, it2; +- for (it = output.begin(), it2 = expected.begin(); it != output.end() && it2 != expected.end(); ++it, ++it2) { +- TS_ASSERT(removeSpaces(*it).compare(removeSpaces(*it2)) == 0); +- } +- +- delete cg; +- delete c; +- delete engine; +- } + }; diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..94d8f3e --- /dev/null +++ b/debian/rules @@ -0,0 +1,21 @@ +#!/usr/bin/make -f + +export DEB_BUILD_MAINT_OPTIONS = hardening=+all + +%: + dh $@ --with autotools_dev + +override_dh_auto_clean: + [ ! -f config.mk ] || dh_auto_clean + +override_dh_auto_configure: + ./configure \ + --prefix=/usr \ + --bindir=/usr/games \ + --datadir=/usr/share/games \ + --mandir=/usr/share/man \ + --libdir=/usr/lib/x86_64-linux-gnu \ + --enable-verbose-build + +override_dh_installchangelogs: + dh_installchangelogs NEWS diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..39731d4 --- /dev/null +++ b/debian/watch @@ -0,0 +1,4 @@ +version=4 +opts="dirversionmangle=s/rc/~rc/" \ + http://www.scummvm.org/frs/scummvm-tools/([\d+\.]+)/ \ + @PACKAGE@@ANY_VERSION@@ARCHIVE_EXT@ debian uupdate -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/scummvm-tools.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

