Skip to content

ansible: update Java for arm Dockerfiles#4358

Merged
richardlau merged 2 commits into
nodejs:mainfrom
richardlau:arm
Jun 11, 2026
Merged

ansible: update Java for arm Dockerfiles#4358
richardlau merged 2 commits into
nodejs:mainfrom
richardlau:arm

Conversation

@richardlau

@richardlau richardlau commented Jun 9, 2026

Copy link
Copy Markdown
Member

Refs: #4304


Debian 11 armv7 containers are updated to Debian 13.

Deployment

  • test-azure-ubuntu2404_docker-arm64-1
  • test-azure-ubuntu2404_docker-arm64-2
  • test-azure-ubuntu2404_docker-arm64-3
  • test-osuosl-ubuntu2404_docker-arm64-1

Signed-off-by: Richard Lau <richard.lau@ibm.com>
@richardlau

Copy link
Copy Markdown
Member Author

@sxa sxa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM if the python venv magic works ok :-)

@richardlau

Copy link
Copy Markdown
Member Author

LGTM if the python venv magic works ok :-)

Apparently it did not
https://ci.nodejs.org/job/node-test-binary-armv7l/22153/RUN_SUBSET=native,nodes=debian13-armv7l/console

15:36:05 + tap2junit -i test.tap -o out/junit/test.xml
15:36:05 /tmp/jenkins13592979765673826336.sh: 6: tap2junit: not found

I think this is because I put the venv in /home/iojs/venv but then we mount /home/iojs when running the container so it's no longer there. I'll move the venv somewhere else.

Signed-off-by: Richard Lau <richard.lau@ibm.com>
@richardlau

Copy link
Copy Markdown
Member Author

@richardlau

Copy link
Copy Markdown
Member Author

Retrying (v22.x): https://ci.nodejs.org/job/node-test-commit-arm-fanned/47795/

We appear to have a consistent failure in parallel/test-fs-utimes-y2K38 in the Debian 13 armv7 container:

