StataNow ARM64 extension tests
This commit is contained in:
parent
61ec7ad63c
commit
952025b996
@ -277,7 +277,7 @@ This complete component example fetches a test file and displays the contents in
|
||||
a HTML table. When the export button is clicked, a callback will export a file:
|
||||
|
||||
```jsx title="src/SheetJSReactAoO.js"
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import React, { useCallback, useEffect, useState } from "react";
|
||||
import { read, utils, writeFileXLSX } from 'xlsx';
|
||||
|
||||
export default function SheetJSReactAoO() {
|
||||
@ -287,14 +287,17 @@ export default function SheetJSReactAoO() {
|
||||
/* Fetch and update the state once */
|
||||
useEffect(() => { (async() => {
|
||||
const f = await (await fetch("https://docs.sheetjs.com/pres.xlsx")).arrayBuffer();
|
||||
// highlight-start
|
||||
const wb = read(f); // parse the array buffer
|
||||
const ws = wb.Sheets[wb.SheetNames[0]]; // get the first worksheet
|
||||
const data = utils.sheet_to_json(ws); // generate objects
|
||||
setPres(data); // update state
|
||||
// highlight-end
|
||||
})(); }, []);
|
||||
|
||||
/* get state data and export to XLSX */
|
||||
const exportFile = useCallback(() => {
|
||||
// highlight-next-line
|
||||
const ws = utils.json_to_sheet(pres);
|
||||
const wb = utils.book_new();
|
||||
utils.book_append_sheet(wb, ws, "Data");
|
||||
@ -303,10 +306,12 @@ export default function SheetJSReactAoO() {
|
||||
|
||||
return (<table><thead><tr><th>Name</th><th>Index</th></tr></thead><tbody>
|
||||
{ /* generate row for each president */
|
||||
// highlight-start
|
||||
pres.map((pres, index) => (<tr key={index}>
|
||||
<td>{pres.Name}</td>
|
||||
<td>{pres.Index}</td>
|
||||
</tr>))
|
||||
// highlight-end
|
||||
}
|
||||
</tbody><tfoot><tr><td colSpan={2}>
|
||||
<button onClick={exportFile}>Export XLSX</button>
|
||||
@ -358,7 +363,7 @@ and the page will attempt to download `SheetJSReactAoO.xlsx`.
|
||||
npm run build
|
||||
```
|
||||
|
||||
The generated site will be placed in the `.next` folder.
|
||||
The generated site will be placed in the `dist` folder.
|
||||
|
||||
6) Start a local web server:
|
||||
|
||||
@ -382,9 +387,11 @@ This demo was tested in the following environments:
|
||||
|
||||
:::
|
||||
|
||||
:::caution
|
||||
:::caution pass
|
||||
|
||||
CRA has known compatibility issues with React 19+[^cra]. CRA no longer receives updates and the ReactJS docs no longer recommend using CRA. For new projects, it is strongly recommended to use ViteJS with the react or react-ts templates.
|
||||
CRA has known compatibility issues with React 19[^5]. CRA no longer receives
|
||||
updates and the ReactJS docs no longer recommend using CRA. For new projects, it
|
||||
is strongly recommended to use ViteJS with the `react` or `react-ts` templates.
|
||||
|
||||
:::
|
||||
|
||||
@ -400,7 +407,7 @@ npx -y create-react-app@5.0.1 --scripts-version=5.0.1 sheetjs-react
|
||||
<CodeBlock language="bash">{`\
|
||||
cd sheetjs-react
|
||||
npm i
|
||||
npm i react@18.2.0 react-dom@18.2.0 web-vitals --save --save-exact # fixes CRA dependency conflicts w/ React 19
|
||||
npm i react@18.2.0 react-dom@18.2.0 web-vitals --save --save-exact
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz
|
||||
npm start`}
|
||||
</CodeBlock>
|
||||
@ -429,8 +436,6 @@ npx http-server build
|
||||
Access the displayed URL (typically `http://localhost:8080`) with a web browser
|
||||
and test the page.
|
||||
|
||||
[^cra]: See [Create React App Issue #13717](https://github.com/facebook/create-react-app/issues/13717) for details about React 19+ compatibility issues.
|
||||
|
||||
</TabItem>
|
||||
<TabItem name="nextjs" value="NextJS">
|
||||
|
||||
@ -502,9 +507,17 @@ npm run dev`}
|
||||
|
||||
4) Replace `pages/index.tsx` with the `src/SheetJSReactAoO.js` example.
|
||||
|
||||
After replacing the code, add the following to the top of `pages/index.tsx`:
|
||||
After replacing the code:
|
||||
|
||||
```js title="src/index.tsx (add to top)"
|
||||
- uncomment the type hint in the `useState` function call:
|
||||
|
||||
```js title="pages/index.tsx (uncomment the inline comment)"
|
||||
const [pres, setPres] = useState([] as any[]);
|
||||
```
|
||||
|
||||
- add the following to the top of `pages/index.tsx`:
|
||||
|
||||
```js title="pages/index.tsx (add to top)"
|
||||
"use client";
|
||||
```
|
||||
|
||||
@ -535,15 +548,13 @@ and the page will attempt to download `SheetJSReactAoO.xlsx`.
|
||||
npm run build
|
||||
```
|
||||
|
||||
The generated site will be placed in the `dist` folder.
|
||||
|
||||
6) Start a local web server:
|
||||
|
||||
```bash
|
||||
npm run start
|
||||
```
|
||||
|
||||
Access the displayed URL (typically `http://localhost:8080`) with a web browser
|
||||
Access the displayed URL (typically `http://localhost:3000`) with a web browser
|
||||
and test the page.
|
||||
|
||||
</TabItem>
|
||||
@ -559,11 +570,11 @@ will generate a workbook that can be opened in a spreadsheet editor.
|
||||
|
||||
The main disadvantage of the Array of Objects approach is the specific nature
|
||||
of the columns. For more general use, passing around an Array of Arrays works.
|
||||
However, this does not handle merge cells[^5] well!
|
||||
However, this does not handle merge cells[^6] well!
|
||||
|
||||
The [`sheet_to_html`](/docs/api/utilities/html#html-table-output) function
|
||||
generates HTML that is aware of merges and other worksheet features. ReactJS
|
||||
`dangerouslySetInnerHTML`[^6] prop allows code to set the `innerHTML` attribute,
|
||||
`dangerouslySetInnerHTML`[^7] prop allows code to set the `innerHTML` attribute,
|
||||
effectively inserting the code into the page.
|
||||
|
||||
In this example, the component attaches a `ref` to the `DIV` container. During
|
||||
@ -571,7 +582,7 @@ export, the first `TABLE` child element can be parsed with [`table_to_book`](/do
|
||||
generate a workbook object.
|
||||
|
||||
```jsx title="src/SheetJSReactHTML.js"
|
||||
import { useCallback, useEffect, useRef, useState } from "react";
|
||||
import React, { useCallback, useEffect, useRef, useState } from "react";
|
||||
import { read, utils, writeFileXLSX } from 'xlsx';
|
||||
|
||||
export default function SheetJSReactHTML() {
|
||||
@ -676,9 +687,11 @@ This demo was tested in the following environments:
|
||||
|
||||
:::
|
||||
|
||||
:::caution
|
||||
:::caution pass
|
||||
|
||||
CRA has known compatibility issues with React 19+[^cra]. CRA no longer receives updates and the ReactJS docs no longer recommend using CRA. For new projects, it is strongly recommended to use ViteJS with the react or react-ts templates.
|
||||
CRA has known compatibility issues with React 19[^5]. CRA no longer receives
|
||||
updates and the ReactJS docs no longer recommend using CRA. For new projects, it
|
||||
is strongly recommended to use ViteJS with the `react` or `react-ts` templates.
|
||||
|
||||
:::
|
||||
|
||||
@ -693,7 +706,7 @@ npx -y create-react-app@5.0.1 --scripts-version=5.0.1 sheetjs-react
|
||||
<CodeBlock language="bash">{`\
|
||||
cd sheetjs-react
|
||||
npm i
|
||||
npm i react@18.2.0 react-dom@18.2.0 web-vitals --save --save-exact # fixes CRA dependency conflicts w/ React 19
|
||||
npm i react@18.2.0 react-dom@18.2.0 web-vitals --save --save-exact
|
||||
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz
|
||||
npm start`}
|
||||
</CodeBlock>
|
||||
@ -773,5 +786,6 @@ transpiled in the browser using Babel standalone library.
|
||||
[^2]: See [`useEffect`](https://react.dev/reference/react/useEffect) in the ReactJS documentation.
|
||||
[^3]: See [`useCallback`](https://react.dev/reference/react/useCallback) in the ReactJS documentation.
|
||||
[^4]: See [`useCallback`](https://react.dev/reference/react/useCallback) in the ReactJS documentation.
|
||||
[^5]: See ["Merged Cells" in "SheetJS Data Model"](/docs/csf/features/merges) for more details.
|
||||
[^6]: [`dangerouslySetInnerHTML`](https://react.dev/reference/react-dom/components/common#common-props) is a ReactJS prop supported for all built-in components.
|
||||
[^5]: See [Create React App Issue #13717](https://github.com/facebook/create-react-app/issues/13717) for details about React 19+ compatibility issues.
|
||||
[^6]: See ["Merged Cells" in "SheetJS Data Model"](/docs/csf/features/merges) for more details.
|
||||
[^7]: [`dangerouslySetInnerHTML`](https://react.dev/reference/react-dom/components/common#common-props) is a ReactJS prop supported for all built-in components.
|
||||
|
@ -268,7 +268,6 @@ If it has an `id`, JS code on the frontend can find the table element using the
|
||||
using the `table_to_book` method[^8] and exported with `writeFile`[^2]:
|
||||
|
||||
<CodeBlock title="JS Callback for exporting HTML TABLE elements" language="javascript">{`\
|
||||
/* NOTE: blazor spreads the C# array, so the spread is required */
|
||||
async function export_method() {
|
||||
const XLSX = await import("https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs");
|
||||
const wb = XLSX.utils.table_to_book(document.getElementById("weather-table"));
|
||||
|
@ -37,7 +37,6 @@ This demo was tested in the following environments:
|
||||
| Postgres | Connector Library | Date |
|
||||
|:---------|:------------------|:-----------|
|
||||
| `16.6.1` | `pg` (`8.13.1`) | 2024-12-03 |
|
||||
| `16.2.1` | `pg` (`8.11.4`) | 2024-03-31 |
|
||||
| `15.6` | `pg` (`8.11.4`) | 2024-03-31 |
|
||||
| `14.11` | `pg` (`8.11.4`) | 2024-03-31 |
|
||||
|
||||
@ -130,7 +129,8 @@ for(let row of aoo) {
|
||||
|
||||
### Creating a Table
|
||||
|
||||
The worksheet can be scanned to determine column names and types. With the names and types, a `CREATE TABLE` query can be written.
|
||||
The worksheet can be scanned to determine column names and types. With the names
|
||||
and types, a `CREATE TABLE` query can be written.
|
||||
|
||||
<details>
|
||||
<summary><b>Implementation Details</b> (click to show)</summary>
|
||||
@ -291,6 +291,7 @@ Or, if you don't want/need a background service you can just run:
|
||||
```
|
||||
|
||||
On Linux, install `postgresql` by running the following script:
|
||||
|
||||
```bash
|
||||
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
|
||||
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
|
||||
@ -304,7 +305,7 @@ sudo -u postgres createuser -P $USER
|
||||
sudo -u postgres psql -c "ALTER USER $USER WITH SUPERUSER;"
|
||||
```
|
||||
|
||||
If running the optional user creation steps above, a PostgreSQL password will be required. [^69]
|
||||
If running the optional user creation steps above, a PostgreSQL password will be required. [^8]
|
||||
|
||||
Run the command to start a local database instance.
|
||||
|
||||
@ -314,12 +315,18 @@ Run the command to start a local database instance.
|
||||
|
||||
```bash
|
||||
dropdb SheetJSPG
|
||||
```
|
||||
|
||||
# Ubuntu/Debian
|
||||
:::caution pass
|
||||
|
||||
Some Linux installations do not create the `dropdb` command. The command can be
|
||||
run through the `postgres` command-line tool:
|
||||
|
||||
```bash title="dropdb in Ubuntu/Debian"
|
||||
sudo -i -u postgres dropdb SheetJSPG
|
||||
```
|
||||
|
||||
[^69]: PostgreSQL on Linux uses [SCRAM authentication by default, which requires a password](https://www.postgresql.org/docs/current/auth-password.html)
|
||||
:::
|
||||
|
||||
:::info pass
|
||||
|
||||
@ -334,15 +341,35 @@ current user, command-line flags can override the defaults.
|
||||
|
||||
:::
|
||||
|
||||
:::note pass
|
||||
|
||||
If the database does not exist, the command will fail with the following error:
|
||||
|
||||
```
|
||||
dropdb: error: database removal failed: ERROR: database "SheetJSPG" does not exist
|
||||
```
|
||||
|
||||
This error can be safely ignored.
|
||||
|
||||
:::
|
||||
|
||||
2) Create an empty `SheetJSPG` database using the `createdb` command:
|
||||
|
||||
```bash
|
||||
createdb SheetJSPG
|
||||
```
|
||||
|
||||
# Ubuntu/Debian
|
||||
:::caution pass
|
||||
|
||||
Some Linux installations do not create the `createdb` command. The command can be
|
||||
run through the `postgres` command-line tool:
|
||||
|
||||
```bash title="createdb in Ubuntu/Debian"
|
||||
sudo -i -u postgres createdb SheetJSPG
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
:::note pass
|
||||
|
||||
`createdb` supports the same `-h`, `-p`, and `-U` flags as `dropdb`.
|
||||
@ -509,4 +536,5 @@ psql SheetJSPG -c 'SELECT * FROM "Presidents";'
|
||||
[^4]: See ["Workbook Helpers" in "Utilities"](/docs/api/utilities/wb) for details on `book_new` and `book_append_sheet`.
|
||||
[^5]: See [`writeFile` in "Writing Files"](/docs/api/write-options)
|
||||
[^6]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output)
|
||||
[^7]: The [`pg-format`](https://npm.im/pg-format) package is available on the public NPM registry. Even though the project is marked as deprecated, the official [`pg` website still recommends `pg-format`](https://node-postgres.com/features/queries#parameterized-query:~:text=use%20pg%2Dformat%20package%20for%20handling%20escaping)
|
||||
[^7]: The [`pg-format`](https://npm.im/pg-format) package is available on the public NPM registry. Even though the project is marked as deprecated, the official [`pg` website still recommends `pg-format`](https://node-postgres.com/features/queries#parameterized-query:~:text=use%20pg%2Dformat%20package%20for%20handling%20escaping)
|
||||
[^8]: PostgreSQL on Linux uses [SCRAM authentication by default, which requires a password](https://www.postgresql.org/docs/current/auth-password.html)
|
@ -71,7 +71,7 @@ absolute or relative[^4].
|
||||
|
||||
:::note pass
|
||||
|
||||
On older versions of SuiteScript, you might need to use without `.js` extension.
|
||||
In older versions of SuiteScript, references should omit the `.js` extension.
|
||||
|
||||
:::
|
||||
|
||||
@ -88,7 +88,7 @@ top-level directory, the config should use `"/SuiteScripts/xlsx.full.min.js"`:
|
||||
```
|
||||
|
||||
Relative references are also supported. If the entire project is stored in one
|
||||
folder, the config can use `"./xlsx.full.min"`:
|
||||
folder, the config can use `"./xlsx.full.min.js"`:
|
||||
|
||||
```json title="JsLibraryConfig.json"
|
||||
{
|
||||
|
@ -49,13 +49,15 @@ This demo covers Stata extensions. For directly processing Stata DTA files, the
|
||||
|
||||
:::note Tested Deployments
|
||||
|
||||
This demo was tested by SheetJS users in the following deployments:
|
||||
This demo was tested in the following deployments:
|
||||
|
||||
| Architecture | Date |
|
||||
|:-------------|:-----------|
|
||||
| `darwin-x64` | 2024-04-10 |
|
||||
| `win10-x64` | 2024-04-10 |
|
||||
| `linux-x64` | 2024-04-25 |
|
||||
| Architecture | Version | Date |
|
||||
|:-------------|:------------------|:-----------|
|
||||
| `darwin-x64` | `18.0` | 2024-04-10 |
|
||||
| `darwin-arm` | `18.5` (StataNow) | 2024-12-15 |
|
||||
| `win10-x64` | `18.0` | 2024-04-10 |
|
||||
| `win11-arm` | `18.5` (StataNow) | 2024-12-15 |
|
||||
| `linux-x64` | `18.0` | 2024-04-25 |
|
||||
|
||||
:::
|
||||
|
||||
|
@ -146,7 +146,7 @@ This demo was tested in the following deployments:
|
||||
|
||||
| V8 Version | Platform | OS Version | Compiler | Date |
|
||||
|:--------------|:-------------|:--------------|:-----------------|:-----------|
|
||||
| `12.4.253` | `darwin-x64` | macOS 14.4 | `clang 15.0.0` | 2024-03-15 |
|
||||
| `13.3.228` | `darwin-x64` | macOS 15.1.1 | `clang 16.0.0` | 2024-12-03 |
|
||||
| `12.7.130` | `darwin-arm` | macOS 14.5 | `clang 15.0.0` | 2024-05-25 |
|
||||
| `12.5.48` | `win10-x64` | Windows 10 | `CL 19.39.33523` | 2024-03-24 |
|
||||
| `12.5.48` | `linux-x64` | HoloOS 3.5.17 | `gcc 13.1.1` | 2024-03-21 |
|
||||
@ -243,6 +243,7 @@ git config --global branch.autosetuprebase always
|
||||
<TabItem value="unix" label="Linux/MacOS">
|
||||
|
||||
```bash
|
||||
rm -rf depot_tools
|
||||
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
|
||||
```
|
||||
|
||||
@ -428,11 +429,11 @@ The recommended fix is to delete the referenced folder and re-run `gclient sync`
|
||||
</Tabs>
|
||||
|
||||
|
||||
5) Checkout the desired version. The following command pulls `12.7.130`:
|
||||
5) Checkout the desired version. The following command pulls `13.3.228`:
|
||||
|
||||
|
||||
```bash
|
||||
git checkout tags/12.7.130 -b sample
|
||||
git checkout tags/13.3.228 -b sample
|
||||
```
|
||||
|
||||
:::caution pass
|
||||
@ -440,14 +441,14 @@ git checkout tags/12.7.130 -b sample
|
||||
The official documentation recommends:
|
||||
|
||||
```bash
|
||||
git checkout refs/tags/12.7.130 -b sample -t
|
||||
git checkout refs/tags/13.3.228 -b sample -t
|
||||
```
|
||||
|
||||
This command failed in local testing:
|
||||
|
||||
```
|
||||
E:\v8\v8>git checkout refs/tags/12.7.130 -b sample -t
|
||||
fatal: cannot set up tracking information; starting point 'refs/tags/12.7.130' is not a branch
|
||||
E:\v8\v8>git checkout refs/tags/13.3.228 -b sample -t
|
||||
fatal: cannot set up tracking information; starting point 'refs/tags/13.3.228' is not a branch
|
||||
```
|
||||
|
||||
:::
|
||||
@ -464,6 +465,33 @@ tools/dev/v8gen.py x64.release.sample
|
||||
ninja -C out.gn/x64.release.sample v8_monolith
|
||||
```
|
||||
|
||||
:::danger pass
|
||||
|
||||
**This does not work in newer Python releases due to a breaking change!**
|
||||
|
||||
Python 3.13 removed the `pipes` module from the standard library[^9]. `v8gen.py`
|
||||
will fail on newer Python releases with the following traceback:
|
||||
|
||||
```
|
||||
Traceback (most recent call last):
|
||||
File "/Users/sheetjs/dev/v8/v8/tools/dev/v8gen.py", line 53, in <module>
|
||||
import mb
|
||||
File "/Users/sheetjs/dev/v8/v8/tools/mb/mb.py", line 21, in <module>
|
||||
import pipes
|
||||
ModuleNotFoundError: No module named 'pipes'
|
||||
```
|
||||
|
||||
The recommended workaround is to use Homebrew to install and use Python 3.12:
|
||||
|
||||
```bash
|
||||
brew install python@3.12
|
||||
export PATH="$(brew --prefix)/opt/python@3.12/libexec/bin:$PATH"
|
||||
```
|
||||
|
||||
After applying the workaround, the build commands will run.
|
||||
|
||||
:::
|
||||
|
||||
</TabItem>
|
||||
<TabItem value="darwin-arm" label="ARM64 Mac">
|
||||
|
||||
@ -618,7 +646,7 @@ ninja -C out.gn\x64.release.sample v8_monolith
|
||||
```bash
|
||||
g++ -I. -Iinclude samples/hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
|
||||
-ldl -Lout.gn/x64.release.sample/obj/ -pthread \
|
||||
-std=c++17 -DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
|
||||
-std=c++20 -DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
|
||||
./hello_world
|
||||
```
|
||||
|
||||
@ -630,7 +658,7 @@ Linking against `libv8_libbase` or `libv8_libplatform` in V8 version `12.4.253`
|
||||
elicited linker errors:
|
||||
|
||||
```
|
||||
ld: multiple errors: unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
ld: multiple errors: unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
```
|
||||
|
||||
:::
|
||||
@ -653,7 +681,7 @@ Linking against `libv8_libbase` or `libv8_libplatform` in V8 version `12.4.253`
|
||||
elicited linker errors:
|
||||
|
||||
```
|
||||
ld: multiple errors: unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
ld: multiple errors: unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
```
|
||||
|
||||
:::
|
||||
@ -780,7 +808,7 @@ copy E:\v8\v8\samples\hello-world.cc .\
|
||||
|
||||
```bash
|
||||
g++ -I. -Iinclude hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
|
||||
-lv8_libbase -lv8_libplatform -ldl -Lobj/ -pthread -std=c++17 \
|
||||
-lv8_libbase -lv8_libplatform -ldl -Lobj/ -pthread -std=c++20 \
|
||||
-DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
|
||||
./hello_world
|
||||
```
|
||||
@ -790,14 +818,14 @@ g++ -I. -Iinclude hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
|
||||
In some V8 versions, the command failed in the linker stage:
|
||||
|
||||
```
|
||||
ld: multiple errors: unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
ld: multiple errors: unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
```
|
||||
|
||||
The build succeeds after removing `libv8_libbase` and `libv8_libplatform`:
|
||||
|
||||
```bash
|
||||
g++ -I. -Iinclude hello-world.cc -o hello_world -fno-rtti -lv8_monolith \
|
||||
-ldl -Lobj/ -pthread -std=c++17 \
|
||||
-ldl -Lobj/ -pthread -std=c++20 \
|
||||
-DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
|
||||
./hello_world
|
||||
```
|
||||
@ -843,7 +871,7 @@ curl -LO https://docs.sheetjs.com/v8/sheetjs.v8.cc
|
||||
|
||||
```bash
|
||||
g++ -I. -Iinclude sheetjs.v8.cc -o sheetjs.v8 -fno-rtti -lv8_monolith \
|
||||
-lv8_libbase -lv8_libplatform -ldl -Lobj/ -pthread -std=c++17 \
|
||||
-lv8_libbase -lv8_libplatform -ldl -Lobj/ -pthread -std=c++20 \
|
||||
-DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
|
||||
```
|
||||
|
||||
@ -852,14 +880,14 @@ g++ -I. -Iinclude sheetjs.v8.cc -o sheetjs.v8 -fno-rtti -lv8_monolith \
|
||||
In some V8 versions, the command failed in the linker stage:
|
||||
|
||||
```
|
||||
ld: multiple errors: unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/test/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
ld: multiple errors: unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libplatform.a'; unknown file type in '/Users/sheetjs/dev/v8/v8/out.gn/x64.release.sample/obj/libv8_libbase.a'
|
||||
```
|
||||
|
||||
The build succeeds after removing `libv8_libbase` and `libv8_libplatform`:
|
||||
|
||||
```bash
|
||||
g++ -I. -Iinclude sheetjs.v8.cc -o sheetjs.v8 -fno-rtti -lv8_monolith \
|
||||
-ldl -Lobj/ -pthread -std=c++17 \
|
||||
-ldl -Lobj/ -pthread -std=c++20 \
|
||||
-DV8_COMPRESS_POINTERS=1 -DV8_ENABLE_SANDBOX
|
||||
```
|
||||
|
||||
@ -1555,4 +1583,5 @@ mv target/release/sheet2csv.exe .
|
||||
[^5]: See ["Supported Output Formats" type in "Writing Files"](/docs/api/write-options#supported-output-formats)
|
||||
[^6]: The project does not have an official website. The [official Rust crate](https://crates.io/crates/v8) is hosted on `crates.io`.
|
||||
[^7]: The project does not have a separate website. The source repository is hosted on [GitHub](https://github.com/cloudflare/stpyv8)
|
||||
[^8]: According to a maintainer, [typed arrays were not supported in the original `pyv8` project](https://github.com/cloudflare/stpyv8/issues/104#issuecomment-2059125389)
|
||||
[^8]: According to a maintainer, [typed arrays were not supported in the original `pyv8` project](https://github.com/cloudflare/stpyv8/issues/104#issuecomment-2059125389)
|
||||
[^9]: `pipes` and other modules were removed from the standard library in Python 3.13 as part of ["PEP 594"](https://docs.python.org/3/whatsnew/3.13.html#whatsnew313-pep594).
|
Loading…
Reference in New Issue
Block a user