Compare commits

...

No commits in common. "c8s-stream-3.6" and "c9" have entirely different histories.

7 changed files with 195 additions and 184 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/jansi-project-1.18.tar.gz SOURCES/jansi-2.3.3.tar.gz

View File

@ -1 +1 @@
9351d9d21aeef3a8db731718dca8a64e79addb63 SOURCES/jansi-project-1.18.tar.gz 8f825fc9e4eafb656d1e0f01c68be9b41a750a1c SOURCES/jansi-2.3.3.tar.gz

View File

@ -0,0 +1,26 @@
From d94c5832e14504d44abeba47866dfa7dac5992b5 Mon Sep 17 00:00:00 2001
From: Guillaume Nodet <gnodet@gmail.com>
Date: Fri, 23 Jul 2021 09:22:19 +0200
Subject: [PATCH] Avoid possible NPE, fixes #214
---
src/main/java/org/fusesource/jansi/AnsiPrintStream.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/fusesource/jansi/AnsiPrintStream.java b/src/main/java/org/fusesource/jansi/AnsiPrintStream.java
index e153c43..df6e5a6 100644
--- a/src/main/java/org/fusesource/jansi/AnsiPrintStream.java
+++ b/src/main/java/org/fusesource/jansi/AnsiPrintStream.java
@@ -76,7 +76,11 @@ public void install() throws IOException {
}
public void uninstall() throws IOException {
- getOut().uninstall();
+ // If the system output stream has been closed, out should be null, so avoid a NPE
+ AnsiOutputStream out = getOut();
+ if (out != null) {
+ out.uninstall();
+ }
}
@Override

View File

