mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 18:05:27 +07:00
[platform] drops linux-arm build of fsnotifier; links to compilation instructions on exotic architectures
GitOrigin-RevId: d06b2e1f53e2645dc31f2541a8bd194fdecfb29b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3717428e19
commit
c3e404caf7
Binary file not shown.
@@ -1,16 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
CC_FLAGS="-O2 -Wall -Wextra -Wpedantic -std=c11 -D_DEFAULT_SOURCE"
|
||||
compile_clang() { clang -O2 -Wall -Wextra -Wpedantic -std=c11 -D_DEFAULT_SOURCE "$@"; }
|
||||
compile_cc() { cc -O2 -Wall -Wextra -Wpedantic -Wno-unknown-pragmas -std=c11 -D_DEFAULT_SOURCE "$@"; }
|
||||
|
||||
VER=$(date "+%Y%m%d.%H%M")
|
||||
sed -i.bak "s/#define VERSION .*/#define VERSION \"${VER}\"/" fsnotifier.h && rm fsnotifier.h.bak
|
||||
ARCH=$(uname -m)
|
||||
|
||||
if [ -f "/usr/include/gnu/stubs-32.h" ] ; then
|
||||
echo "compiling 32-bit version"
|
||||
clang -m32 ${CC_FLAGS} -o fsnotifier main.c inotify.c util.c && chmod 755 fsnotifier
|
||||
fi
|
||||
if [ "$ARCH" = "x86_64" ] || [ "$ARCH" = "amd64" ]; then
|
||||
echo "*** Compiling amd64 version (fsnotifier64) ..."
|
||||
compile_clang -o fsnotifier64 main.c inotify.c util.c && \
|
||||
chmod 755 fsnotifier64
|
||||
|
||||
if [ -f "/usr/include/gnu/stubs-64.h" ] ; then
|
||||
echo "compiling 64-bit version"
|
||||
clang -m64 ${CC_FLAGS} -o fsnotifier64 main.c inotify.c util.c && chmod 755 fsnotifier64
|
||||
# dependencies: libc6-dev:i386 libgcc-9-dev:i386
|
||||
printf "\n\n*** Compiling i386 version (fsnotifier) ...\n"
|
||||
compile_clang -target i686-linux-elf -o fsnotifier main.c inotify.c util.c && \
|
||||
chmod 755 fsnotifier
|
||||
else
|
||||
echo "*** Compiling platform-specific version (fsnotifier-$ARCH)..."
|
||||
compile_cc -o fsnotifier-"$ARCH" main.c inotify.c util.c && \
|
||||
chmod 755 fsnotifier-"$ARCH"
|
||||
fi
|
||||
@@ -214,7 +214,6 @@ class LinuxDistributionBuilder extends OsSpecificDistributionBuilder {
|
||||
buildContext.ant.copy(todir: unixSnapDistPath) {
|
||||
fileset(dir: unixDistPath) {
|
||||
exclude(name: "bin/fsnotifier")
|
||||
exclude(name: "bin/fsnotifier-arm")
|
||||
exclude(name: "bin/libyjpagent-linux.so")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,10 +19,12 @@ import com.intellij.openapi.vfs.CharsetToolkit;
|
||||
import com.intellij.openapi.vfs.local.FileWatcherNotificationSink;
|
||||
import com.intellij.openapi.vfs.local.PluggableFileWatcher;
|
||||
import com.intellij.openapi.vfs.newvfs.ManagingFS;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.TimeoutUtil;
|
||||
import com.intellij.util.io.BaseDataReader;
|
||||
import com.intellij.util.io.BaseOutputReader;
|
||||
import com.sun.jna.Platform;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.TestOnly;
|
||||
@@ -45,7 +47,6 @@ public class NativeFileWatcherImpl extends PluggableFileWatcher {
|
||||
|
||||
private static final String PROPERTY_WATCHER_DISABLED = "idea.filewatcher.disabled";
|
||||
private static final String PROPERTY_WATCHER_EXECUTABLE_PATH = "idea.filewatcher.executable.path";
|
||||
private static final File PLATFORM_NOT_SUPPORTED = new File("(platform not supported)");
|
||||
private static final String ROOTS_COMMAND = "ROOTS";
|
||||
private static final String EXIT_COMMAND = "EXIT";
|
||||
private static final int MAX_PROCESS_LAUNCH_ATTEMPT_COUNT = 10;
|
||||
@@ -73,10 +74,15 @@ public class NativeFileWatcherImpl extends PluggableFileWatcher {
|
||||
LOG.info("Native file watcher is disabled");
|
||||
}
|
||||
else if (myExecutable == null) {
|
||||
notifyOnFailure(ApplicationBundle.message("watcher.exe.not.found"), null);
|
||||
}
|
||||
else if (myExecutable == PLATFORM_NOT_SUPPORTED) {
|
||||
notifyOnFailure(ApplicationBundle.message("watcher.exe.not.exists"), null);
|
||||
if (SystemInfo.isWindows || SystemInfo.isMac || SystemInfo.isLinux && ArrayUtil.contains(Platform.RESOURCE_PREFIX, "linux-x86", "linux-x86-64")) {
|
||||
notifyOnFailure(ApplicationBundle.message("watcher.exe.not.found"), null);
|
||||
}
|
||||
else if (SystemInfo.isLinux) {
|
||||
notifyOnFailure(ApplicationBundle.message("watcher.exe.compile"), NotificationListener.URL_OPENING_LISTENER);
|
||||
}
|
||||
else {
|
||||
notifyOnFailure(ApplicationBundle.message("watcher.exe.not.exists"), null);
|
||||
}
|
||||
}
|
||||
else if (!myExecutable.canExecute()) {
|
||||
String message = ApplicationBundle.message("watcher.exe.not.exe", myExecutable);
|
||||
@@ -129,10 +135,13 @@ public class NativeFileWatcherImpl extends PluggableFileWatcher {
|
||||
*/
|
||||
@Nullable
|
||||
protected File getExecutable() {
|
||||
String execPath = System.getProperty(PROPERTY_WATCHER_EXECUTABLE_PATH);
|
||||
if (execPath != null) return new File(execPath);
|
||||
String customPath = System.getProperty(PROPERTY_WATCHER_EXECUTABLE_PATH);
|
||||
if (customPath != null) {
|
||||
File customFile = PathManager.findBinFile(customPath);
|
||||
return customFile != null ? customFile : new File(customPath);
|
||||
}
|
||||
|
||||
String[] names = null;
|
||||
String[] names = ArrayUtil.EMPTY_STRING_ARRAY;
|
||||
if (SystemInfo.isWindows) {
|
||||
if ("win32-x86".equals(Platform.RESOURCE_PREFIX)) names = new String[]{"fsnotifier.exe"};
|
||||
else if ("win32-x86-64".equals(Platform.RESOURCE_PREFIX)) names = new String[]{"fsnotifier64.exe", "fsnotifier.exe"};
|
||||
@@ -143,11 +152,8 @@ public class NativeFileWatcherImpl extends PluggableFileWatcher {
|
||||
else if (SystemInfo.isLinux) {
|
||||
if ("linux-x86".equals(Platform.RESOURCE_PREFIX)) names = new String[]{"fsnotifier"};
|
||||
else if ("linux-x86-64".equals(Platform.RESOURCE_PREFIX)) names = new String[]{"fsnotifier64"};
|
||||
else if ("linux-arm".equals(Platform.RESOURCE_PREFIX)) names = new String[]{"fsnotifier-arm"};
|
||||
}
|
||||
if (names == null) return PLATFORM_NOT_SUPPORTED;
|
||||
|
||||
return Arrays.stream(names).map(PathManager::findBinFile).filter(o -> o != null).findFirst().orElse(null);
|
||||
return StreamEx.of(names).map(PathManager::findBinFile).nonNull().findFirst().orElse(null);
|
||||
}
|
||||
|
||||
/* internal stuff */
|
||||
|
||||
@@ -698,6 +698,8 @@ desktop.entry.sudo.prompt=Please enter your password to create a desktop entry
|
||||
|
||||
watcher.slow.sync=External file changes sync may be slow
|
||||
watcher.exe.not.found=Native file watcher executable not found
|
||||
watcher.exe.compile=Unfortunately, JetBrains does not officially support native file watcher for this architecture. \
|
||||
Please follow <a href="https://confluence.jetbrains.com/display/IDEADEV/Compiling+File+Watcher">these instructions</a> to compile it yourself.
|
||||
watcher.exe.not.exists=Native file watcher is not supported on this platform
|
||||
watcher.exe.not.exe=Native file watcher is not executable: <a href="{0}">{0}</a>
|
||||
watcher.failed.to.start=File watcher failed to start
|
||||
|
||||
@@ -329,7 +329,7 @@ private val safeToDeleteFilesInHome = setOf(
|
||||
|
||||
private val safeToDeleteFilesInBin = setOf(
|
||||
"append.bat", "appletviewer.policy", "format.sh", "format.bat",
|
||||
"fsnotifier", "fsnotifier-arm", "fsnotifier64",
|
||||
"fsnotifier", "fsnotifier64",
|
||||
"inspect.bat", "inspect.sh",
|
||||
"restarter"
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user