forked from sheetjs/docs.sheetjs.com
		
	
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# https://docs.sheetjs.com/docs/demos/engines/chakra
 | 
						|
 | 
						|
cd /tmp
 | 
						|
rm -rf sheetjs-chakra
 | 
						|
 | 
						|
mkdir sheetjs-chakra
 | 
						|
cd sheetjs-chakra
 | 
						|
 | 
						|
git clone https://github.com/chakra-core/ChakraCore.git
 | 
						|
cd ChakraCore
 | 
						|
git checkout e26c81f
 | 
						|
cd ..
 | 
						|
 | 
						|
cd ChakraCore
 | 
						|
 | 
						|
## in commit e26c81f in macOS 15.2, the build fails with the following error:
 | 
						|
##
 | 
						|
##/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/usr/include/c++/v1/new:279:66: error: redefinition of 'operator new'
 | 
						|
##  279 | _LIBCPP_NODISCARD_AFTER_CXX17 inline _LIBCPP_HIDE_FROM_ABI void* operator new(std::size_t, void* __p) _NOEXCEPT {
 | 
						|
##      |                                                                  ^
 | 
						|
##/tmp/sheetjs-chakra/ChakraCore/lib/Common/Memory/Allocator.h:457:1: note: previous definition is here
 | 
						|
##  457 | operator new(
 | 
						|
##      | ^
 | 
						|
##
 | 
						|
## This patch avoids the issues
 | 
						|
cat <<EOF >sheetjs.patch
 | 
						|
diff --git a/lib/Common/Memory/Allocator.h b/lib/Common/Memory/Allocator.h
 | 
						|
index 5a3a099bc..e05a7390f 100644
 | 
						|
--- a/lib/Common/Memory/Allocator.h
 | 
						|
+++ b/lib/Common/Memory/Allocator.h
 | 
						|
@@ -452,24 +452,7 @@ void AssertValue(void * mem, T value, uint byteCount)
 | 
						|
 #ifndef __PLACEMENT_NEW_INLINE
 | 
						|
 #define __PLACEMENT_NEW_INLINE
 | 
						|
 
 | 
						|
-_Ret_notnull_
 | 
						|
-NO_EXPORT(inline void *) __cdecl
 | 
						|
-operator new(
 | 
						|
-DECLSPEC_GUARD_OVERFLOW size_t byteSize,
 | 
						|
-_In_ void * previousAllocation) throw()
 | 
						|
-{
 | 
						|
-    return previousAllocation;
 | 
						|
-}
 | 
						|
-
 | 
						|
-
 | 
						|
-NO_EXPORT(inline void) __cdecl
 | 
						|
-operator delete(
 | 
						|
-void * allocationToFree,                // Allocation to free
 | 
						|
-void * previousAllocation               // Previously allocated memory
 | 
						|
-) throw()
 | 
						|
-{
 | 
						|
-
 | 
						|
-}
 | 
						|
+#include <new>
 | 
						|
 
 | 
						|
 #endif
 | 
						|
 
 | 
						|
EOF
 | 
						|
git apply sheetjs.patch
 | 
						|
./build.sh --static --icu=/usr/local/opt/icu4c/include --test-build -j=8 --no-jit
 | 
						|
cd ..
 | 
						|
 | 
						|
curl -L -O https://docs.sheetjs.com/chakra/sheetjs.ch.cpp
 | 
						|
curl -L -O https://docs.sheetjs.com/chakra/Makefile
 | 
						|
 | 
						|
make
 | 
						|
 | 
						|
curl -L -O https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js
 | 
						|
curl -L -O https://cdn.sheetjs.com/xlsx-latest/package/dist/shim.min.js
 | 
						|
curl -L -O https://docs.sheetjs.com/pres.numbers
 | 
						|
 | 
						|
./sheetjs.ch pres.numbers
 | 
						|
 | 
						|
cp ChakraCore/out/Test/ch .
 | 
						|
 | 
						|
node -e "fs.writeFileSync('payload.js', 'var payload = \"' + fs.readFileSync('pres.numbers').toString('base64') + '\";')"
 | 
						|
 | 
						|
cat <<EOF >global.js
 | 
						|
var global = (function(){ return this; }).call(null);
 | 
						|
EOF
 | 
						|
 | 
						|
cat <<EOF >chakra.js
 | 
						|
var wb = XLSX.read(payload, {type:'base64'});
 | 
						|
console.log(XLSX.utils.sheet_to_csv(wb.Sheets[wb.SheetNames[0]]));
 | 
						|
EOF
 | 
						|
 | 
						|
cat global.js xlsx.full.min.js payload.js chakra.js > xlsx.chakra.js
 | 
						|
 | 
						|
./ch xlsx.chakra.js
 |