Skip to content
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

Document that fs.futimes isn't supported on AIX #12609

Closed
gibfahn opened this issue Apr 23, 2017 · 12 comments
Closed

Document that fs.futimes isn't supported on AIX #12609

gibfahn opened this issue Apr 23, 2017 · 12 comments
Labels
aix Issues and PRs related to the AIX platform. doc Issues and PRs related to the documentations. fs Issues and PRs related to the fs subsystem / file system.

Comments

@gibfahn
Copy link
Member

gibfahn commented Apr 23, 2017

  • Version: master
  • Platform: AIX
  • Subsystem: fs

fs.futimes isn't supported on AIX <7.1, see #12583 (comment)

This is mentioned in the libuv docs:

Note AIX: This function only works for AIX 7.1 and newer. It can still be called on older versions but will return UV_ENOSYS.

Do we normally duplicate such warnings in the Node docs?

> fs.futimesSync(fd, s2.atime, s2.mtime)
Error: ENOSYS: function not implemented, futime
    at Object.fs.futimesSync (fs.js:1216:11)
    at repl:1:4
    at ContextifyScript.Script.runInThisContext (vm.js:44:33)
    at REPLServer.defaultEval (repl.js:239:29)
    at bound (domain.js:301:14)
    at REPLServer.runBound [as eval] (domain.js:314:12)
    at REPLServer.onLine (repl.js:433:10)
    at emitOne (events.js:120:20)
    at REPLServer.emit (events.js:210:7)
    at REPLServer.Interface._onLine (readline.js:262:10)
@gibfahn gibfahn added doc Issues and PRs related to the documentations. fs Issues and PRs related to the fs subsystem / file system. aix Issues and PRs related to the AIX platform. labels Apr 23, 2017
@Trott
Copy link
Member

Trott commented May 27, 2017

@nodejs/documentation @nodejs/platform-aix

@gireeshpunathil
Copy link
Member

I think we should document this in Node docs as well due to: i) The public API with the existing one line description makes it looks like platform agnostic, whereas AIX seem to be an exception. ii) There is no visible links which leads from node doc to libuv doc in this page.

@aaronbartell
Copy link

It should be noted the same error occurs for the IBM i operating system. The IBM i OS has an integrated environment named PASE which is essentially a port of AIX that uses IBM i as its kernel. I mention this to let the Node.js community know the AIX base is growing and will hopefully be considered when things like this come up.

@gireeshpunathil
Copy link
Member

