-
Notifications
You must be signed in to change notification settings - Fork 166
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
Equinix Move: Rebuild SmartOS Hosts #3731
Comments
Are release hosts needed? We stopped building SmartOS a while ago. |
I've provisioned the smartos test hosts and got ansible to run through end to end. #3737 I've held off on provisioning the release hosts because @targos makes a good point that we probably do not need to provision machines that are not used. |
Discovered the supporting info that we do not need release nodes for smartos: #2168 |
I have added the four smartos nodes to jenkins, and re-ran ansible with their jenkins secret set, however I do not yet have infra level access so I cannot change the firewall settings to allow for these nodes to connect to jenkins to test and verify that they are functioning properly. |
I added the IPs to the firewall rules. The 4 machines are connected to Jenkins now. |
Great. I added them with the smartos21-64 and smartos23-64 labels, and altered the node-test-commit-smartos job to attempt to run on them. https://ci.nodejs.org/job/node-test-commit-smartos/ Both smartos21 and smartos23 are failing during the make step, but this is where I dont think I can be of much assistance in getting these jobs to successfully build on smartos -> Im unfamiliar with the build/compilation process, and Im unfamiliar with smartos in general. Example failures: https://ci.nodejs.org/job/node-test-commit-smartos/nodes=smartos23-64/54688/console Is there a point of contact we can ask in the smartos community to attempt to get these jobs to build? |
@nodejs/platform-smartos PTAL. |
21:55:02 ../deps/v8/src/base/platform/platform-posix.cc:81:16: error: conflicting declaration of C function 'int madvise(caddr_t, std::size_t, int)'
21:55:02 81 | extern "C" int madvise(caddr_t, size_t, int);
21:55:02 | ^~~~~~~
21:55:02 In file included from ../deps/v8/src/base/platform/platform-posix.cc:20:
21:55:02 /usr/include/sys/mman.h:268:12: note: previous declaration 'int madvise(void*, std::size_t, int)'
21:55:02 268 | extern int madvise(void *, size_t, int);
21:55:02 | ^~~~~~~
21:55:02 make[2]: *** [tools/v8_gypfiles/v8_libbase.target.mk:209: /home/iojs/build/workspace/node-test-commit-smartos/nodes/smartos23-64/out/Release/obj.target/v8_libbase/deps/v8/src/base/platform/platform-posix.o] Error 1
21:55:02 rm 7a898a1853eba0e19e78f94553f35c8ae3ef2670.intermediate looks like #3108 (comment) which was sort of machine configuration issue with the system header files. |
It appears that smartos updated those header files So If I understand correctly, v8 is checking whether or not it is compiling on solaris and accounting for atypical header file structure and in the meantime, smartos/illumos has updated the atypical header structure, causing v8 to no longer compile. This also seems like only the first issue we'll encounter trying to get v8 to compile on modern SmartOS, and this will likely take somebody some dedicated time to get smartOS building again, and that also, this is upstream v8, and not nodejs itself that needs patching. I'm unclear how to proceed here. I don't imagine that we'll be able to get this resolved before we need to remove the smartos18/smartos20 hosts, so it appears as though smartos tests are going to be broken for the forseeable future. |
@ryanaslett I think we have patches for this. We can get @jperkin to take a look, but he’s currently out on vacation so it won’t be right away. |
Yeh, we've been running with this patch for the nodejs pkgsrc builds for the last few years: The problem is that you can't just update the prototypes, as that would break builds on older platforms, and there's no way to test which is available using the preprocessor. I'd recommend applying a similar patch to just remove the prototypes (it's unclear why they were added in the first place but they certainly aren't required, at least on modern illumos or Solaris platforms) and probably the |
@nodejs/build to facilitate this we have:
The path forward would be:
@bahamat we'd also need you to test with the current Node.js versions which include 18, 20 and 22. The patch will either need to apply to all of them, or different patches will need to be applied for each version by the script. We can also configure the job to only run on a subset of those versions (for example latest) if that is what makes sense for the smartos community. |
I noticed that even the newer SmartOS hosts are running Java 11 (according to https://ci.nodejs.org/computer/). Jenkins LTS is expecting to drop support for Java 11 in October, and will need Java 17 or later. |
This is also something that we've been dealing with in our Jenkins as well. OpenJDK is available in zone images 22.4.0 and later. Here's my recommendation:
|
@bahamat Can you confirm if 22.4.0 has a build of OpenJDK17 and not just 11? I know there are third party patches to OpenJDK which will allow it to build and run, but the primary OpenJDK codebase no longer supports building JDK11 from it (I'm guessing there's a chance that SmartOS already incorporated such patches to build 11 though ;-) ) |
@sxa Yes, 22.4 includes |
Yep. We’re already using it in our Jenkins agent instances. See here: https://smartos.org/packages/set/2022Q4-x86_64/search/Openjdk |
There was an ask in nodejs/node#55239 (comment) to use newer Python than 3.8. |
The 22.4.0 image has 3.9 through 3.11, so we're good there. https://smartos.org/packages/set/2022Q4-x86_64/search/python3 |
This is a sub step of
#3597
The two release and four testing smartOS hosts need to be replaced.
The current ones are running SmartOS 18 and SmartOS 20, which are both EOL.
In discussions with @bahamat It was determined that the likely targets for smartos should change to be SmartOS 21 and SmartOS 23
I plan to Provision the following hosts:
Once those are up I'll connect them to jenkins and we can run some preliminary tests to make sure they work and are accepting jobs.
Theres a non-zero chance that something has broken from smartos20 all the way to smartos23, so somebody with SmartOS/node knowledge is likely going to have to manage anticipated failures.
The text was updated successfully, but these errors were encountered: