[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] [PATCH 14/15] tooling: Introduce a new package for tool
From: |
Holger Hans Peter Freyther |
Subject: |
[Help-smalltalk] [PATCH 14/15] tooling: Introduce a new package for tooling helpers |
Date: |
Mon, 8 Apr 2013 11:30:30 +0200 |
This will hold non UI tools to help with tooling. This can be linters,
the converter, package related tools. Beging with moving parts of the
gst-convert code into this package.
2013-03-30 Holger Hans Peter Freyther <address@hidden>
* configure.ac: Introduce the Tooling package.
2013-03-30 Holger Hans Peter Freyther <address@hidden>
* Makefile.frag: Added.
* Parser/EmittedClass.st: Added from scripts/Convert.st.
* Parser/EmittedComments.st: Added from scripts/Convert.st.
* Parser/EmittedEntity.st: Added from scripts/Convert.st.
* Parser/EmittedEval.st: Added from scripts/Convert.st.
* Parser/Loader.st: Added from scripts/Convert.st.
* README: Added.
* TODO: Added.
* package.xml: Added.
---
.gitignore | 1 +
ChangeLog | 4 +
configure.ac | 1 +
packages/tooling/ChangeLog | 11 ++
packages/tooling/Makefile.frag | 5 +
packages/tooling/Parser/EmittedClass.st | 85 ++++++++++
packages/tooling/Parser/EmittedComments.st | 51 ++++++
packages/tooling/Parser/EmittedEntity.st | 39 +++++
packages/tooling/Parser/EmittedEval.st | 72 +++++++++
packages/tooling/Parser/Loader.st | 235 ++++++++++++++++++++++++++++
packages/tooling/README | 2 +
packages/tooling/TODO | 2 +
packages/tooling/package.xml | 11 ++
13 files changed, 519 insertions(+)
create mode 100644 packages/tooling/ChangeLog
create mode 100644 packages/tooling/Makefile.frag
create mode 100644 packages/tooling/Parser/EmittedClass.st
create mode 100644 packages/tooling/Parser/EmittedComments.st
create mode 100644 packages/tooling/Parser/EmittedEntity.st
create mode 100644 packages/tooling/Parser/EmittedEval.st
create mode 100644 packages/tooling/Parser/Loader.st
create mode 100644 packages/tooling/README
create mode 100644 packages/tooling/TODO
create mode 100644 packages/tooling/package.xml
diff --git a/.gitignore b/.gitignore
index d7a3ac0..dc2aca2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,6 +69,7 @@ packages/i18n/ref-add.sed
packages/i18n/ref-del.sed
packages/net/gnutls-wrapper
packages/object-dumper/stamp-classes
+packages/tooling/stamp-classes
snprintfv/snprintfv/compat.stamp
tests/gst.im
diff --git a/ChangeLog b/ChangeLog
index aa767b8..f162b3d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2013-03-30 Holger Hans Peter Freyther <address@hidden>
+ * configure.ac: Introduce the Tooling package.
+
+2013-03-30 Holger Hans Peter Freyther <address@hidden>
+
* configure.ac: Introduce the GTKTools package
2013-03-31 Holger Hans Peter Freyther <address@hidden>
diff --git a/configure.ac b/configure.ac
index c447b1c..e6ef587 100644
--- a/configure.ac
+++ b/configure.ac
@@ -586,6 +586,7 @@ GST_PACKAGE_ENABLE([Sport], [sport])
GST_PACKAGE_ENABLE([SUnit], [sunit])
GST_PACKAGE_ENABLE([Swazoo], [swazoo-httpd])
GST_PACKAGE_ENABLE([Sockets], [sockets], [], [gst_cv_sockets])
+GST_PACKAGE_ENABLE([Tooling], [tooling])
GST_PACKAGE_ENABLE([VFSAddOns], [vfs], [], [], [Makefile])
GST_PACKAGE_ENABLE([GTKTools], [gtktools])
GST_PACKAGE_ENABLE([GTKTools-Example-Clock], [gtktools/Examples/Clock])
diff --git a/packages/tooling/ChangeLog b/packages/tooling/ChangeLog
new file mode 100644
index 0000000..8c85f31
--- /dev/null
+++ b/packages/tooling/ChangeLog
@@ -0,0 +1,11 @@
+2013-03-30 Holger Hans Peter Freyther <address@hidden>
+
+ * Makefile.frag: Added.
+ * Parser/EmittedClass.st: Added from scripts/Convert.st.
+ * Parser/EmittedComments.st: Added from scripts/Convert.st.
+ * Parser/EmittedEntity.st: Added from scripts/Convert.st.
+ * Parser/EmittedEval.st: Added from scripts/Convert.st.
+ * Parser/Loader.st: Added from scripts/Convert.st.
+ * README: Added.
+ * TODO: Added.
+ * package.xml: Added.
diff --git a/packages/tooling/Makefile.frag b/packages/tooling/Makefile.frag
new file mode 100644
index 0000000..01d8d86
--- /dev/null
+++ b/packages/tooling/Makefile.frag
@@ -0,0 +1,5 @@
+Tooling_FILES = \
+packages/tooling/Parser/EmittedEntity.st
packages/tooling/Parser/EmittedClass.st
packages/tooling/Parser/EmittedComments.st
packages/tooling/Parser/EmittedEval.st packages/tooling/Parser/Loader.st
packages/tooling/Lint/Monticello.st
+$(Tooling_FILES):
+$(srcdir)/packages/tooling/stamp-classes: $(Tooling_FILES)
+ touch $(srcdir)/packages/tooling/stamp-classes
diff --git a/packages/tooling/Parser/EmittedClass.st
b/packages/tooling/Parser/EmittedClass.st
new file mode 100644
index 0000000..9a2cb13
--- /dev/null
+++ b/packages/tooling/Parser/EmittedClass.st
@@ -0,0 +1,85 @@
+"======================================================================
+|
+| Smalltalk syntax conversion tool
+|
+|
+ ======================================================================"
+
+
+"======================================================================
+|
+| Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
+| Written by Daniele Sciascia.
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library 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 Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+EmittedEntity subclass: EmittedClass [
+ | class methodsToEmit classMethodsToEmit isComplete |
+
+ <category: 'Tooling-Parser-Core'>
+ <comment: 'This class is responsible for emitting a class
+ by using a FormattingExporter.'>
+
+ EmittedClass class >> forClass: aClass [
+ (aClass superclass notNil and: [
+ aClass superclass isDefined not ]) ifTrue: [
+ Warning signal:
+ ('superclass %1 is undefined' % {aClass superclass}) ].
+ ^super new initializeWithClass: aClass complete: true
+ ]
+
+ EmittedClass class >> forExtension: aClass [
+ aClass isDefined ifFalse: [
+ Warning signal:
+ ('extensions for undefined class %1' % {aClass}) ].
+ ^super new initializeWithClass: aClass complete: false
+ ]
+
+ initializeWithClass: aClass complete: aBoolean [
+ class := aClass.
+ methodsToEmit := STInST.OrderedSet new.
+ classMethodsToEmit := STInST.OrderedSet new.
+ isComplete := aBoolean
+ ]
+
+ forClass [
+ ^class
+ ]
+
+ addMethod: aMethod [
+ methodsToEmit add: aMethod selector asSymbol.
+ ]
+
+ addClassMethod: aMethod [
+ classMethodsToEmit add: aMethod selector asSymbol.
+ ]
+
+ emitTo: aStream filteredBy: aBlock [
+ (aBlock value: class)
+ ifFalse: [
+ Notification signal: ('Skipping %1' % {class}).
+ ^self ].
+
+ Notification signal: ('Converting %1...' % {class}).
+ (STInST.FileOutExporter defaultExporter on: class to: aStream)
+ completeFileOut: isComplete;
+ fileOutSelectors: methodsToEmit classSelectors: classMethodsToEmit.
+ ]
+]
diff --git a/packages/tooling/Parser/EmittedComments.st
b/packages/tooling/Parser/EmittedComments.st
new file mode 100644
index 0000000..fb09552
--- /dev/null
+++ b/packages/tooling/Parser/EmittedComments.st
@@ -0,0 +1,51 @@
+"======================================================================
+|
+| Smalltalk syntax conversion tool
+|
+|
+ ======================================================================"
+
+
+"======================================================================
+|
+| Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
+| Written by Daniele Sciascia.
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library 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 Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+EmittedEntity subclass: EmittedComments [
+ | comments |
+ <category: 'Tooling-Parser-Core'>
+
+ EmittedComments class >> comments: aCollection source: aString [
+ ^self new comments: (aCollection collect: [ :c |
+ aString copyFrom: c first to: c last ])
+ ]
+
+ emitTo: outStream filteredBy: aBlock [
+ comments do: [ :c |
+ STInST.FileOutExporter defaultExporter fileOutComment: c to:
outStream.
+ outStream nl; nl]
+ ]
+
+ comments: anArray [
+ comments := anArray
+ ]
+]
diff --git a/packages/tooling/Parser/EmittedEntity.st
b/packages/tooling/Parser/EmittedEntity.st
new file mode 100644
index 0000000..aeb6928
--- /dev/null
+++ b/packages/tooling/Parser/EmittedEntity.st
@@ -0,0 +1,39 @@
+"======================================================================
+|
+| Parsing helper routines
+|
+|
+ ======================================================================"
+
+
+"======================================================================
+|
+| Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
+| Written by Daniele Sciascia.
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library 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 Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+Object subclass: EmittedEntity [
+ <category: 'Tooling-Parser-Core'>
+
+ emitTo: aStream filteredBy: aBlock [
+ self subclassResponsibility
+ ]
+]
diff --git a/packages/tooling/Parser/EmittedEval.st
b/packages/tooling/Parser/EmittedEval.st
new file mode 100644
index 0000000..2b82158
--- /dev/null
+++ b/packages/tooling/Parser/EmittedEval.st
@@ -0,0 +1,72 @@
+"======================================================================
+|
+| Smalltalk syntax conversion tool
+|
+|
+ ======================================================================"
+
+
+"======================================================================
+|
+| Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
+| Written by Daniele Sciascia.
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library 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 Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+EmittedEntity subclass: EmittedEval [
+ | statements comments namespace |
+
+ <category: 'Tooling-Parser-Core'>
+ <comment: 'This class is responsible for emitting a set of
+ statements that should be inside an Eval declaration.'>
+
+ EmittedEval class >> new [
+ ^super new initialize
+ ]
+
+ initialize [
+ statements := OrderedCollection new
+ ]
+
+ namespace [
+ ^namespace
+ ]
+
+ namespace: aNamespace [
+ namespace := aNamespace
+ ]
+
+ addStatement: aStatement [
+ statements add: aStatement
+ ]
+
+ emitTo: aStream filteredBy: aBlock [
+ statements isEmpty ifTrue: [ ^self ].
+ STInST.FileOutExporter defaultExporter
+ emitEval: [
+ | formatter |
+ formatter := STInST.RBFormatter new.
+ formatter indent: 1 while: [
+ formatter indent.
+ aStream nextPutAll: (formatter formatAll: statements) ]]
+ to: aStream
+ for: namespace.
+ ]
+]
diff --git a/packages/tooling/Parser/Loader.st
b/packages/tooling/Parser/Loader.st
new file mode 100644
index 0000000..6b64301
--- /dev/null
+++ b/packages/tooling/Parser/Loader.st
@@ -0,0 +1,235 @@
+"======================================================================
+|
+| Smalltalk syntax conversion tool
+|
+|
+ ======================================================================"
+
+
+"======================================================================
+|
+| Copyright 2007, 2008, 2009 Free Software Foundation, Inc.
+| Written by Daniele Sciascia.
+|
+| This file is part of the GNU Smalltalk class library.
+|
+| The GNU Smalltalk class library is free software; you can redistribute it
+| and/or modify it under the terms of the GNU Lesser General Public License
+| as published by the Free Software Foundation; either version 2.1, or (at
+| your option) any later version.
+|
+| The GNU Smalltalk class library 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 Lesser General Public License
+| along with the GNU Smalltalk class library; see the file COPYING.LIB.
+| If not, write to the Free Software Foundation, 59 Temple Place - Suite
+| 330, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+STInST.STClassLoader subclass: Loader [
+ | stuffToEmit classesToEmit createdNamespaces filter outStream rewriter |
+
+ <category: 'Tooling-Parser-Core'>
+ <comment: 'A class loader that creates a set of "EmittedEntity"
+ based on the contents of the given file being loaded.
+ When the contents of the file are loaded, the responsibilty of
+ emitting code using the new syntax belongs to those various
+ entities that have been constructed.
+
+ TODO: Split the loading and converting'>
+
+
+ Loader class >> convertSqueakStream: in to: out [
+ <category: 'instance creation'>
+ ^self convertStream: in with: STInST.SqueakFileInParser to: out
+ ]
+
+ Loader class >> convertSIFStream: in to: out [
+ <category: 'instance creation'>
+ ^self convertStream: in with: STInST.SIFFileInParser to: out
+ ]
+
+ Loader class >> convertStream: in to: out [
+ <category: 'instance creation'>
+ ^self convertStream: in with: STInST.STFileInParser to: out
+ ]
+
+ Loader class >> convertStream: in with: aParserClass to: out [
+ <category: 'instance creation'>
+ ^self new convertStream: in with: aParserClass to: out
+ ]
+
+ initialize [
+ <category: 'initialization'>
+ super initialize.
+ filter := [ :class | [true] ].
+ stuffToEmit := OrderedSet new.
+ classesToEmit := Dictionary new.
+ createdNamespaces := OrderedSet new.
+ ]
+
+ convertStream: in with: aParserClass to: out onError: aBlock [
+ <category: 'operation'>
+ self
+ outStream: out;
+ parseSmalltalkStream: in with: aParserClass onError: aBlock;
+ doEmitStuff.
+ ]
+
+ convertStream: in with: aParserClass to: out [
+ <category: 'operation'>
+ self
+ outStream: out;
+ parseSmalltalkStream: in with: aParserClass;
+ doEmitStuff.
+ ]
+
+ filter: aBlock [
+ <category: 'accessing'>
+ filter := aBlock.
+ ]
+
+ outStream: out [
+ <category: 'accessing'>
+ outStream := out.
+ ]
+
+ rewrite: node [
+ ^rewriter isNil
+ ifTrue: [ node ]
+ ifFalse: [ rewriter executeTree: node; tree ].
+ ]
+
+ evaluate: node [
+ <category: 'overrides'>
+
+ | rewritten |
+ rewritten := self rewrite: node.
+ node comments isEmpty ifFalse: [
+ stuffToEmit add: (EmittedComments comments: node comments source:
node source) ].
+
+ ^super evaluate: rewritten
+ ]
+
+ addRule: searchString parser: aParserClass [
+ | tree rule |
+ tree := aParserClass parseRewriteExpression: searchString.
+ tree isMessage ifFalse: [ self error: 'expected ->' ].
+ tree selector = #-> ifFalse: [ self error: 'expected ->' ].
+ rule := RBStringReplaceRule
+ searchForTree: tree receiver
+ replaceWith: tree arguments first.
+
+ rewriter isNil ifTrue: [ rewriter := ParseTreeRewriter new ].
+ rewriter addRule: rule
+ ]
+
+ compile: node [
+ <category: 'collecting entities'>
+
+ | rewritten method |
+
+ rewritten := self rewrite: node.
+ method := self defineMethod: rewritten.
+ (classesToEmit includesKey: currentClass asClass)
+ ifTrue: [ self addMethod: method toLoadedClass: currentClass ]
+ ifFalse: [ self addMethod: method toExtensionClass: currentClass ].
+ ^method
+ ]
+
+ lastEval [
+ <category: 'collecting entities'>
+
+ | lastIsEval evalNamespace |
+
+ evalNamespace := currentNamespace = self defaultNamespace
+ ifTrue: [ nil ]
+ ifFalse: [ currentNamespace ].
+
+ lastIsEval := stuffToEmit notEmpty
+ and: [ (stuffToEmit last isKindOf: EmittedEval)
+ and: [ stuffToEmit last namespace = evalNamespace ]].
+
+ ^lastIsEval
+ ifTrue: [ stuffToEmit last ]
+ ifFalse: [ stuffToEmit add: (EmittedEval new namespace:
evalNamespace) ]
+ ]
+
+ createNamespaces [
+ createdNamespaces do: [ :each || stmt |
+ stmt := RBMessageNode
+ receiver: (RBVariableNode named: (each superspace nameIn: self
currentNamespace))
+ selector: #addSubspace:
+ arguments: { RBLiteralNode value: each name asSymbol }.
+ self lastEval addStatement: stmt
+ ].
+ createdNamespaces := OrderedSet new
+ ]
+
+ unknown: node [
+ <category: 'collecting entities'>
+
+ self createNamespaces.
+ self lastEval addStatement: node.
+ ^false
+ ]
+
+ doSubclass: receiver selector: selector arguments: argumentNodes [
+ <category: 'evaluating statements'>
+
+ | class emittedClass |
+
+ createdNamespaces remove: self currentNamespace ifAbsent: [ ].
+ self createNamespaces.
+
+ class := super defineSubclass: receiver
+ selector: selector
+ arguments: argumentNodes.
+
+ Notification signal: ('Parsing %1' % {class}).
+ emittedClass := EmittedClass forClass: class.
+
+ classesToEmit at: class put: emittedClass.
+ stuffToEmit add: emittedClass.
+
+ ^false
+ ]
+
+ doAddNamespace: receiver selector: selector arguments: argumentNodes [
+ | ns |
+ super doAddNamespace: receiver selector: selector arguments:
argumentNodes.
+
+ ns := (self resolveNamespace: receiver) at: argumentNodes first value.
+ createdNamespaces add: ns.
+ ^false
+ ]
+
+ doEmitStuff [
+ <category: 'emitting'>
+
+ stuffToEmit
+ do: [ :each | each emitTo: outStream filteredBy: filter ]
+ separatedBy: [ outStream nl; nextPut: 12 asCharacter; nl ].
+ ]
+
+ addMethod: aMethod toLoadedClass: aClass [
+ <category: 'collecting entities'>
+
+ (aClass isMetaclass)
+ ifTrue: [ (classesToEmit at: currentClass asClass) addClassMethod:
aMethod ]
+ ifFalse: [ (classesToEmit at: currentClass) addMethod: aMethod ]
+ ]
+
+ addMethod: aMethod toExtensionClass: aClass [
+ <category: 'collecting entities'>
+
+ ((stuffToEmit size > 0)
+ and: [ (stuffToEmit last isKindOf: EmittedClass) and: [
stuffToEmit last forClass = aClass ] ])
+ ifTrue: [ stuffToEmit last addMethod: aMethod ]
+ ifFalse: [ stuffToEmit add: ((EmittedClass forExtension:
currentClass) addMethod: aMethod) ]
+ ]
+]
diff --git a/packages/tooling/README b/packages/tooling/README
new file mode 100644
index 0000000..9c11254
--- /dev/null
+++ b/packages/tooling/README
@@ -0,0 +1,2 @@
+Random collection of tooling classes for GST. Used for import/export
+of GST to other dialects and the base for IDEs and similiar utilities.
diff --git a/packages/tooling/TODO b/packages/tooling/TODO
new file mode 100644
index 0000000..bc29fe6
--- /dev/null
+++ b/packages/tooling/TODO
@@ -0,0 +1,2 @@
+* Make the Loader have a Converter subclass and use a Visitor instead
+ of the calls to emitTo:.
diff --git a/packages/tooling/package.xml b/packages/tooling/package.xml
new file mode 100644
index 0000000..ff3c23f
--- /dev/null
+++ b/packages/tooling/package.xml
@@ -0,0 +1,11 @@
+<package>
+ <name>Tooling</name>
+ <namespace>Tooling</namespace>
+ <prereq>Parser</prereq>
+
+ <filein>Parser/EmittedEntity.st</filein>
+ <filein>Parser/EmittedClass.st</filein>
+ <filein>Parser/EmittedComments.st</filein>
+ <filein>Parser/EmittedEval.st</filein>
+ <filein>Parser/Loader.st</filein>
+</package>
--
1.7.10.4
- Re: [Help-smalltalk] [PATCH 05/15] kernel: Introduce the DirPackage packages to help with development, (continued)
- [Help-smalltalk] [PATCH 10/15] gtktools: Move GtkListModel from VisualGST to GTKTools, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 09/15] gtktools: Introduce a GTKTools package with helper classes, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 15/15] tooling: Introduce a helper for a Monticello export, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 11/15] gtktools: Move the GtkSideBarWidget from VisualGST to GTKTools, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 14/15] tooling: Introduce a new package for tooling helpers,
Holger Hans Peter Freyther <=
- [Help-smalltalk] [PATCH 12/15] gtktools: Move model classes from VisualGST to GTKTools, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 13/15] gtktools: Move the Clock/Tetris to the GTKTools, Holger Hans Peter Freyther, 2013/04/08
- Re: [Help-smalltalk] [PATCH 01/15] opcode: Remove the copy of the binutils code from the repository, Paolo Bonzini, 2013/04/14