You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@netbeans.apache.org by GitBox <gi...@apache.org> on 2022/07/17 21:20:43 UTC

[GitHub] [netbeans] zzzyxwvut opened a new issue, #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

zzzyxwvut opened a new issue, #4393:
URL: https://github.com/apache/netbeans/issues/4393

   ### Apache NetBeans version
   
   Apache NetBeans 14
   
   ### What happened
   
   In `Apache NetBeans` 14, `Git`-related support for cloning,
   fetching from, or pushing to remote repositories is broken,
   as outlined below, whenever the temporary-file directory
   (`/tmp`) is mounted with the `noexec` option set.
   
   In prior releases, having `cnd.tmpbase` system property
   defined, allowed to select a temporary-file directory where
   necessary execution would have taken place. It may, as well,
   work still, but its coverage seems to slip ([junixsocket](https://github.com/kohlschutter/junixsocket)).
   
   
   ### How to reproduce
   
   [P&nbsp;R&nbsp;E&nbsp;L&nbsp;I&nbsp;M&nbsp;I&nbsp;N&nbsp;A&nbsp;R&nbsp;Y&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;T&nbsp;E&nbsp;P]
   
   Set up the `ssh` transport protocol for a target repository
   (locally generate public-private key pair, upload the public
   key).
   Create a new directory that can be read, written, searched
   by an `Apache NetBeans` process and which can be used by it
   for the management of its own temporary files.
   Enable keyring-related logging in `netbeans/etc/netbeans.conf`:
   `netbeans_default_options="... -J-Dorg.netbeans.modules.keyring.level=0"`
   <br>
   
   Proceed with the following steps (FAILURE and SUCCESS) in
   any order.
   <br><br><br>
   
   [F&nbsp;A&nbsp;I&nbsp;L&nbsp;U&nbsp;R&nbsp;E]
   
   Manually _forbid_ execution of binaries and other executable
   files from the `/tmp` directory:
   `sudo mount --options remount,noexec /tmp`
   `mount | grep /tmp`
   
   Launch `Apache NetBeans` 14 with `-J-Dcnd.tmpbase=/path/to/new/dir`.
   (Substitute the actual path to the newly-created directory
   for `/path/to/new/dir`.)
   
   Try either cloning or fetching from or pushing to some `Git`
   repository for which the `ssh` transport protocol was set.
   <br>
   
   When CLONING...
   
   Go Team -> Git -> Clone
   
   [Repository URL: git@...]
   
   Check "Private/Public Key", type in the passphrase, and
   press the "Next" button.
   Expect a message written just above the "Next" button:
   > Cannot connect to repository at git@... .
   
   Press "Cancel" and exit `Apache NetBeans`.
   
   In `/tmp` (and not in `/path/to/new/dir`), verify the presence
   of `libtmp*libjunixsocket*.so` files (apparently, extracted
   from `netbeans/ide/modules/ext/junixsocket-native-common-2.4.0.jar`).
   
   View `~/.netbeans/14/var/log/messages.log`.
   
   Look for the _keyring_ provider being used:
   > FINE [org.netbeans.modules.keyring]: Using provider: org.netbeans.modules.keyring.gnome.libsecret.GnomeLibSecretProvider@xxxxxxxx
   
   Look for the "remote hung up unexpectedly" entries:
   > INFO [org.netbeans.modules.git]: git@xxxxxxxxxxxxxxxx.git: remote hung up unexpectedly
   
   And right below it:
   > java.lang.NoClassDefFoundError: Could not initialize class org.newsclub.net.unix.AFUNIXSocketAddress
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.JUnixSocketFactory.connect(JUnixSocketFactory.java:58)
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.SSHAgentConnector.open(SSHAgentConnector.java:78)
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.SSHAgentConnector.isAvailable(SSHAgentConnector.java:69)
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.AgentIdentityRepository.getStatus(AgentIdentityRepository.java:68)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.JGitSshSessionFactory.setupJSchIdentityRepository(JGitSshSessionFactory.java:182)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.JGitSshSessionFactory.setupJSch(JGitSshSessionFactory.java:206)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.JGitSshSessionFactory.getSession(JGitSshSessionFactory.java:103)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:107)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:247)
   > Caused: org.eclipse.jgit.errors.TransportException: git@xxxxxxxxxxxxxxxx.git: remote hung up unexpectedly
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:263)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:137)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.ListRemoteObjectsCommand.runTransportCommand(ListRemoteObjectsCommand.java:51)
   > Caused: org.netbeans.libs.git.GitException: git@xxxxxxxxxxxxxxxx.git: remote hung up unexpectedly
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.TransportCommand.handleException(TransportCommand.java:238)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.ListRemoteObjectsCommand.runTransportCommand(ListRemoteObjectsCommand.java:64)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.TransportCommand.run(TransportCommand.java:168)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.GitCommand$1.run(GitCommand.java:57)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.GitCommand$1.run(GitCommand.java:54)
   >&nbsp;&nbsp;&nbsp;&nbsp;at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.GitCommand.execute(GitCommand.java:54)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.GitClient.listRemoteBranches(GitClient.java:893)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$36.call(GitClient.java:582)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$36.call(GitClient.java:578)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.NetworkSettings.suppressAuthenticationDialog(NetworkSettings.java:138)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker$1$1.call(GitClient.java:931)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker$1.call(GitClient.java:956)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethodIntern(GitClient.java:968)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:897)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:875)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.access$400(GitClient.java:869)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient.listRemoteBranches(GitClient.java:578)
   > [catch] at org.netbeans.modules.git.ui.clone.RepositoryStep$RepositoryStepProgressSupport.perform(RepositoryStep.java:302)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitProgressSupport.performIntern(GitProgressSupport.java:92)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitProgressSupport.run(GitProgressSupport.java:85)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
   
   <br>
   
   Affirm the availability of that not-found class:
   `cd /path/to/netbeans/14/`
   `jar tf netbeans/ide/modules/ext/junixsocket-common-2.4.0.jar | grep AFUNIXSocketAddress`
   <br>
   
   (Clone the repository with git-clone(1):
   `eval "$(ssh-agent -s)"`
   `ssh-add ~/.ssh/PRIVATE_KEY`
   `git clone --verbose git@...`
   
   Open the (supported) project.)
   <br>
   
   When FETCHING (or PUSHING)...
   
   (When the project is newly opened, expect a pop-up window,
   entitled "Specify Git repository location", to appear.
   Check "Private/Public Key", type in the passphrase, and
   press the "OK" button. And now...)
   Expect a pop-up window, entitled "Git Command Failed", to
   appear with an error message (also saved in `messages.log`):
   > git@xxxxxxxxxxxxxxxx.git: remote hung up unexpectedly
   
   Again, as with CLONING, `libtmp*libjunixsocket*.so` files
   should be abandoned in `/tmp` (and not in `/path/to/new/dir`).
   
   And a similar (fetching) stack trace shall be written to
   `~/.netbeans/14/var/log/messages.log`:
   > java.lang.NoClassDefFoundError: Could not initialize class org.newsclub.net.unix.AFUNIXSocketAddress
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.JUnixSocketFactory.connect(JUnixSocketFactory.java:58)
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.SSHAgentConnector.open(SSHAgentConnector.java:78)
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.SSHAgentConnector.isAvailable(SSHAgentConnector.java:69)
   >&nbsp;&nbsp;&nbsp;&nbsp;at com.jcraft.jsch.AgentIdentityRepository.getStatus(AgentIdentityRepository.java:68)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.JGitSshSessionFactory.setupJSchIdentityRepository(JGitSshSessionFactory.java:182)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.JGitSshSessionFactory.setupJSch(JGitSshSessionFactory.java:206)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.JGitSshSessionFactory.getSession(JGitSshSessionFactory.java:103)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:107)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:247)
   > Caused: org.eclipse.jgit.errors.TransportException: git@xxxxxxxxxxxxxxxx.git: remote hung up unexpectedly
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:263)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:137)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:105)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:91)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1260)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.FetchCommand.runTransportCommand(FetchCommand.java:80)
   > Caused: org.netbeans.libs.git.GitException: git@xxxxxxxxxxxxxxxx.git: remote hung up unexpectedly
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.TransportCommand.handleException(TransportCommand.java:238)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.FetchCommand.runTransportCommand(FetchCommand.java:98)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.TransportCommand.run(TransportCommand.java:168)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.GitCommand$1.run(GitCommand.java:57)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.GitCommand$1.run(GitCommand.java:54)
   >&nbsp;&nbsp;&nbsp;&nbsp;at java.base/java.security.AccessController.doPrivileged(AccessController.java:569)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.jgit.commands.GitCommand.execute(GitCommand.java:54)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.libs.git.GitClient.fetch(GitClient.java:640)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$19.call(GitClient.java:403)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$19.call(GitClient.java:399)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.NetworkSettings.suppressAuthenticationDialog(NetworkSettings.java:138)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker$1$1.call(GitClient.java:931)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker$1$1.call(GitClient.java:937)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker$1.call(GitClient.java:956)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethodIntern(GitClient.java:968)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:893)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.runMethod(GitClient.java:875)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient$CommandInvoker.access$400(GitClient.java:869)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitClient.fetch(GitClient.java:399)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.ui.fetch.FetchAction.fetchRepeatedly(FetchAction.java:170)
   > [catch] at org.netbeans.modules.git.ui.fetch.FetchAction$3.perform(FetchAction.java:146)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitProgressSupport.performIntern(GitProgressSupport.java:92)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.git.client.GitProgressSupport.run(GitProgressSupport.java:85)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
   >&nbsp;&nbsp;&nbsp;&nbsp;at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
   
   <br><br>
   
   [S&nbsp;U&nbsp;C&nbsp;C&nbsp;E&nbsp;S&nbsp;S&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;1]
   
   Manually _permit_ execution of binaries and other executable
   files from the `/tmp` directory:
   `sudo mount --options remount,exec /tmp`
   `mount | grep /tmp`
   
   (If present, manually remove stale `libtmp*libjunixsocket*.so`
   files from `/tmp`.)
   
   Launch `Apache NetBeans` 14.
   
   Try fetching from (or pushing to) some `Git` repository for
   which the `ssh` transport protocol was set.
   Expect a pop-up window, entitled "Specify Git repository
   location", to appear.
   Check "Private/Public Key", type in the passphrase, and
   press the "OK" button.
   
   (There should be neither a new `NoClassDefFoundError` logged
   entry nor new `libtmp*libjunixsocket*.so` files left over in
   `/tmp`.)
   <br><br><br>
   
   [S&nbsp;U&nbsp;C&nbsp;C&nbsp;E&nbsp;S&nbsp;S&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;2]
   
   Manually _forbid_ execution of binaries and other executable
   files from the `/tmp` directory:
   `sudo mount --options remount,noexec /tmp`
   `mount | grep /tmp`
   
   Launch `Apache NetBeans` 14 with `JUnixSocket`'s [property](https://github.com/kohlschutter/junixsocket/blob/main/junixsocket-common/src/main/java/org/newsclub/net/unix/NativeLibraryLoader.java) set
   `-J-Dorg.newsclub.net.unix.library.tmpdir=/path/to/new/dir`,
   as the temporary-file directory path. (Substitute the actual
   path to the newly-created directory for `/path/to/new/dir`.)
   
   Try fetching from (or pushing to) some `Git` repository for
   which the `ssh` transport protocol was set.
   Expect a pop-up window, entitled "Specify Git repository
   location", to appear.
   Check "Private/Public Key", type in the passphrase, and
   press the "OK" button.
   
   (There should be neither a new `NoClassDefFoundError` logged
   entry nor new `libtmp*libjunixsocket*.so` files left over in
   `/tmp`.)
   
   
   ### Did this work correctly in an earlier version?
   
   Apache NetBeans 13
   
   ### Operating System
   
   GNU/Linux Debian (testing/bookworm)
   
   ### JDK
   
   OpenJDK (17.0.3+7-Debian-1)
   
   ### Apache NetBeans packaging
   
   Apache NetBeans binary zip
   
   ### Anything else
   
   It may be speculated that all that is needed to resolve this
   issue lies in extending `cnd.tmpbase`'s coverage by re-using
   its value, if any, as the value of the [property](https://github.com/kohlschutter/junixsocket/blob/main/junixsocket-common/src/main/java/org/newsclub/net/unix/NativeLibraryLoader.java) parsed by
   the `JUnixSocket` dependency of `Apache NetBeans`:
   `org.newsclub.net.unix.library.tmpdir`.
   
   For example,
   ```java
   class UnifiedBespokeTmpDirTests
   {
   	private static final String PROP_J_UNIX_SOCKET_TMP_DIR =
   					"org.newsclub.net.unix.library.tmpdir";
   	private static final String PROP_NET_BEANS_TMP_DIR = "cnd.tmpbase";
   
   	// Call it some time before org.newsclub.net.unix.NativeLibraryLoader
   	// from "junixsocket-common" can be loaded.
   	static void unifyBespokeTmpDir(boolean dependsOnJUnixSocket)
   	{
   		if (!dependsOnJUnixSocket)
   			return;
   
   		final String netBeansTmpDir = System.getProperty(
   						PROP_NET_BEANS_TMP_DIR);
   
   		if (netBeansTmpDir != null)
   			System.setProperty(PROP_J_UNIX_SOCKET_TMP_DIR,
   						netBeansTmpDir);
   	}
   
   
   	public static void main(String[] args)
   	{
   		System.setProperty(PROP_NET_BEANS_TMP_DIR, "/foo");
   		unifyBespokeTmpDir(true);
   		assert System.getProperty(PROP_J_UNIX_SOCKET_TMP_DIR, "")
   			.equals(System.getProperty(PROP_NET_BEANS_TMP_DIR));
   	}
   }
   ```
   
   
   ### Are you willing to submit a pull request?
   
   Yes
   
   ### Code of Conduct
   
   Yes


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] zzzyxwvut commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
zzzyxwvut commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1192684681

   @neilcsmith-net Oh, the failing remote-repository-related
   operations of `Git` are circumstantial to this issue.
   
   It could be argued that `cnd.tmpbase` does _its_ job well
   and it is a tall order to expect it to attend to arbitrary
   (in a good sense) dependencies of the IDE.
   
   Conversely, if a claim can be made that `cnd.tmpbase` is
   _the_ supported alternative when `java.io.tmpdir` proves too
   accommodating (e.g. some libraries may require generation of
   temporary files, not all of them may require execution from
   a temporary-file directory); it stands to reason to rely on
   the assumption that the definition of `cnd.tmpbase` should
   suffice and _its_ code would negotiate whatever `java.io.tmpdir`
   alternatives current dependencies of the IDE, direct and
   otherwise, may offer as their own (possibly should take no
   action for alternatives explicitly defined by users).
   
   Perhaps, some note on its use should be targeted to `*nix`
   users and a warning about what issues they may face whenever
   a newer IDE version is rolled out.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] matthiasblaesing commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
