Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

20434-use-Ring2-during-the-bootstrap #294

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
28 changes: 23 additions & 5 deletions bootstrap/scripts/bootstrap.st
@@ -1,5 +1,5 @@
[
| options architecture |
| options architecture repository packageNames environment fetcher buildNumber bootstrap |

options := CommandLineArguments default.
architecture := options optionAt: 'ARCH' ifAbsent: [ '32' ].
Expand All @@ -13,10 +13,28 @@ FileStream stdout
nextPutAll: ('[INFO] Building Image Arch ', architecture);
cr.

bootstrap := PBBootstrap forArchitecture: architecture.
bootstrap buildNumber: buildNumber;
prepareBootstrap.

repository := MCFileTreeRepository new
directory: './src' asFileReference;
yourself.

(PBBootstrap forArchitecture: architecture)
buildNumber: buildNumber;
prepareBootstrap;
createImage
(repository versionWithInfo: (repository versionInfoFromVersionNamed: 'BaselineOfPharoBootstrap')) snapshot install.

packageNames := (#BaselineOfPharoBootstrap asClass kernelPackageNames).

environment := repository asRing2EnvironmentWith: packageNames.

environment fixProtoObjectClassSuperclass.
environment addGlobalsNamed: #(#Smalltalk #SourceFiles #Transcript #Undeclared #Display #TextConstants #Sensor #Processor #SystemOrganization).
environment clean.

fetcher := PBRing2GitFetcher new.
fetcher gitRepositoryUrl: 'git@github.com:pharo-project/pharo.git' location: '.' subdirectory: 'src'.
fetcher buildNumber: buildNumber.

environment bootstrapWith: fetcher architecture: architecture to: bootstrap imageReference.

] on: Warning do: #resume
54 changes: 20 additions & 34 deletions bootstrap/scripts/generateKernelHermesFiles.st
@@ -1,47 +1,33 @@
| toExport ftRepo environment rfienvironment |
| toExport repository packageNames environment |

Transcript nextPutAll: '[Hermes] - Loading BaselineOfPharoBootstrap'; cr.
ftRepo := MCFileTreeRepository new directory: 'src' asFileReference.
(ftRepo versionWithInfo: (ftRepo versionInfoFromVersionNamed: 'BaselineOfPharoBootstrap')) snapshot install.

Transcript nextPutAll: '[Hermes] - Generating Environment from repository'; cr.
toExport := #BaselineOfPharoBootstrap asClass compilerPackageNames.
environment := Dictionary new.
(#BaselineOfPharoBootstrap asClass kernelPackageNames),
toExport do: [ :name | | version |
version := FiMonticelloWriter new
written: (ftRepo versionWithInfo: (ftRepo versionInfoFromVersionNamed: name )) snapshot
name: name.
environment at: name ifAbsentPut: version.
].

rfienvironment := environment values asFiSet asRFiEnvironment.

Transcript nextPutAll: '[Hermes] - Creating Globals'; cr.
repository := MCFileTreeRepository new
directory: 'src' asFileReference;
yourself.
(repository versionWithInfo: (repository versionInfoFromVersionNamed: 'BaselineOfPharoBootstrap')) snapshot install.

"Required by OpalCompiler"
rfienvironment globalByName at: #Smalltalk put: nil.

"Required by CodeExport"
rfienvironment globalByName at: #UTF8TextConverter put: nil.
rfienvironment globalByName at: #MacRomanTextConverter put: nil.
rfienvironment globalByName at: #FileStream put: nil.
rfienvironment globalByName at: #FileSystem put: nil.
Transcript nextPutAll: '[Hermes] - Generating Environment from repository'; cr.

"Required by CodeImport"
rfienvironment globalByName at: #ChangeSet put: nil.
toExport := #BaselineOfPharoBootstrap asClass compilerPackageNames.

packageNames := #BaselineOfPharoBootstrap asClass kernelPackageNames, toExport.
environment := repository asRing2EnvironmentWith: packageNames.

environment fixProtoObjectClassSuperclass.
environment addGlobalsNamed: #(#Undeclared #Smalltalk #UTF8TextConverter #MacRomanTextConverter #FileStream ChangeSet Character).

toExport do: [ :name | | hePackage writer |
Transcript nextPutAll: ('[Hermes] - Exporting Package ' , name); cr.
environment clean.

hePackage := HERingToHermesBuilder new visitPackage: (rfienvironment packages detect: [ :p | p name = name ]).
toExport do: [ :packageName |
| oldPackage hePackage writer |
oldPackage := environment ask packageNamed: packageName.
hePackage := HERing2ToHermesBuilder new visitPackage: (oldPackage).
writer := HEBinaryReaderWriter new
stream: (File openForWriteFileNamed: 'bootstrap-cache/' , name, '.hermes');
stream: (File openForWriteFileNamed: 'bootstrap-cache/' , packageName, '.hermes');
yourself.
hePackage writeInto: writer.
writer flush.
writer close.
].
writer close. ].

Transcript nextPutAll: '[Hermes] - Done'; cr.
Transcript nextPutAll: '[Hermes] - Done'; cr.
54 changes: 20 additions & 34 deletions bootstrap/scripts/generateSUnitHermesFiles.st
@@ -1,47 +1,33 @@
| toExport ftRepo environment rfienvironment |
| toExport repository packageNames environment |

Transcript nextPutAll: '[Hermes] - Loading BaselineOfPharoBootstrap'; cr.
ftRepo := MCFileTreeRepository new directory: 'src' asFileReference.
(ftRepo versionWithInfo: (ftRepo versionInfoFromVersionNamed: 'BaselineOfPharoBootstrap')) snapshot install.

Transcript nextPutAll: '[Hermes] - Generating Environment from repository'; cr.
toExport := #BaselineOfPharoBootstrap asClass sUnitPackageNames.
environment := Dictionary new.
(#BaselineOfPharoBootstrap asClass kernelPackageNames),
toExport do: [ :name | | version |
version := FiMonticelloWriter new
written: (ftRepo versionWithInfo: (ftRepo versionInfoFromVersionNamed: name )) snapshot
name: name.
environment at: name ifAbsentPut: version.
].

rfienvironment := environment values asFiSet asRFiEnvironment.

Transcript nextPutAll: '[Hermes] - Creating Globals'; cr.
repository := MCFileTreeRepository new
directory: 'src' asFileReference;
yourself.
(repository versionWithInfo: (repository versionInfoFromVersionNamed: 'BaselineOfPharoBootstrap')) snapshot install.

"Required by OpalCompiler"
rfienvironment globalByName at: #Smalltalk put: nil.

"Required by CodeExport"
rfienvironment globalByName at: #UTF8TextConverter put: nil.
rfienvironment globalByName at: #MacRomanTextConverter put: nil.
rfienvironment globalByName at: #FileStream put: nil.
rfienvironment globalByName at: #FileSystem put: nil.
Transcript nextPutAll: '[Hermes] - Generating Environment from repository'; cr.

"Required by CodeImport"
rfienvironment globalByName at: #ChangeSet put: nil.
toExport := #BaselineOfPharoBootstrap asClass sUnitPackageNames.

packageNames := #BaselineOfPharoBootstrap asClass kernelPackageNames, toExport.
environment := repository asRing2EnvironmentWith: packageNames.

environment fixProtoObjectClassSuperclass.
environment addGlobalsNamed: #(#Undeclared #Smalltalk #UTF8TextConverter #MacRomanTextConverter #FileStream ChangeSet Character).

toExport do: [ :name | | hePackage writer |
Transcript nextPutAll: ('[Hermes] - Exporting Package ' , name); cr.
environment clean.

hePackage := HERingToHermesBuilder new visitPackage: (rfienvironment packages detect: [ :p | p name = name ]).
toExport do: [ :packageName |
| oldPackage hePackage writer |
oldPackage := environment ask packageNamed: packageName.
hePackage := HERing2ToHermesBuilder new visitPackage: (oldPackage).
writer := HEBinaryReaderWriter new
stream: (File openForWriteFileNamed: 'bootstrap-cache/' , name, '.hermes');
stream: (File openForWriteFileNamed: 'bootstrap-cache/' , packageName, '.hermes');
yourself.
hePackage writeInto: writer.
writer flush.
writer close.
].
writer close. ].

Transcript nextPutAll: '[Hermes] - Done'; cr.
Transcript nextPutAll: '[Hermes] - Done'; cr.
Expand Up @@ -8,4 +8,8 @@ baseline: spec
repository: 'github://tesonep/hermes:v2.1.0';
loads: 'ring' ].
spec
package: 'Pharo30Bootstrap' ]
package: 'Pharo30Bootstrap'.
spec baseline: 'Ring2' with: [ spec
repository: 'github://pavel-krivanek/Ring2:v1.0.0/src';
loads: 'bootstrap' ].
]