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
 |