matthiasblaesing commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1192803741

   @neilcsmith-net - I looked at 13 and the difference is, that the old git integration used a unix domain socket implementation based on JNA and this is already covered by the same mechanism that is now used to load the junixsocket library after the referenced PR. As we never advertised, that you could run with a noexec temp, this is IMHO not a regression.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] matthiasblaesing commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
matthiasblaesing commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1191887587

   So I have a PR ready, that should fix this. PR is referenced, a binary build is available here:
   
   https://doppel-helix.eu/NetBeans-dev-dev-a27179c197747f3f5a3e5031135d856374385bf5-release.zip
   
   I tested with a readonly tmpfs on linux and was able to reproduce the problem (retargetting `java.io.tmpdir` there) and also could verify, that pull works after this change.
   
   HOWEVER this needs to be tested on mac OS and of course if there are more linux users willing to test, it would also be appreciated. On windows I assume the putty agent is more common, so it is less interesting there.
   
   The test scenario is this: With this build you should still be able to do a git pull using an SSH based connection, that is authenticated using an SSH agent. This is basicly the whole use-case the unixdomain socket library has in NetBeans (communication with the SSH agent).ssh based git pull, that is authenticated using an ssh agent (that is the whole use case of the existence of the library)
   
   @geertjanw if I remember correctly you are a mac OS user, so it would be great if you could give it a spin.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] zzzyxwvut commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
