mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-18 04:51:35 +03:00
b21e05ae5f
GITHUB_PR_NUMBER: 8408 GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/8408 PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4282 Co-authored-by: Nico Burns <1007307+nicoburns@users.noreply.github.com> GitOrigin-RevId: 1dfccd53bbb6a5df0554a6990df6e8af82c1f298
106 lines
3.0 KiB
Markdown
106 lines
3.0 KiB
Markdown
# Compile a native arm64 graphql-engine executable on M1 using brew and ghc-8.10.7
|
|
|
|
1. Install ghc-8.10.7 and cabal-install via ghcup
|
|
|
|
2. Install dependencies:
|
|
|
|
```sh
|
|
brew install google-cloud-sdk
|
|
brew install node@14
|
|
brew install openssl
|
|
brew install pcre
|
|
brew install unixodbc
|
|
brew install libpq
|
|
brew install mysql-client@5.7
|
|
brew install libffi
|
|
brew install llvm@11
|
|
brew install mssql-tools
|
|
```
|
|
|
|
And add them to your environment:
|
|
|
|
```sh
|
|
echo 'export PATH="/opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin:$PATH"' >> ~/.zshrc
|
|
echo 'export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc
|
|
echo 'export PATH="/opt/homebrew/opt/node@14/bin:$PATH"' >> ~/.zshrc
|
|
echo 'export PATH="/opt/homebrew/opt/mysql-client@5.7/bin:$PATH"' >> ~/.zshrc
|
|
echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc
|
|
echo 'export PATH="/opt/homebrew/opt/llvm@11/bin:$PATH"' >> ~/.zshrc
|
|
```
|
|
|
|
|
|
3. Install console assets
|
|
|
|
This step may require you to have python2 installed and available in your $PATH.
|
|
|
|
```sh
|
|
cd console
|
|
npm ci
|
|
npm run server-build
|
|
cd ..
|
|
```
|
|
|
|
4. Install python
|
|
|
|
```sh
|
|
export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig"
|
|
export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
|
|
export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
|
|
|
|
cd server
|
|
python3 -m venv .python-venv
|
|
source .python-venv/bin/activate
|
|
pip3 install -r tests-py/requirements.txt
|
|
(cd tests-py/remote_schemas/nodejs && npm ci)
|
|
```
|
|
|
|
5. Add the C dependencies in the `cabal/dev-sh.project.local` and `cabal.project.local` files (according to where the dependencies were installed by homebrew):
|
|
|
|
```sh
|
|
package mysql
|
|
extra-include-dirs:
|
|
/opt/homebrew/opt/openssl/include
|
|
/opt/homebrew/opt/mysql-client@5.7/include
|
|
extra-lib-dirs:
|
|
/opt/homebrew/opt/openssl/lib
|
|
/opt/homebrew/opt/mysql-client@5.7/lib
|
|
|
|
package odbc
|
|
extra-include-dirs: /opt/homebrew/opt/unixodbc/include
|
|
extra-lib-dirs: /opt/homebrew/opt/unixodbc/lib
|
|
|
|
package pcre-light
|
|
extra-include-dirs: /opt/homebrew/opt/pcre/include
|
|
extra-lib-dirs: /opt/homebrew/opt/pcre/lib
|
|
|
|
package postgresql-libpq
|
|
extra-include-dirs:
|
|
/opt/homebrew/opt/libpq/include
|
|
/opt/homebrew/opt/openssl/include
|
|
extra-lib-dirs:
|
|
/opt/homebrew/opt/libpq/lib
|
|
/opt/homebrew/opt/openssl/lib
|
|
|
|
package pg-client
|
|
extra-include-dirs:
|
|
/opt/homebrew/opt/libpq/include
|
|
/opt/homebrew/opt/openssl/include
|
|
extra-lib-dirs:
|
|
/opt/homebrew/opt/libpq/lib
|
|
/opt/homebrew/opt/openssl/lib
|
|
```
|
|
|
|
Note: If you have not added any local project overrides in `cabal.project.local` you can just add a symbolic link to `cabal/dev-sh.project.local`:
|
|
|
|
```sh
|
|
ln -s cabal/dev-sh.project.local cabal.project.local
|
|
```
|
|
|
|
|
|
6. Building the server should now work:
|
|
|
|
```sh
|
|
cabal v2-update
|
|
cabal v2-build graphql-engine -j4
|
|
```
|