forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/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
							 |