@ -1,132 +0,0 @@
From 9267e184753020dbe436868ac4c6377f58e4500f Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Tue, 5 Nov 2019 15:41:45 +0100
Subject: [PATCH] Drop dependency on native library
---
.../org/fusesource/jansi/AnsiConsole.java | 64 ++-----------------
1 file changed, 6 insertions(+), 58 deletions(-)
diff --git a/jansi/src/main/java/org/fusesource/jansi/AnsiConsole.java b/jansi/src/main/java/org/fusesource/jansi/AnsiConsole.java
index d7a37b0..6e0d316 100644
--- a/jansi/src/main/java/org/fusesource/jansi/AnsiConsole.java
+++ b/jansi/src/main/java/org/fusesource/jansi/AnsiConsole.java
@@ -15,10 +15,6 @@
*/
package org.fusesource.jansi;
-import static org.fusesource.jansi.internal.CLibrary.STDERR_FILENO;
-import static org.fusesource.jansi.internal.CLibrary.STDOUT_FILENO;
-import static org.fusesource.jansi.internal.CLibrary.isatty;
-
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -75,36 +71,20 @@ public class AnsiConsole {
@Deprecated
public static OutputStream wrapOutputStream(final OutputStream stream) {
- try {
- return wrapOutputStream(stream, STDOUT_FILENO);
- } catch (Throwable ignore) {
- return wrapOutputStream(stream, 1);
- }
+ return wrapOutputStream(stream, 1);
}
public static PrintStream wrapSystemOut(final PrintStream ps) {
- try {
- return wrapPrintStream(ps, STDOUT_FILENO);
- } catch (Throwable ignore) {
- return wrapPrintStream(ps, 1);
- }
+ return wrapPrintStream(ps, 1);
}
@Deprecated
public static OutputStream wrapErrorOutputStream(final OutputStream stream) {
- try {
- return wrapOutputStream(stream, STDERR_FILENO);
- } catch (Throwable ignore) {
- return wrapOutputStream(stream, 2);
- }
+ return wrapOutputStream(stream, 2);
}
public static PrintStream wrapSystemErr(final PrintStream ps) {
- try {
- return wrapPrintStream(ps, STDERR_FILENO);
- } catch (Throwable ignore) {
- return wrapPrintStream(ps, 2);
- }
+ return wrapPrintStream(ps, 2);
}
@Deprecated
@@ -124,22 +104,6 @@ public class AnsiConsole {
return new AnsiOutputStream(stream);
}
- if (IS_WINDOWS && !IS_CYGWIN && !IS_MINGW_XTERM) {
-
- // On windows we know the console does not interpret ANSI codes..
- try {
- jansiOutputType = JansiOutputType.WINDOWS;
- return new WindowsAnsiOutputStream(stream, fileno == STDOUT_FILENO);
- } catch (Throwable ignore) {
- // this happens when JNA is not in the path.. or
- // this happens when the stdout is being redirected to a file.
- }
-
- // Use the ANSIOutputStream to strip out the ANSI escape sequences.
- jansiOutputType = JansiOutputType.STRIP_ANSI;
- return new AnsiOutputStream(stream);
- }
-
// We must be on some Unix variant, including Cygwin or MSYS(2) on Windows...
try {
// If the jansi.force property is set, then we force to output
@@ -147,7 +111,7 @@ public class AnsiConsole {
boolean forceColored = Boolean.getBoolean("jansi.force");
// If we can detect that stdout is not a tty.. then setup
// to strip the ANSI sequences..
- if (!forceColored && isatty(fileno) == 0) {
+ if (!forceColored && System.console() == null) {
jansiOutputType = JansiOutputType.STRIP_ANSI;
return new AnsiOutputStream(stream);
}
@@ -202,22 +166,6 @@ public class AnsiConsole {
return new AnsiPrintStream(ps);
}
- if (IS_WINDOWS && !IS_CYGWIN && !IS_MINGW_XTERM) {
-
- // On windows we know the console does not interpret ANSI codes..
- try {
- jansiOutputType = JansiOutputType.WINDOWS;
- return new WindowsAnsiPrintStream(ps, fileno == STDOUT_FILENO);
- } catch (Throwable ignore) {
- // this happens when JNA is not in the path.. or
- // this happens when the stdout is being redirected to a file.
- }
-
- // Use the AnsiPrintStream to strip out the ANSI escape sequences.
- jansiOutputType = JansiOutputType.STRIP_ANSI;
- return new AnsiPrintStream(ps);
- }
-
// We must be on some Unix variant, including Cygwin or MSYS(2) on Windows...
try {
// If the jansi.force property is set, then we force to output
@@ -225,7 +173,7 @@ public class AnsiConsole {
boolean forceColored = Boolean.getBoolean("jansi.force");
// If we can detect that stdout is not a tty.. then setup
// to strip the ANSI sequences..
- if (!forceColored && isatty(fileno) == 0) {
+ if (!forceColored && System.console() == null) {
jansiOutputType = JansiOutputType.STRIP_ANSI;
return new AnsiPrintStream(ps);
}
--
2.21.0

20
SOURCES/generate-tarball.sh Executable file
View File

@ -0,0 +1,20 @@
#!/bin/bash
set -e
name=jansi
version="$(sed -n 's/Version:\s*//p' *.spec)"
# RETRIEVE
wget "https://github.com/fusesource/jansi/archive/jansi-${version}.tar.gz" -O "${name}-${version}.orig.tar.gz"
rm -rf tarball-tmp
mkdir tarball-tmp
pushd tarball-tmp
tar xf "../${name}-${version}.orig.tar.gz"
# CLEAN TARBALL
rm -r */src/main/native/inc_{mac,win}/
tar -czf "../${name}-${version}.tar.gz" *
popd
rm -r tarball-tmp "${name}-${version}.orig.tar.gz"

14
SOURCES/jansi-jni.patch Normal file
View File

@ -0,0 +1,14 @@
--- a/src/main/java/org/fusesource/jansi/internal/JansiLoader.java 2020-12-15 03:03:00.000000000 -0700
+++ b/src/main/java/org/fusesource/jansi/internal/JansiLoader.java 2020-12-15 07:57:30.238720226 -0700
@@ -295,6 +295,11 @@ public class JansiLoader {
} else {
triedPaths.add(jansiNativeLibraryPath);
}
+ } else {
+ if (loadNativeLibrary(new File("@LIBDIR@/jansi", jansiNativeLibraryName))) {
+ extracted = true;
+ return;
+ }
}
// Load the os-dependent library from the jar file

View File

@ -1,19 +1,33 @@
Name: jansi %bcond_with bootstrap
Version: 1.18
Release: 4%{?dist}
Summary: Jansi is a java library for generating and interpreting ANSI escape sequences
License: ASL 2.0
URL: http://fusesource.github.io/jansi/
BuildArch: noarch
Source0: https://github.com/fusesource/jansi/archive/jansi-project-%{version}.tar.gz Name: jansi
Version: 2.3.3
Release: 5%{?dist}
Summary: Generate and interpret ANSI escape sequences in Java
License: ASL 2.0
URL: http://fusesource.github.io/jansi/
Patch0: 0001-Drop-dependency-on-native-library.patch # ./generate-tarball.sh
Source0: %{name}-%{version}.tar.gz
# Remove bundled binaries which cannot be easily verified for licensing
Source1: generate-tarball.sh
BuildRequires: maven-local-openjdk8 # Change the location of the native artifact to where Fedora wants it
BuildRequires: mvn(junit:junit) Patch0: %{name}-jni.patch
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires: mvn(org.fusesource:fusesource-pom:pom:) Patch1: 0001-Avoid-NPE.patch
BuildRequires: gcc
BuildRequires: maven-local
%if %{with bootstrap}
BuildRequires: javapackages-bootstrap
%else
BuildRequires: mvn(org.apache.felix:maven-bundle-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-source-plugin)
BuildRequires: mvn(org.apache.maven.surefire:surefire-junit-platform)
BuildRequires: mvn(org.fusesource:fusesource-pom:pom:)
BuildRequires: mvn(org.junit.jupiter:junit-jupiter-engine)
%endif
%description %description
Jansi is a small java library that allows you to use ANSI escape sequences Jansi is a small java library that allows you to use ANSI escape sequences
@ -21,67 +35,136 @@ in your Java console applications. It implements ANSI support on platforms
which don't support it like Windows and provides graceful degradation for which don't support it like Windows and provides graceful degradation for
when output is being sent to output devices which cannot support ANSI sequences. when output is being sent to output devices which cannot support ANSI sequences.
%{?module_package} %package javadoc
%{?javadoc_package} Summary: Javadocs for %{name}
%description javadoc
This package contains the API documentation for %{name}.
%prep %prep
%setup -q -n jansi-jansi-project-%{version} %autosetup -n jansi-jansi-%{version} -p1
%patch0 -p1
%pom_disable_module example # We don't need the Fuse JXR skin
%pom_xpath_remove "pom:build/pom:extensions" %pom_xpath_remove "pom:build/pom:extensions"
%pom_remove_plugin -r :maven-site-plugin # Plugins not needed for an RPM build
%pom_remove_plugin :maven-gpg-plugin
%pom_remove_plugin :maven-javadoc-plugin
%pom_remove_plugin :nexus-staging-maven-plugin
# No maven-uberize-plugin # We don't want GraalVM support in Fedora
%pom_remove_plugin -r :maven-uberize-plugin %pom_remove_plugin :exec-maven-plugin
%pom_remove_dep :picocli-codegen
# Remove unnecessary deps for jansi-native builds # Build for JDK 1.8 at a minimum
pushd jansi %pom_xpath_set "//pom:properties/pom:jdkTarget" 1.8
%pom_remove_dep :jansi-windows32
%pom_remove_dep :jansi-windows64
%pom_remove_dep :jansi-osx
%pom_remove_dep :jansi-freebsd32
%pom_remove_dep :jansi-freebsd64
# it's there only to be bundled in uberjar and we disable uberjar generation
%pom_remove_dep :jansi-linux32
%pom_remove_dep :jansi-linux64
#
%pom_remove_dep :jansi-native
%pom_remove_dep :hawtjni-runtime
popd
# javadoc generation fails due to strict doclint in JDK 8 # Remove prebuilt shared objects
%pom_remove_plugin -r :maven-javadoc-plugin rm -fr src/main/resources/org/fusesource/jansi/internal
rm -f jansi/src/{main,test}/java/org/fusesource/jansi/{WindowsSupport,WindowsAnsiOutputStream,WindowsAnsiPrintStream,WindowsSupportTest,AnsiMain}.java # Unbundle the JNI headers
rm src/main/native/inc_linux/*.h
ln -s %{java_home}/include/jni.h src/main/native/inc_linux
ln -s %{java_home}/include/linux/jni_md.h src/main/native/inc_linux
# Set the JNI path
sed -i 's,@LIBDIR@,%{_prefix}/lib,' \
src/main/java/org/fusesource/jansi/internal/JansiLoader.java
%build %build
%mvn_build %set_build_flags
# Build the native artifact
CFLAGS="$CFLAGS -I. -I%{java_home}/include -I%{java_home}/include/linux -fPIC -fvisibility=hidden"
cd src/main/native
$CC $CFLAGS -c jansi.c
$CC $CFLAGS -c jansi_isatty.c
$CC $CFLAGS -c jansi_structs.c
$CC $CFLAGS -c jansi_ttyname.c
$CC $CFLAGS $LDFLAGS -shared -o libjansi.so *.o -lutil
cd -
# Build the Java artifacts
%mvn_build -- -Dlibrary.jansi.path=$PWD/src/main/native
%install %install
# Install the native artifact
mkdir -p %{buildroot}%{_prefix}/lib/%{name}
cp -p src/main/native/libjansi.so %{buildroot}%{_prefix}/lib/%{name}
# Install the Java artifacts
%mvn_install %mvn_install
%files -n %{?module_prefix}%{name} -f .mfiles %files -f .mfiles
%license license.txt %license license.txt
%doc readme.md changelog.md %doc readme.md changelog.md
%{_prefix}/lib/%{name}/
%files javadoc -f .mfiles-javadoc
%license license.txt
%changelog %changelog
* Sat Jan 25 2020 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.18-4 * Thu Aug 19 2021 Marian Koncek <mkoncek@redhat.com> - 2.3.3-5
- Build with OpenJDK 8 - Install native artifact into a fixed location
- Related: rhbz#1994935
* Tue Nov 05 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.18-3 * Wed Aug 18 2021 Marian Koncek <mkoncek@redhat.com> - 2.3.3-4
- Mass rebuild for javapackages-tools 201902 - Avoid possible NullPointerException
- Resolves: rhbz#1993889
- Load native library from the correct location
- Resolves: rhbz#1994935
* Tue Nov 05 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.18-2 * Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 2.3.3-3
- Remove dependency on jansi-native and hawtjni - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Jul 22 2019 Marian Koncek <mkoncek@redhat.com> - 1.18-1 * Wed Jun 23 2021 Jerry James <loganjerry@gmail.com> - 2.3.3-1
- Update to upstream version 1.18 - Version 2.3.3
* Fri May 24 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.17.1-2 * Fri Jun 18 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 2.1.1-7
- Mass rebuild for javapackages-tools 201901 - Clean tarball from content with questionable licensing
- Resolves: rhbz#1973750
* Wed Jun 09 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 2.1.1-6
- Rebuild to workaround DistroBaker issue
* Tue Jun 08 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 2.1.1-5
- Bootstrap Maven for CentOS Stream 9
* Mon May 17 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 2.1.1-4
- Bootstrap build
- Non-bootstrap build
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Jan 14 2021 Timm Bäder <tbaeder@redhat.com> - 2.1.1-2
- Use standard variables when compiling native artifact
* Tue Dec 15 2020 Jerry James <loganjerry@gmail.com> - 2.1.1-1
- Version 2.1.1
- Remove package name from Summary
- Add patch to change the location of the JNI shared object
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.18-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jul 10 2020 Jiri Vanek <jvanek@redhat.com> - 1.18-4
- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.18-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.18-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sat Jun 08 2019 Fabio Valentini <decathorpe@gmail.com> - 1.18-1
- Update to version 1.18.
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.17.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jun 05 2018 Michael Simacek <msimacek@redhat.com> - 1.17.1-1 * Tue Jun 05 2018 Michael Simacek <msimacek@redhat.com> - 1.17.1-1
- Update to upstream version 1.17.1 - Update to upstream version 1.17.1