@@ -1681,21 +1681,11 @@ private void initializePosixSupport() {
1681
1681
private TruffleString langHome , sysPrefix , basePrefix , coreHome , capiHome , jniHome , stdLibHome ;
1682
1682
1683
1683
public void initializeHomeAndPrefixPaths (Env newEnv , String languageHome ) {
1684
- sysPrefix = newEnv .getOptions ().get (PythonOptions .SysPrefix );
1685
- basePrefix = newEnv .getOptions ().get (PythonOptions .SysBasePrefix );
1686
- coreHome = newEnv .getOptions ().get (PythonOptions .CoreHome );
1687
- stdLibHome = newEnv .getOptions ().get (PythonOptions .StdLibHome );
1688
- capiHome = newEnv .getOptions ().get (PythonOptions .CAPI );
1689
- jniHome = newEnv .getOptions ().get (PythonOptions .JNIHome );
1690
-
1691
- Python3Core .writeInfo (() -> MessageFormat .format ("Initial locations:" +
1692
- "\n \t Language home: {0}" +
1693
- "\n \t SysPrefix: {1}" +
1694
- "\n \t BaseSysPrefix: {2}" +
1695
- "\n \t CoreHome: {3}" +
1696
- "\n \t StdLibHome: {4}" +
1697
- "\n \t CAPI: {5}" +
1698
- "\n \t JNI library: {6}" , languageHome , sysPrefix , basePrefix , coreHome , stdLibHome , capiHome , jniHome ));
1684
+ if (ImageInfo .inImageBuildtimeCode ()) {
1685
+ // at buildtime we do not need these paths to be valid, since all boot files are frozen
1686
+ basePrefix = sysPrefix = langHome = coreHome = stdLibHome = capiHome = jniHome = T_DOT ;
1687
+ return ;
1688
+ }
1699
1689
1700
1690
String pythonHome = newEnv .getOptions ().get (PythonOptions .PythonHome );
1701
1691
if (pythonHome .isEmpty ()) {
@@ -1726,7 +1716,7 @@ public void initializeHomeAndPrefixPaths(Env newEnv, String languageHome) {
1726
1716
return home ;
1727
1717
},
1728
1718
() -> {
1729
- if (PythonLanguage .PYTHON_RESOURCE_CLASS != null ) {
1719
+ if (PythonLanguage .PYTHON_RESOURCE_CLASS != null && ! ImageInfo . inImageCode () ) {
1730
1720
try {
1731
1721
return newEnv .getInternalResource (PythonLanguage .PYTHON_RESOURCE_CLASS ).getAbsoluteFile ();
1732
1722
} catch (IOException e ) {
@@ -1741,8 +1731,24 @@ public void initializeHomeAndPrefixPaths(Env newEnv, String languageHome) {
1741
1731
if (homeCandidate == null ) {
1742
1732
continue ;
1743
1733
}
1734
+ sysPrefix = newEnv .getOptions ().get (PythonOptions .SysPrefix );
1735
+ basePrefix = newEnv .getOptions ().get (PythonOptions .SysBasePrefix );
1736
+ coreHome = newEnv .getOptions ().get (PythonOptions .CoreHome );
1737
+ stdLibHome = newEnv .getOptions ().get (PythonOptions .StdLibHome );
1738
+ capiHome = newEnv .getOptions ().get (PythonOptions .CAPI );
1739
+ jniHome = newEnv .getOptions ().get (PythonOptions .JNIHome );
1744
1740
boolean homeSeemsValid = !coreHome .isEmpty () && !stdLibHome .isEmpty ();
1745
1741
1742
+ Python3Core .writeInfo (() -> MessageFormat .format ("Initial locations:" +
1743
+ "\n \t Language home: {0}" +
1744
+ "\n \t SysPrefix: {1}" +
1745
+ "\n \t BaseSysPrefix: {2}" +
1746
+ "\n \t CoreHome: {3}" +
1747
+ "\n \t StdLibHome: {4}" +
1748
+ "\n \t CAPI: {5}" +
1749
+ "\n \t JNI library: {6}" +
1750
+ "\n \t Home candidate: {7}" , languageHome , sysPrefix , basePrefix , coreHome , stdLibHome , capiHome , jniHome , homeCandidate .toString ()));
1751
+
1746
1752
langHome = toTruffleStringUncached (homeCandidate .toString ());
1747
1753
if (sysPrefix .isEmpty ()) {
1748
1754
sysPrefix = toTruffleStringUncached (homeCandidate .getAbsoluteFile ().getPath ());
@@ -1814,31 +1820,7 @@ public void initializeHomeAndPrefixPaths(Env newEnv, String languageHome) {
1814
1820
1815
1821
if (homeSeemsValid ) {
1816
1822
break ;
1817
- } else {
1818
- // reset values
1819
- sysPrefix = newEnv .getOptions ().get (PythonOptions .SysPrefix );
1820
- basePrefix = newEnv .getOptions ().get (PythonOptions .SysBasePrefix );
1821
- coreHome = newEnv .getOptions ().get (PythonOptions .CoreHome );
1822
- stdLibHome = newEnv .getOptions ().get (PythonOptions .StdLibHome );
1823
- capiHome = newEnv .getOptions ().get (PythonOptions .CAPI );
1824
- jniHome = newEnv .getOptions ().get (PythonOptions .JNIHome );
1825
- }
1826
- }
1827
-
1828
- if (ImageInfo .inImageBuildtimeCode ()) {
1829
- // use relative paths at buildtime to avoid freezing buildsystem paths
1830
- TruffleFile base = newEnv .getInternalTruffleFile (basePrefix .toJavaStringUncached ()).getAbsoluteFile ();
1831
- newEnv .setCurrentWorkingDirectory (base );
1832
- basePrefix = T_DOT ;
1833
- sysPrefix = toTruffleStringUncached (base .relativize (newEnv .getInternalTruffleFile (sysPrefix .toJavaStringUncached ())).getPath ());
1834
- if (sysPrefix .isEmpty ()) {
1835
- sysPrefix = T_DOT ;
1836
1823
}
1837
- langHome = toTruffleStringUncached (base .relativize (newEnv .getInternalTruffleFile (langHome .toJavaStringUncached ())).getPath ());
1838
- coreHome = toTruffleStringUncached (base .relativize (newEnv .getInternalTruffleFile (coreHome .toJavaStringUncached ())).getPath ());
1839
- stdLibHome = toTruffleStringUncached (base .relativize (newEnv .getInternalTruffleFile (stdLibHome .toJavaStringUncached ())).getPath ());
1840
- capiHome = toTruffleStringUncached (base .relativize (newEnv .getInternalTruffleFile (capiHome .toJavaStringUncached ())).getPath ());
1841
- jniHome = toTruffleStringUncached (base .relativize (newEnv .getInternalTruffleFile (jniHome .toJavaStringUncached ())).getPath ());
1842
1824
}
1843
1825
1844
1826
Python3Core .writeInfo (() -> MessageFormat .format ("Updated locations:" +
0 commit comments