Can this be built on a Windows 11 platform as well?
Closed this issue · 11 comments
Hello,
I am interested in investigating persistent memory for a db project and am wondering if this library can be build on a Windows 11 (64-bit) platform as well for testing?
Hi, unfortunately go-pmem is supported only on Linux/amd64. Our design should be extensible to the windows platform as well but we have not tested/validated that.
It is my impression, however, that the code should port relatively easily, as the OS dependencies aren't too deep. (Jerrin: please correct me if I'm misinformed).
Hello,
If it could be extended to Windows perhaps with the latest Go 1.18 version then that would be awesome since my DB project will be cross-platform Linux and Windows initially but perhaps others as well later and also I am still getting a good feeling for Golang while coming from C/C++ background.
There is a nice C++ Persistent-Memory graph database repo that I have worked with in the past from IntelLabs that compiles and work well:
https://github.com/IntelLabs/pmgd
But since this new project is in Golang, I wanted to try an keep it all as pure as possible to allow for the cross compatibility.
Maybe your library could be explored more for the Windows possibility.
Thanks again
It is my impression, however, that the code should port relatively easily, as the OS dependencies aren't too deep. (Jerrin: please correct me if I'm misinformed).
That’s right Pratap. The OS dependencies should be minimal. It should be a relatively easy port to Windows.
Hello,
If it could be extended to Windows perhaps with the latest Go 1.18 version then that would be awesome since my DB project will be cross-platform Linux and Windows initially but perhaps others as well later and also I am still getting a good feeling for Golang while coming from C/C++ background.
We are not actively maintaining go-pmem at the moment, so there is no plan to port to Windows or update to the latest Go version. But please feel free to fork the repository or use the code in your project.
@jerrinsg Thanks for the information on this and I will try to build for Windows.
On a side note, I was also unable to complete the build on my Ubuntu 22.04 system with Go v1.18 (also tried v1.11, v1.15, and a few others as well). I was able to build the new tool chain but then it would not build the example and complained about labels not found.
I would have guessed that it would have built completely on Linux since I mainly wanted to see how well it ran from the native pull from github before doing anything to it.
I am now faced with the issues that I think that persistent memory is a better option than hard-drive (SQL or KV) backends but am having a problem getting a Go version to work, even if just for testing in the initial steps.
@jerrinsg Thanks for the information on this and I will try to build for Windows.
On a side note, I was also unable to complete the build on my Ubuntu 22.04 system with Go v1.18 (also tried v1.11, v1.15, and a few others as well). I was able to build the new tool chain but then it would not build the example and complained about labels not found.
What is the issue you are hitting? I tried compiling the toolchain and building the example, and it worked:
$ go version
go version go1.18.3 linux/amd64
$ git clone https://github.com/jerrinsg/go-pmem.git
$ cd go-pmem/src
$ ./make.bash
$ cd ../design
$ GO111MODULE=off ../bin/go build -txn example.go
$ ./example
First time initialization
Data set as 25 and 35
$ ./example
Not a first time intialization
Read back data 25 and 35
@jerrinsg Hi and Thanks for getting back to me.
I make it as far a "GO111MODULE=off ../bin/go build -txn example.go" and then some errors come up.
See the attached file.
I use "gvm" to use Go v1.18.3 just like yours but still some problems.
@jerrinsg In reviewing some things, although I do not know how to deal with it, the problem "seems" to be coming from "Import cycle not allowed" issues, within the code for some reason, but I am not sure.
@jerrinsg Hi and Thanks for getting back to me.
I make it as far a "GO111MODULE=off ../bin/go build -txn example.go" and then some errors come up.
See the attached file.
I use "gvm" to use Go v1.18.3 just like yours but still some problems.
Okay I see the issue. This is because the go-pmem-transaction package is not found. Can you try running the following before trying to compile the example application?
go get -u github.com/vmware/go-pmem-transaction/...
Make sure to use the go binary compiled from go-pmem. Thanks for reporting this issue, I will update the documentation accordingly.
Sorry, but I got the same issues.
Can you try the following command to get the go-pmem-transaction package?
GO111MODULE=off ../bin/go get -u github.com/vmware/go-pmem-transaction/...
I tried the following steps on an Ubuntu VM and could get the example application running:
~$ go version
go version go1.18.3 linux/amd64
~$ git clone https://github.com/jerrinsg/go-pmem.git
~$ cd go-pmem/src
~/go-pmem/src$ ./make.bash
/go-pmem/src$ GO111MODULE=off ../bin/go get -u github.com/vmware/go-pmem-transaction/...
~/go-pmem/src$ cd ../design/
~/go-pmem/design$ GO111MODULE=off ../bin/go build -txn example.go
~/go-pmem/design$ ./example
First time initialization
Data set as 25 and 35
~/go-pmem/design$ ./example
Not a first time intialization
Read back data 25 and 35