-
Notifications
You must be signed in to change notification settings - Fork 29.8k
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
Preprocessing step for ICU 59.1 on z (was: “some platforms”) #13304
Comments
Groan... the ICU build is already a twisty little maze of scripts and hacks all alike and now you want to add another step?
Easy workaround: let them eat cake^W^Wuse gcc. We don't support those compilers.
Strongly disagree. It might be acceptable when updating the in-tree copy but I'm not convinced it's necessary in the first place. |
😭 #12218
👍 for floating this as a patch to the in tree copy (if necessary) |
We use gcc on AIX (see the setup instructions).
Not a supported platform, and I'm pretty sure SmartOS uses gcc (cc/ @misterdjules)
cc/ @joransiu @jBarz @jbajwa re/ z/OS for whether the C++ compiler used for Node requires this. |
I'm having trouble finding the escapesrc cpp source, couldn't it be done with a couple lines of python (already a build dep) instead of c++? And its not clear to me why the fixup isn't done before committing to github rather than on every single build, this is what @refack and others call "floating a patch", right? |
That's correct, GCC is used to build node on SmartOS. |
👍 on both points. |
At least they are more alike now… but yeah. 🙁
Source code: escapesrc/
per @sam-github
Because for most users, the code does not need to change. It seems like the fewer files that change between In my implementation, I don't change any files in-place, but only cache altered copies right at the point of compilation. That won't go over well with gyp, perhaps.
Yes, technically. That's an option. And all, sorry to not put more context around this (and then to go on leave right after!) — I mainly wanted to make sure this was captured as a possible issue. |
Re: z/OS -- There is no GCC on the platform. XL C/C++ compiler does not currently support unicode source or actual unicode in the source. To build ICU component on z/OS, we will need the preprocessor step that @srl295 mentioned. |
@srl295 Should this remain open? If so, has anything changed that's worth noting? |
I'm going to close this out given the lack of a follow up since the last time @Trott resurrected this. Feel free to reopen if you've got something more current. |
Subsystem: deps
ICU 59.1 ( per #12486 ) needs a preprocessing step ( see here to convert
u'文';
tou'\u6587';
, because ICU's source code is now UTF-8.The escaper itself is (currently) an ICU C++ tool, written using a subset of ICU's source code (only header files) that does not need any escaping or data. So it is a single
.cpp
file built into a single executable.Platforms this is known to be needed on are:
AIX, z/OS (using xlC++)Solaris (using Oracle Studio 12.5 which is now the minimum supported version )edit this is only for z, see discussion
(if gcc or clang are used, there’s no issue.)
ICU4C handles all of this by fun with makefiles. I think for node’s build, it might be best done at
configure
time:node/deps/icu4c
directory but with preprocessed source as well as original sourcegyp
-based toolchain without any additional issues.the preprocessed source has
#line
directives in it so that compile errors, etc, show the original source names.The escaper steps are basically:
escapesrc < somefile.cpp > _somefile.cpp
$(CC) -c _somefile.cpp …
(the usual build)The text was updated successfully, but these errors were encountered: