Merge ~vpa1977/ubuntu/+source/jruby:jruby-ftbfs into ubuntu/+source/jruby:ubuntu/devel
Status: | Merged | ||||||||
---|---|---|---|---|---|---|---|---|---|
Merged at revision: | 61b066239685719a1281b8b94cf27ceda4b44853 | ||||||||
Proposed branch: | ~vpa1977/ubuntu/+source/jruby:jruby-ftbfs | ||||||||
Merge into: | ubuntu/+source/jruby:ubuntu/devel | ||||||||
Diff against target: |
121 lines (+50/-4) 6 files modified
debian/changelog (+12/-0) debian/control (+2/-1) debian/patches/0014-jruby-8081-invert-o-nonblock-flag.patch (+26/-0) debian/patches/series (+1/-0) debian/rules (+6/-0) debian/tests/control (+3/-3) |
||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Pushkar Kulkarni (community) | Approve | ||
git-ubuntu import | Pending | ||
Review via email: mp+461172@code.launchpad.net |
Description of the change
This MR addresses jruby build and autopkgtest issues.
ppa: ppa:vpa1977/plusone [1]
Changes:
- copy POM files so that maven-install-
- mark mri-extra, spec-ruby, mri-stdlib as flaky
- d/p/jruby-
to fix fcntl call O_NONBLOCK semantics (it was inverted)
Testing:
- build in ppa with -proposed enabled[2]
- rebuild jruby against itself[3]
- autopkgtests
- jruby/9.
+ ✅ jruby on noble for amd64 @ 26.02.24 21:52:17 Log️ 🗒️ [4]
+ ✅ jruby on noble for armhf @ 26.02.24 20:17:06 Log️ 🗒️ [5]
+ ✅ jruby on noble for i386 @ 26.02.24 20:15:19 Log️ 🗒️ [6]
+ ✅ jruby on noble for ppc64el @ 26.02.24 20:18:34 Log️ 🗒️ [7]
+ ✅ jruby on noble for s390x @ 26.02.24 20:14:51 Log️ 🗒️ [8]
arm64 timed out, but not considered a regression.
- test setting pipes to blocking (see comment)
[1] https:/
[2] https:/
[3] https:/
[4] https:/
[5] https:/
[6] https:/
[7] https:/
[8] https:/
captureRuby.rb
---
require 'open3'
require 'fcntl'
if defined? JRUBY_VERSION lang.System. getProperty( 'java.version' )}"
puts "JRuby #{JRUBY_VERSION}, Java #{java.
else
puts "CRuby #{RUBY_VERSION}"
end
read, write = IO.pipe Fcntl:: F_GETFL) Fcntl:: F_SETFL, flags | (Fcntl: :O_NONBLOCK) ) # actually clears Fcntl:: F_SETFL, flags & (~Fcntl: :O_NONBLOCK) ) # set nonblock flag
flags = write.fcntl(
# set nonblocking flag so that ruby knows about it
write.fcntl(
# clear nonblocking flag
write.fcntl(
pid = spawn(" ./printFlags. py", :out => write)
write.close
puts "Manual spawn: #{read.read}"
Process.wait pid
---
printFlags.py
------
#!/usr/bin/env python3
import fcntl
import os
import sys
def decode_ flags(flags) :
"O_NONBLOCK" : os.O_NONBLOCK,
flags_to_check = {
"O_RDONLY": os.O_RDONLY,
"O_WRONLY": os.O_WRONLY,
"O_RDWR": os.O_RDWR,
"O_APPEND": os.O_APPEND,
}
result = [] check.items( ):
result. append( name)
for name, flag in flags_to_
if flags & flag:
flags &= ~flag
if flags:
result. append( str(flags) )
return "+".join(result)
stdout_io_flags = fcntl.fcntl( sys.stdout. fileno( ), fcntl.F_GETFL) flags(stdout_ io_flags) }")
print(f"stdout io flags: {stdout_io_flags} == {decode_
----
$jruby capturePython.rb
JRuby 9.4.5.0, Java 21.0.2
Manual spawn: stdout io flags: 1 == O_WRONLY
The output shows that the flag was successfully cleared.