@aaronbartell - thanks for the information. Will you please also describe:

  • What is the current process of building node on PASE?
  • What amount of code changes are required for the port?
  • What effort it takes to have node on PASE to be fully integrated into the community?
  • Do you recommend the doc changes (doc: note that fs.futimes only works on AIX >7.1 #13659) to cover IBM i as well? In my opinion it will be bit awkward for documenting functional description of an API in a platform which the community does not cover at the moment, but consensus may be the key, with a one liner caveat on i as supported by IBM at present, not the community.

@aaronbartell
Copy link

What is the current process of building node on PASE?

IBM builds and distributes Node.js for IBM i. It is not currently open source but they have made declaration of intention to upstream their changes to this repo. I do not work for IBM though I collaborate with them a fair amount concerning Node.js on IBM i.

What amount of code changes are required for the port?

I am unsure of this per the above. I am mentioning @ThePrez (Jesse Gorzinski) who is the owner of Node.js on IBM i at IBM.

What effort it takes to have node on PASE to be fully integrated into the community?

Once the IBM i Node.js port is open sourced then any community member with access to an IBM i could contribute changes. Litmis Spaces is a free/hosted IBM i that operates on preconfigured chroot environments (i.e. Node.js, Ruby On Rails, Python) and that platform could be used by the community to participate in furthering Node.js on IBM i, including PRs for furthering this repo. DISCLAIMER: I work for Krengeltech, the company that hosts Litmis Spaces.

Do you recommend the doc changes (#13659) to cover IBM i as well? In my opinion it will be bit awkward for documenting functional description of an API in a platform which the community does not cover at the moment, but consensus may be the key, with a one liner caveat on i as supported by IBM at present, not the community.

I would defer to your judgement on this matter. IBM i folks currently have to supplement their education of Node.js by going to other sites, so it would be great if these things were formally documented by Node.js.

Let me know if there is other information I can provide.

@gireeshpunathil
Copy link
Member

@aaronbartell - thanks for the detailed info. @mhdawson, @gib - FYI and consideration in terms of the doc changes.

@ThePrez
Copy link
Contributor

ThePrez commented Jun 21, 2017

@aaronbartell, have you verified this failure on IBM i 7.3?

I would like to first pursue this as a Node.JS defect before documenting a permanent restriction.

@gibfahn
Copy link
Member Author

gibfahn commented Jun 21, 2017

@ThePrez is IBM i 7.3 equivalent to AIX 7.3? If so, then as the original issue states:

Note AIX: This function only works for AIX 7.1 and newer. It can still be called on older versions but will return UV_ENOSYS.

so I'd expect it to work on that version.

@aaronbartell
Copy link

have you verified this failure on IBM i 7.3?

My v7.3 box is currently being updated. Will run test as soon as it is done.

is IBM i 7.3 equivalent to AIX 7.3?

No, IBM i v7.3 isn't equivalent to AIX v7.3. You can see the relationship here, or review the below screenshot. In short, IBM i adopts AIX into PASE one or two releases behind.

addaleax pushed a commit that referenced this issue Jun 29, 2017
PR-URL: #13659
Fixes: #12609
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> i
addaleax pushed a commit that referenced this issue Jul 11, 2017
PR-URL: #13659
Fixes: #12609
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> i
@aaronbartell
Copy link

@ThePrez

I have confirmed it doesn't work on IBM i v7.3

$ npm -v
3.10.8
$ node -v
v6.9.1
$ node futimes.js
{ Error: ENOSYS: function not implemented, futime
    at Error (native) errno: -109, code: 'ENOSYS', syscall: 'futime' }
$ uname -rv
3 7

Content of futimes.js

var fs = require('fs');
var fd = fs.openSync(__filename, 'r');
fs.futimes(fd, new Date(), new Date(), function(err) {
   console.log(err);
});

Thoughts?

addaleax pushed a commit that referenced this issue Jul 18, 2017
PR-URL: #13659
Fixes: #12609
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> i
MylesBorins pushed a commit that referenced this issue Aug 14, 2017
PR-URL: #13659
Fixes: #12609
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> i
MylesBorins pushed a commit that referenced this issue Aug 15, 2017
PR-URL: #13659
Fixes: #12609
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> i
MylesBorins pushed a commit that referenced this issue Aug 16, 2017
PR-URL: #13659
Fixes: #12609
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> i
@KerimG
Copy link

KerimG commented Aug 15, 2018

@aaronbartell @ThePrez

Familiar faces!

I just stumbled across this issue today. But for what it's worth:

gueney:~/code $ node fut
{ Error: ENOSYS: function not implemented, futime errno: -109, code: 'ENOSYS', syscall: 'futime' }
gueney:~/code $ node -v && npm -v && uname -a
v8.11.3
6.2.0
OS400 [redacted] 2 7 [redacted]

@KerimG
Copy link

KerimG commented Aug 15, 2018

FYI, running @ThePrez 's futimes.js on Windows causes the following error:

$ node fut
{ Error: EPERM: operation not permitted, futime errno: -4048, code: 'EPERM', sys
call: 'futime' }
$ node -v && npm -v && uname -a
v8.11.1
6.1.0
MINGW64_NT-10.0 DESKTOP-6UQOLB7 2.10.0(0.325/5/3) 2018-06-13 23:34 x86_64 Msys

Tried running it with Administrator but get the same error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aix Issues and PRs related to the AIX platform. doc Issues and PRs related to the documentations. fs Issues and PRs related to the fs subsystem / file system.
Projects
None yet
Development

No branches or pull requests

6 participants