Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

You need to improve your google-rating #1736

Closed
LowLevelMahn opened this issue Jun 28, 2023 · 11 comments
Closed

You need to improve your google-rating #1736

LowLevelMahn opened this issue Jun 28, 2023 · 11 comments

Comments

@LowLevelMahn
Copy link

you're feature-set seems to fullfill all my dreams - but google buries you deep behind all these Neo4J,Memgraph,etc. links :(

@andyfengHKU
Copy link
Contributor

Hi, thanks for your interest. We try to increase our popularities mostly by posting on social medias, e.g. Twitter, hacker news, etc. But looks like attractions come at a relatively low speed. Would be happy to know if you have any suggestions. Also feel free to tell us if you have any feature requests.

@LowLevelMahn
Copy link
Author

LowLevelMahn commented Jun 28, 2023

We try to increase our popularities mostly by posting on social medias, e.g. Twitter, hacker news, etc.

good strategy - maybe it takes some time

Would be happy to know if you have any suggestions.

builds under Linux with some errors on Fedora38 (mostly latest devtools per default)

clean Fedora38 VM with

sudo dnf check-update
sudo dnf upgrade
sudo dnf install g++
sudo dnf install libasan
sudo dnf install libtsan
sudo dnf install cmake
sudo dnf install openssl1.1-devel
sudo dnf install qt5-qtbase-devel
sudo dnf install clang
sudo dnf install ninja-build
sudo dnf install libxkbcommon-devel
sudo dnf install lld
sudo dnf install llvm
sudo dnf install python3-devel # needed by pybind11

after install

image

with standard cmake version 3.26.4

for Windows-builds - its a little bit unclear how to build for windows, what compiler is supported:

build-instructions for CMake/VStudio or MSYS2/mingw64 would be nice

i tried using MSYS2/mingw64 but that gives me this error after invoking cmake and ninja

ninja: error: 'PARQUET_PATH-NOTFOUND', needed by 'src/libkuzu_shared.dll', missing and no known rule to make it

using cmake+VS2022 generator gives me many include error for apache arrow while building, the linux build seems to download the dependency automaticly

@mewim
Copy link
Member

mewim commented Jun 28, 2023

Hi @LowLevelMahn. For Fedora 38, the error seems to come from Node.js API. If you would like to build Node.is API, you need to run npm install --include dev under tools/nodejs_api to install the dependencies for Node.js first. You can also skip building Node.js by using make release instead of make all.

@benjaminwinger
Copy link
Collaborator

for Windows-builds - its a little bit unclear how to build for windows, what compiler is supported:

Build instructions specific to windows do seem to be missing.

So far we've only managed to get it building with MSVC:

  • Run inside of a Visual Studio Developer shell: i.e. either cmd after executing vcvars64.bat (e.g. see CI) or Powershell with Launch-VsDevShell.ps1 (e.g. 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64 -HostArch amd64) (with visual studio installed there should be a "developer" terminal that does it automatically).
  • In addition to what's currently listed on the README (compiler supporting c++20, Python3 and CMake), you also need Make and Ninja (CMake's MSVC generator produces some errors, but it's working with Ninja as the generator, which is set in the makefile).
  • Run make release (or whichever command) similarly to on Linux.

I'll add this info to the build section of README.

I think there were other errors that I'd run into when I tried with mingw, but that error I think just means you didn't build arrow first (see below). Feel free to try mingw; I hadn't spent too much time digging into the issues there.

using cmake+VS2022 generator gives me many include error for apache arrow while building, the linux build seems to download the dependency automaticly

Are you using the Makefile on Windows? The same workaround is being done for both platforms in there. Unfortunately a cmake-only build doesn't work very well at the moment.
On Windows at least, downloading and building Arrow as an external project within the main cmake build doesn't guarantee that the headers are be available when it tries to compile the code that uses arrow (I couldn't figure out why at least when I tried, though I think I'd managed to get it mostly working on Linux). So instead, the makefile builds arrow first as a separate cmake build, and then when kuzu gets built it looks for the output of the arrow build. If you just run the main kuzu cmake build it will be missing those files.