16:23:21 not ok 1312 parallel/test-fs-utimes-y2K38
16:23:21   ---
16:23:21   duration_ms: 328.27900
16:23:21   severity: fail
16:23:21   exitcode: 1
16:23:21   stack: |-
16:23:21     node:fs:2199
16:23:21       binding.utimes(
16:23:21               ^
16:23:21     
16:23:21     Error: EINVAL: invalid argument, utime '/home/iojs/tmp/.tmp.1312/test-utimes-precision'
16:23:21         at Object.utimesSync (node:fs:2199:11)
16:23:21         at Object.<anonymous> (/home/iojs/build/workspace/node-test-binary-armv7l/test/parallel/test-fs-utimes-y2K38.js:46:4)
16:23:21         at Module._compile (node:internal/modules/cjs/loader:1781:14)
16:23:21         at Module._extensions..js (node:internal/modules/cjs/loader:1913:10)
16:23:21         at Module.load (node:internal/modules/cjs/loader:1505:32)
16:23:21         at Module._load (node:internal/modules/cjs/loader:1309:12)
16:23:21         at wrapModuleLoad (node:internal/modules/cjs/loader:254:19)
16:23:21         at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
16:23:21         at node:internal/main/run_main_module:36:49 {
16:23:21       errno: -22,
16:23:21       code: 'EINVAL',
16:23:21       syscall: 'utime',
16:23:21       path: '/home/iojs/tmp/.tmp.1312/test-utimes-precision'
16:23:21     }
16:23:21     
16:23:21     Node.js v22.22.4-pre
16:23:21   ...

@richardlau

Copy link
Copy Markdown
Member Author

The test is skipped on Debian 11 armv7:
https://ci.nodejs.org/job/node-test-binary-armv7l/22133/RUN_SUBSET=js,nodes=debian11-armv7l/consoleFull

10:13:26 ok 1461 parallel/test-fs-utimes-y2K38 # skip File system appears to lack Y2K38 support (touch failed)
10:13:26   ---
10:13:26   duration_ms: 135.82300
10:13:26   ...

and Ubuntu 22.04 armv7:
https://ci.nodejs.org/job/node-test-binary-armv7l/22133/RUN_SUBSET=js,nodes=ubuntu2204-armv7l/consoleFull

10:13:37 ok 1318 parallel/test-fs-utimes-y2K38 # skip File system appears to lack Y2K38 support (touch failed)
10:13:37   ---
10:13:37   duration_ms: 137.04500
10:13:37   ...

coming from https://github.com/nodejs/node/blob/7b1b943359517852235ebda83410ca003ffa3df9/test/parallel/test-fs-utimes-y2K38.js#L13-L21

  const testFilePath = `${tmpdir.path}/y2k38-test`;
  const testFileDate = '204001020304';
  const { spawnSync } = require('child_process');
  const touchResult = spawnSync('touch',
                                ['-t', testFileDate, testFilePath],
                                { encoding: 'utf8' });
  if (touchResult.status !== 0) {
    common.skip('File system appears to lack Y2K38 support (touch failed)');
  }

So it looks like the Debian 11's touch command lacks Y2K38 support, but the Debian 13's touch command succeeds so we're triggering paths we did not previously:

iojs@test-azure-debian11--container-armv7l-1:/tmp$ touch --help
Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h
is supplied.

A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.

Mandatory arguments to long options are mandatory for short options too.
  -a                     change only the access time
  -c, --no-create        do not create any files
  -d, --date=STRING      parse STRING and use it instead of current time
  -f                     (ignored)
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         timestamps of a symlink)
  -m                     change only the modification time
  -r, --reference=FILE   use this file's times instead of current time
  -t STAMP               use [[CC]YY]MMDDhhmm[.ss] instead of current time
      --time=WORD        change the specified time:
                           WORD is access, atime, or use: equivalent to -a
                           WORD is modify or mtime: equivalent to -m
      --help     display this help and exit
      --version  output version information and exit

Note that the -d and -t options accept different time-date formats.

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/touch>
or available locally via: info '(coreutils) touch invocation'
iojs@test-azure-debian11--container-armv7l-1:/tmp$ touch -t 204001020304 /tmp/date_test
touch: invalid date format '204001020304'
iojs@test-azure-debian11--container-armv7l-1:/tmp$
iojs@test-osuosl-debian13--container-armv7l-1:/tmp$ touch --help
Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.

A FILE argument that does not exist is created empty, unless -c or -h
is supplied.

A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.

Mandatory arguments to long options are mandatory for short options too.
  -a                     change only the access time
  -c, --no-create        do not create any files
  -d, --date=STRING      parse STRING and use it instead of current time
  -f                     (ignored)
  -h, --no-dereference   affect each symbolic link instead of any referenced
                         file (useful only on systems that can change the
                         timestamps of a symlink)
  -m                     change only the modification time
  -r, --reference=FILE   use this file's times instead of current time
  -t [[CC]YY]MMDDhhmm[.ss]  use specified time instead of current time,
                         with a date-time format that differs from -d's
      --time=WORD        specify which time to change:
                           access time (-a): 'access', 'atime', 'use';
                           modification time (-m): 'modify', 'mtime'
      --help        display this help and exit
      --version     output version information and exit

GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Report any translation bugs to <https://translationproject.org/team/>
Full documentation <https://www.gnu.org/software/coreutils/touch>
or available locally via: info '(coreutils) touch invocation'
iojs@test-osuosl-debian13--container-armv7l-1:/tmp$  touch -t 204001020304 /tmp/date_test
iojs@test-osuosl-debian13--container-armv7l-1:/tmp$

@richardlau

Copy link
Copy Markdown
Member Author

Maybe the test/api is just broken on 32-bit? nodejs/node#41997
Since we're only testing in this container for Node.js 22 and that goes out of support next year, I might open a PR to skip for 32-bit on v22.x.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants