From a4ad3195f5231c71ff03fe39bbb139c5b137db5b Mon Sep 17 00:00:00 2001 From: SheetJS Date: Wed, 15 Nov 2023 23:20:57 -0500 Subject: [PATCH] x64 --- docz/docs/03-demos/07-data/16-postgresql.md | 6 +- docz/docs/03-demos/32-extensions/10-stata.md | 134 ++++++++++++++++--- docz/docs/03-demos/42-engines/02-v8.md | 6 +- docz/docs/03-demos/42-engines/05-jint.md | 6 +- docz/docs/03-demos/42-engines/09-hermes.md | 34 ++++- docz/docs/03-demos/42-engines/15-rb.md | 2 +- docz/docs/03-demos/42-engines/index.md | 5 +- docz/static/hermes/Makefile | 4 +- 8 files changed, 164 insertions(+), 33 deletions(-) diff --git a/docz/docs/03-demos/07-data/16-postgresql.md b/docz/docs/03-demos/07-data/16-postgresql.md index 8bc8eee..2c968df 100644 --- a/docz/docs/03-demos/07-data/16-postgresql.md +++ b/docz/docs/03-demos/07-data/16-postgresql.md @@ -17,8 +17,8 @@ an open source object-relational database system. data from spreadsheets. This demo uses SheetJS to exchange data between spreadsheets and PostgreSQL -databases. We'll explore how to use save tables from a database to spreadsheets -and how to add data from spreadsheets into a database. +databases. We'll explore how to save tables from a database to spreadsheets and +how to add data from spreadsheets into a database. :::caution pass @@ -215,7 +215,7 @@ On macOS, install the `postgresql` formula with Homebrew: brew install postgresql@16 ``` -The last few lines of the installer explains how to start the database: +The last few lines of the installer explain how to start the database: ```text Or, if you don't want/need a background service you can just run: diff --git a/docz/docs/03-demos/32-extensions/10-stata.md b/docz/docs/03-demos/32-extensions/10-stata.md index fc304b2..35b8b43 100644 --- a/docz/docs/03-demos/32-extensions/10-stata.md +++ b/docz/docs/03-demos/32-extensions/10-stata.md @@ -6,6 +6,8 @@ pagination_next: demos/bigdata/index --- import current from '/version.js'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; import CodeBlock from '@theme/CodeBlock'; export const b = {style: {color:"blue"}}; @@ -44,7 +46,7 @@ This demo covers Stata extensions. For directly processing Stata DTA files, the :::note Tested Deployments -This demo was last tested by SheetJS users on 2023 November 05. +This demo was last tested by SheetJS users on 2023 November 15. ::: @@ -120,8 +122,8 @@ can be loaded in Duktape by reading the source from the filesystem. :::info pass -This demo was tested in Windows x64. The path names and build commands will -differ in other platforms and operating systems. +This demo was tested in Windows x64 and macOS x64. The path names and build +commands will differ in other platforms and operating systems. ::: @@ -137,6 +139,33 @@ import excel "sheetjs.tmp.xlsx", firstrow ### Create Plugin + + + +0) Ensure a compatible C compiler (Xcode on macOS) is installed. + +1) Open Stata and run the following command: + +```stata +pwd +``` + +The output will be the default data directory. On macOS this is typically +`~/Documents/Stata` + +2) Open a terminal window and create a project folder `sheetjs-stata` within the +Stata data directory: + +```bash +# `cd` to the Stata data directory +cd ~/Documents/Stata +mkdir sheetjs-stata +cd sheetjs-stata +``` + + + + 0) Ensure "Windows Subsystem for Linux" (WSL) and Visual Studio are installed. 1) Open a new "x64 Native Tools Command Prompt" window and create a project @@ -154,6 +183,9 @@ cd sheetjs-stata bash ``` + + + 3) Download [`stplugin.c`](https://www.stata.com/plugins/stplugin.c) and [`stplugin.h`](https://www.stata.com/plugins/stplugin.h) from the Stata website: @@ -162,7 +194,8 @@ curl -LO https://www.stata.com/plugins/stplugin.c curl -LO https://www.stata.com/plugins/stplugin.h ``` -4) Still within WSL, install Duktape: +4) Download Duktape. In Windows, the following commands should be run in WSL. In +macOS, the commands should be run in the same Terminal session. ```bash curl -LO https://duktape.org/duktape-2.7.0.tar.xz @@ -170,13 +203,29 @@ tar -xJf duktape-2.7.0.tar.xz mv duktape-2.7.0/src/*.{c,h} . ``` -5) Still within WSL, download the demo source -[`cleanfile.c`](https://docs.sheetjs.com/stata/cleanfile.c): +5) Download [`cleanfile.c`](https://docs.sheetjs.com/stata/cleanfile.c). + +In Windows, the following commands should be run in WSL. In macOS, the commands +should be run in the same Terminal session. ```bash curl -LO https://docs.sheetjs.com/stata/cleanfile.c ``` + + + +6) Observe that macOS does not need a "Linux Subsystem" and move to Step 7. + +7) Build the plugin: + +```bash +gcc -shared -fPIC -DSYSTEM=APPLEMAC stplugin.c duktape.c cleanfile.c -lm -std=c99 -Wall -ocleanfile.plugin +``` + + + + 6) Exit WSL: ```bash @@ -191,8 +240,23 @@ The window will return to the command prompt. cl /LD cleanfile.c stplugin.c duktape.c ``` + + + ### Install Plugin + + + +8) Copy the plugin to the Stata data directory: + +```bash +cp cleanfile.plugin ../ +``` + + + + 8) Copy the DLL to `cleanfile.plugin` in the Stata data directory. For example, with a shared data directory `c:\data`: @@ -201,9 +265,26 @@ mkdir c:\data copy cleanfile.dll c:\data\cleanfile.plugin ``` + + + ### Download SheetJS Scripts -9) Move to the `c:\data` directory + + + +9) Move to the Stata data directory: + +```bash +cd .. +``` + +10) Observe that macOS does not need a "Linux Subsystem" and move to Step 11. + + + + +9) Move to the `c:\data` directory: ```powershell cd c:\data @@ -215,7 +296,13 @@ cd c:\data bash ``` -11) Within WSL, download SheetJS scripts and the test file. + + + +11) Download SheetJS scripts and the test file. + +In Windows, the following commands should be run in WSL. In macOS, the commands +should be run in the same Terminal session. {`\ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/shim.min.js @@ -223,14 +310,6 @@ curl -LO https://cdn.sheetjs.com/xlsx-${current}/package/dist/xlsx.full.min.js curl -LO https://sheetjs.com/pres.numbers`} -12) Exit WSL: - -```bash -exit -``` - -The window will return to the command prompt. - ### Stata Test :::note pass @@ -239,15 +318,32 @@ The screenshot in the introduction shows the result of steps 13 - 19 ::: -13) Open Stata +12) If it is not currently running, start the Stata application. -14) Move to the `c:\data` directory in Stata: + + + +13) Run the following command in Stata: + +```stata +dir +``` + +Inspect the output and confirm that `cleanfile.plugin` is listed. + + + + +13) Move to the `c:\data` directory in Stata: ```stata cd c:\data ``` -15) Load the `cleanfile` plugin: + + + +14) Load the `cleanfile` plugin: ```stata program cleanfile, plugin diff --git a/docz/docs/03-demos/42-engines/02-v8.md b/docz/docs/03-demos/42-engines/02-v8.md index d00dd21..868b67e 100644 --- a/docz/docs/03-demos/42-engines/02-v8.md +++ b/docz/docs/03-demos/42-engines/02-v8.md @@ -124,7 +124,7 @@ This demo was tested in the following deployments: | V8 Version | Platform | OS Version | Compiler | Date | |:--------------|:-------------|:--------------|:-----------------|:-----------| -| `11.8.82` | `darwin-x64` | macOS 13.5.1 | `clang 14.0.3` | 2023-08-26 | +| `12.1.131` | `darwin-x64` | macOS 14.1 | `clang 15.0.0` | 2023-11-15 | | `12.0.175` | `darwin-arm` | macOS 14.0 | `clang 15.0.0` | 2023-10-20 | | `12.0.265` | `win10-x64` | Windows 10 | `CL 19.37.32822` | 2023-10-28 | | `12.0.72` | `linux-x64` | HoloOS 3.4.11 | `gcc 12.2.0` | 2023-10-11 | @@ -811,9 +811,9 @@ This demo was last tested in the following deployments: | Architecture | V8 Crate | Date | |:-------------|:---------|:-----------| -| `darwin-x64` | `0.75.1` | 2023-08-26 | +| `darwin-x64` | `0.81.0` | 2023-11-14 | | `darwin-arm` | `0.79.2` | 2023-10-18 | -| `win10-x64` | `0.79.2` | 2023-10-09 | +| `win10-x64` | `0.81.0` | 2023-11-14 | | `linux-x64` | `0.79.2` | 2023-10-11 | | `linux-arm` | `0.75.1` | 2023-08-30 | diff --git a/docz/docs/03-demos/42-engines/05-jint.md b/docz/docs/03-demos/42-engines/05-jint.md index 7e7d1a5..879cab5 100644 --- a/docz/docs/03-demos/42-engines/05-jint.md +++ b/docz/docs/03-demos/42-engines/05-jint.md @@ -41,7 +41,7 @@ setting the environment variable on supported platforms. :::note pass Most of the integration functions are not documented. This explanation is based -on version `3.0.0-beta-2053`. +on version `3.0.0-beta-2055`. ::: @@ -163,7 +163,7 @@ This demo was tested in the following deployments: | Architecture | Jint Version | Date | |:-------------|:------------------|:-----------| -| `darwin-x64` | `3.0.0-beta-2051` | 2023-09-16 | +| `darwin-x64` | `3.0.0-beta-2055` | 2023-11-14 | | `darwin-arm` | `3.0.0-beta-2051` | 2023-09-26 | | `win10-x64` | `3.0.0-beta-2053` | 2023-10-28 | | `win11-arm` | `3.0.0-beta-2051` | 2023-09-26 | @@ -238,7 +238,7 @@ dotnet run ```bash dotnet nuget add source https://www.myget.org/F/jint/api/v3/index.json -dotnet add package Jint --version 3.0.0-beta-2053 +dotnet add package Jint --version 3.0.0-beta-2055 ``` To verify Jint is installed, replace `Program.cs` with the following: diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md index 5a8bc51..4695b07 100644 --- a/docz/docs/03-demos/42-engines/09-hermes.md +++ b/docz/docs/03-demos/42-engines/09-hermes.md @@ -362,7 +362,7 @@ This demo was tested in the following deployments: | Architecture | Git Commit | Date | |:-------------|:-----------|:-----------| -| `darwin-x64` | `70af78b` | 2023-08-27 | +| `darwin-x64` | `84732b3` | 2023-11-14 | | `darwin-arm` | `2b4f949` | 2023-10-18 | | `linux-x64` | `2b4f949` | 2023-10-11 | | `linux-arm` | `70af78b` | 2023-08-27 | @@ -429,6 +429,38 @@ curl -LO https://docs.sheetjs.com/hermes/sheetjs-hermes.cpp make init ``` +:::caution pass + +During the most recent macOS x64 test, the build failed due to Ninja issues: + +``` +CMake Error at CMakeLists.txt:64 (project): + Running + + '/usr/local/lib/depot_tools/ninja' '--version' + + failed with: + + depot_tools/ninja.py: Could not find Ninja in the third_party of the current project, nor in your PATH. +``` + +This is due to a conflict with the Ninja version that ships with `depot_tools`. + +Since `depot_tools` typically is added before other folders in the system `PATH` +variable, it is strongly recommended to rename the `ninja` binary, build the +Hermes libraries, and restore the `ninja` binary: + +```bash +# Rename `ninja` +mv /usr/local/lib/depot_tools/ninja /usr/local/lib/depot_tools/ninja_tmp +# Build Hermes +make init +# Restore `ninja` +mv /usr/local/lib/depot_tools/ninja_tmp /usr/local/lib/depot_tools/ninja +``` + +::: + 5) Build the application: ```bash diff --git a/docz/docs/03-demos/42-engines/15-rb.md b/docz/docs/03-demos/42-engines/15-rb.md index ec2f66e..ed6ee67 100644 --- a/docz/docs/03-demos/42-engines/15-rb.md +++ b/docz/docs/03-demos/42-engines/15-rb.md @@ -70,7 +70,7 @@ This demo was tested in the following deployments: | Platform | Ruby | ExecJS | Date | |:-------------|:---------|:--------|:-----------| -| `darwin-x64` | `2.7.6` | `2.9.1` | 2023-09-24 | +| `darwin-x64` | `2.6.10` | `2.9.1` | 2023-11-14 | | `darwin-arm` | `2.7.4` | `2.9.1` | 2023-09-24 | | `win10-x64` | `3.2.2` | `2.9.1` | 2023-10-28 | | `win11-arm` | `3.0.2` | `2.9.1` | 2023-09-24 | diff --git a/docz/docs/03-demos/42-engines/index.md b/docz/docs/03-demos/42-engines/index.md index b50d411..4f90ca0 100644 --- a/docz/docs/03-demos/42-engines/index.md +++ b/docz/docs/03-demos/42-engines/index.md @@ -131,7 +131,7 @@ This demo was tested in the following deployments: | Architecture | Commit | Date | |:-------------|:----------|:-----------| -| `darwin-x64` | `a588e49` | 2023-09-22 | +| `darwin-x64` | `bc408b1` | 2023-11-14 | | `linux-x64` | `a588e49` | 2023-10-11 | ::: @@ -221,6 +221,9 @@ ready, it will read the bundled test data and print the contents as CSV. build/bin/jerry xlsx.jerry.js; echo $? ``` +If successful, the contents of the test file will be displayed in CSV rows. The +status code `0` will be printed after the rows. + ### Jint diff --git a/docz/static/hermes/Makefile b/docz/static/hermes/Makefile index 39d6f20..a1e7fb0 100644 --- a/docz/static/hermes/Makefile +++ b/docz/static/hermes/Makefile @@ -1,5 +1,5 @@ # Note: The official Hermes documentation includes zero guidance on embedding. -# Tested against commit 2b4f949f6ff4d1de03fbad0dbef9b744153e0adb +# Tested against commit 84732b3ce6a859cbc6a20112437c81154f111fe7 MYCC=llvm-g++ POSTAMBLE=-framework CoreFoundation @@ -64,5 +64,5 @@ sheetjs-hermes: sheetjs-hermes.cpp init .PHONY: init init: - if [ ! -e hermes ]; then git clone https://github.com/facebook/hermes.git; cd hermes; git checkout 2b4f949f6ff4d1de03fbad0dbef9b744153e0adb; cd ..; fi + if [ ! -e hermes ]; then git clone https://github.com/facebook/hermes.git; cd hermes; git checkout 84732b3ce6a859cbc6a20112437c81154f111fe7; cd ..; fi if [ ! -e build_release ]; then cmake -S hermes -B build_release -G Ninja -DCMAKE_BUILD_TYPE=Release; cmake --build ./build_release; fi \ No newline at end of file