@LowLevelMahn
Copy link
Author

you also need Make

is there a reason for using CMake from Make - why not use CMake exclusively?

@LowLevelMahn
Copy link
Author

If you would like to build Node.is API, you need to run npm install --include dev under tools/nodejs_api to install the dependencies for Node.js first.

that worked - also needed to sudo dnf install python3-devel

now it builds under linux with gcc 13.x and clang 16.x :)

@benjaminwinger
Copy link
Collaborator

is there a reason for using CMake from Make - why not use CMake exclusively?

You can use CMake exclusively, but then you have to manually do what the Makefile does. Providing a Makefile simplifies the build instructions.

I think you could do the same thing with the following commands (the directories used below are the ones from the makefile, and note that unless you manually pass -DARROW_INSTALL=<arrow_build_dir>/arrow/install to the second build it the first one does need to be built in external/build for the build to be picked up):

mkdir external/build
cd external/build
cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ..
cmake --build . --config Release -- -j %NUM_THREADS%
cd ../..
mkdir build/release
cd build/release
cmake -DCMAKE_BUILD_TYPE=Release -G Ninja ../..
cmake --build . --config Release -- -j %NUM_THREADS%

We could probably add this as windows bat script or something to make things easier, but it would be a lot more work to port and maintain all the commands from the makefile.

@LowLevelMahn
Copy link
Author

LowLevelMahn commented Jun 30, 2023

You can use CMake exclusively, but then you have to manually do what the Makefile does. Providing a Makefile simplifies the build instructions.

CMake is the multi-platform replacement for Make(and Autoconf/configure...) and CMake is also able to download files, install stuff, run sub-cmakes, make processes etc. but in a "more" portable way

a proper configure CMakeLists.txt can usually replace a pre-Make step completely - so that building with Linux, MacOS, MSVC or MSYS2/gcc could work better out of the box - without any dependency to Make before the CMake run

another question is: does the kuzu buildsystem fully support out-of-source builds - so that i can have my build folder anywhere i want?

btw: the Apache Arrow build page is veryg good: what packages are needed on different OSes, how to install, win/mac/linux/msys2 build instructions, etc.
https://arrow.apache.org/docs/developers/cpp/building.html
(also a nice example about cmake --list-presets - some sort of your Make configuration simplification)

@benjaminwinger
Copy link
Collaborator

benjaminwinger commented Jul 3, 2023

So basically just using execute_process to run the arrow build during the configure step? We could probably do that.

And actually, trying it again, I think it should be possible to use FetchContent to build arrow. It's just FetchContent with FindPackage that doesn't work (apache/arrow#32234). On the other hand, there seems to be some generated headers, so while the build worked for me when testing (with the exception of a linking error on the python library that can probably be fixed), it may not always since you have to call target_include_directories on both the in-source and generated headers and the generated headers may not be built before the code that includes them (which would be essentially the same issue I mentioned before).

another question is: does the kuzu buildsystem fully support out-of-source builds - so that i can have my build folder anywhere i want?

Yes, but again, it's a little complicated right now. I've created a PR which includes making the Rust build be fully out-of-source (#1741), and the process is more or less what I outlined in my previous comment, including setting ARROW_INSTALL.

@LowLevelMahn
Copy link
Author

So basically just using execute_process to run the arrow build during the configure step? We could probably do that.

should work

Yes, but again, it's a little complicated right now.

better a little complicated right now then not possible :)

@ray6080
Copy link
Contributor

ray6080 commented Jun 11, 2024

The discussion here is becoming inactive for a while. I'm turning this into discussion for now.

@kuzudb kuzudb locked and limited conversation to collaborators Jun 11, 2024
@ray6080 ray6080 converted this issue into discussion #3623 Jun 11, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants