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 |