zzzyxwvut commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1190824728

   The property `cnd.tmpbase` comes from pre-`Apache` releases
   (see [this](https://bz.apache.org/netbeans/show_bug.cgi?id=216366) and [its introduction](http://source.apidesign.org/hg/netbeans/releases/rev/469aedac842d) and [that](https://bz.apache.org/netbeans/show_bug.cgi?id=225920)); so reliance on it
   is admissible on `*nix` hosts.
   
   In fact, its value is still tested, if defined, _otherwise_
   `java.io.tmpdir` is tried, while host-related information is
   being collected in order to create a [`HostInfo`](https://github.com/apache/netbeans/blob/master/ide/dlight.nativeexecution/src/org/netbeans/modules/nativeexecution/api/HostInfo.java) instance.
   See [`UnixHostInfoProvider`](https://github.com/apache/netbeans/blob/master/ide/dlight.nativeexecution/src/org/netbeans/modules/nativeexecution/support/hostinfo/impl/UnixHostInfoProvider.java), a member of an `Apache NetBeans` 14
   module `org.netbeans.modules.dlight.nativeexecution`.
   
   It could be corroborated as follows. Launch `Apache NetBeans`
   14 with these defined properties:
   `-J-Dnativeexecution.support.logger.level=0`
   `-J-Dcnd.tmpbase=/dev/null`
   `-J-Djava.io.tmpdir=/path/to/new/dir`
   (Substitute the actual path to the newly-created directory
   for `/path/to/new/dir`.)
   
   Go Window -> IDE Tools -> Terminal
   
   Expect the following Error [notification](https://github.com/apache/netbeans/blob/master/ide/dlight.nativeexecution/src/org/netbeans/modules/nativeexecution/support/hostinfo/impl/Bundle.properties):
   > Failed to use /dev/null as a temporary directory on localhost.
   > &nbsp;Please, run IDE with -J-Dcnd.tmpbase="other base location" flag to specify&nbsp;
   > &nbsp;a directory on a remote host where you have enough space and write and execute permissions.
   
   (However, `netbeans/ide/bin/nativeexecution/hostinfo.sh`
   would still fall back to probe `/tmp` and try to make a few
   ``/tmp/dlight_`logname`*`` directories.)
   
   ------------------------------------------------------------
   
   Looking at diffs for `NativeLibraryLoader` of [`junixsocket`](https://github.com/kohlschutter/junixsocket),
   version `2.2.1` and version `2.4.0`, there are [_no_ changes](https://github.com/kohlschutter/junixsocket/compare/junixsocket-parent-2.2.1...junixsocket-parent-2.4.0#diff-72a326e132770acdb4cc0a74ed76a24961962a984e03eb3e31b67b4ea4e6ce0a)
   touching `org.newsclub.net.unix.library.tmpdir`.
   
   ------------------------------------------------------------
   
   Looking at the history of [`jsch`](https://github.com/mwiede/jsch) in general, curiously,
   the project acquired an _optional_ dependency on `junixsocket`
   near the [`jsch-0.1.66`](https://github.com/mwiede/jsch/commit/90a711bfe533e8b483a6617b37f5a9fbd1204820#diff-cbb4d01f335561954103058449dab5622c438352af2477cf0d797cf1a7ff4a82) tagged release, which falls within for
   [transition](https://github.com/apache/netbeans/commit/13458c81591a3e0551af8eb28f271de9fbba9777) of this project from `jsch-0.1.55` to `jsch-0.1.72`.
   
   Methods of [`JUnixSocketFactory`](https://github.com/mwiede/jsch/blob/8251681e6b87a102f512e00ae5b698e54d6f80d7/src/main/java/com/jcraft/jsch/JUnixSocketFactory.java) fire up a chain of
   constructors and class initialisation for `junixsocket`
   classes:
   `AFUNIXSocketAddress` -> `AFSocketAddress` ->
   `NativeUnixSocket` -> `NativeLibraryLoader`.
   
   Now look closely at the top frames in stack traces above.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] zzzyxwvut commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
zzzyxwvut commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1192676605

   The CLONING and FETCHING parts of the FAILURE step (see
   details in the "How to reproduce" section near the top) were
   applied to on a `GNU/Linux Debian (testing/bookworm)` box
   with the offered build in a single run (and FETCHING alone
   once more in another run) and with a proviso:
   - Mount `/tmp` (`ext4`) with the `noexec` option set
   - Do not define _any_ `java.io.tmpdir`, `cnd.tmpbase`,
     `org.newsclub.net.unix.library.tmpdir` properties
   - Exclusively use the `ssh` transport protocol 
   
   I confirm success.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] matthiasblaesing commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
matthiasblaesing commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1189526180

   Behavioral changes could be the result of the update of junixsocket. For the property setting the property `java.io.tmpdir` should be enough (changes the temp dir for the VM). It could be checked if (an updated) jgit learned to use unix domain sockets via JEP-380, then no additional native library would be necessary. The junixsocket module could be checked, that the same library extraction as is done for JNA could also be done there.
   
   The property `cnd.tmpbase` sound unlikely to be used in the core IDE, as `CND` is not yet merged.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] neilcsmith-net commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
neilcsmith-net commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1192836512

   Thanks @matthiasblaesing So this, as expected, has nothing to do with changes in behaviour of `cnd.tmpbase` then. Agree not a regression, but NetBeans has tended to favour loading native libs directly without extraction for this reason. So, given comments above, happy to merge the PR for NB15 but make sure you're happy with testing across OS with rc2 - I'll add a note to the notice.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] neilcsmith-net commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
neilcsmith-net commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1189017532

   @matthiasblaesing can you have a look at this?  #3713 changed things in this area in NB14.  On the other hand, I have no idea why `cnd.tmpbase` should be expected to affect this?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] zzzyxwvut commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
zzzyxwvut commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1192961127

   I have now tested the same set-up with `Apache Netbeans` _13_
   as with the offered build--`Git` operations succeed with or
   without the `cnd.tmpbase` definition. I should have done that
   at the beginning--my apologies for the caused confusion.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] neilcsmith-net commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
neilcsmith-net commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1191248277

   Yes, the `cnd.tmpbase` property is used in `dlight.nativeexecution` inside the core IDE. But where is the relationship between that and the IDE's git support?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] neilcsmith-net commented on issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
neilcsmith-net commented on issue #4393:
URL: https://github.com/apache/netbeans/issues/4393#issuecomment-1192762757

   @zzzyxwvut it's literally the title of your issue!  I'm trying to understand how the setting of `cnd.tmpbase` was ever relevant here, if so, how, and whether this is a regression between NetBeans 13 and 14.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists


[GitHub] [netbeans] neilcsmith-net closed issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase

Posted by GitBox <gi...@apache.org>.
neilcsmith-net closed issue #4393: NB-14: Cloning/fetching/pushing remote repositories with Git over SSH disregards cnd.tmpbase
URL: https://github.com/apache/netbeans/issues/4393


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@netbeans.apache.org
For additional commands, e-mail: notifications-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists