Comments (20)
We are all for having NIX packages and thank you for offering to help out.
To explain the error you are seeing:
For iRODS 4.1, the icommands source code was housed in the main iRODS repository. When building, the icommands would make use of core iRODS code by using the object files left over from building the server executables.
For iRODS 4.2, we have pulled the icommands source code out of the main repository (obviously). When building, the icommands now make use of core iRODS code by:
- linking against the iRODS shared libraries included in the
irods-runtime
package - using headers and cmake configuration files included in the
irods-dev
package
Both the irods-runtime
and irods-dev
packages are created by the main iRODS repository.
Note that all of the cmake work on the main iRODS repository is currently on the XBB-2 branch. Before 4.2 is released, we will be moving that work onto the master branch and putting out some documentation on how the new build system works.
from irods_client_icommands.
Thank you for your support. I discussed with Antoine at the ugm2016 and he already talked to me about the XBB branch, so I was already on the way, but I did not have the time to work on that since I'm back. I think I'll take a look again at it in the next 2 weeks, and I'll make updates to this issue.
Regard!
from irods_client_icommands.
@bzizou Any news? Things have settled down since June and should work much more smoothly now as we get close to the 4.2.0 release.
from irods_client_icommands.
I've spent a couple of hours without success during the summer... I also took some time to install NixOS on my laptop and I'm on the way to deploy it on a production server environment, and then I feel more comfortable with the Nix packaging system. So, if things have evolved for iRods build system, it's time for me to give another try right now. Thks for the news!
from irods_client_icommands.
So, I just took a look. Please, tell me if I'm wrong:
- The XBB branch is now merged into the master branch
- To build an
irods-client-icommand
package for a new distribution, I need to build airods-runtime
andirods-dev
package for this distribution - To build the
irods-runtime
andirods-dev
packages, I need to build theirods_externals
build dependencies
So, if I'm right, my job starts with patching externals/install_prerequisites.py
to support the NIX distribution?
from irods_client_icommands.
You have unwound the ball correctly.
You could satisfy the prerequisites manually first if you want, but yes, additions to the script would certainly be welcome.
Then build the core, then install dev and runtime, then build the icommands.
from irods_client_icommands.
Just to inform that work is in progress into the irods4.2 branch of my nixpkgs repo:
https://github.com/bzizou/nixpkgs/tree/irods4.2
I changed the title of the issue, as it's now a feature request, more than a bug.
You can assign it to me if you want...
from irods_client_icommands.
I finally packaged irods and irods-icommands into Nix, and I'm very proud of it! It's currently only in my repo, but I'll make a pull request in the Nix repo as soon as I have enough testing. For the irods servers part, I still have some work for integration into NixOS, but at least the libraries are ok as a dependency for icommands.
Relevant files:
https://github.com/bzizou/nixpkgs/tree/irods4.2/pkgs/tools/filesystems/irods
Relevant part of https://github.com/bzizou/nixpkgs/blob/irods4.2/pkgs/top-level/all-packages.nix:
boost160clang38 = callPackage ../development/libraries/boost/1.60.nix {
llvmPackages = llvmPackages_38;
toolset = "clang";
enableLibcxx = true;
};
irods = callPackage ../tools/filesystems/irods {
llvmPackages = llvmPackages_38;
gcc = gcc48;
boost = boost160clang38;
avro-cpp = avro-cpp.override {
llvmPackages = llvmPackages_38;
boost = boost160clang38;
libcxxSupport = true;
};
};
irods-icommands = callPackage ../tools/filesystems/irods/icommands.nix {
llvmPackages = llvmPackages_38;
boost = boost160clang38;
};
I also had to adapt the avro-cpp and boost packages, pull requests coming soon into the Nix repo.
from irods_client_icommands.
Pull request : NixOS/nixpkgs#19898
from irods_client_icommands.
This is very cool. Let us know if there's anything we can do to help.
We don't need any changes in the iRODS code? It just works?
from irods_client_icommands.
There are some minor changes that we can do later to avoid some modifications of the cmake files and the irods_root_path.cpp file. It's all about paths. But let the pull request be merged, and we'll see that for the next increment...
The very hard work was about the boost+avro-cpp+clang 3.8 dependency, that may lead to changes in the deep of nix because of headers conflicts between libc++ >= 3.8 and the stdlib (NixOS/nixpkgs#19859 and NixOS/nixpkgs#19895)
I may have to revert some things done before the PR to be merged...
But yeah, it just works! You did a great job with the cmakification of the build!! And Nix did the rest regarding the "externals" problem as it's a feature of Nix to be able to recompile the dependencies!
from irods_client_icommands.
Yes, I saw that thread and conversation. You jumped into the deep end - and lived.
@kellerb gets the credit for the CMake.
We'll watch progress on the PR - thanks.
from irods_client_icommands.
Is there a beta tarball of irods, irods_schema_messaging and irods_client_icommands 4.2 sources somewhere?
Or should we wait for the 4.2 to be released? I'm afraid that my PR is blocked because using direct downloads from github...
from irods_client_icommands.
There isn't a good public place to put such a tarball. Unfortunately, this is one of the limitations of using the submodules.
We've removed one of the submodules for 4.2 - we'll only call in irods_schema_messaging, and it is very lightweight - you might be able to pull it in separately, directly.
The easiest thing will be to wait for 4.2 to be released.
from irods_client_icommands.
OK, so just after SC16? ;-)
from irods_client_icommands.
Did we solve this? Because it's been a year :)
from irods_client_icommands.
@trel Yes! Sorry for the delay...
We are successfuly using irods-icommands from NIX since year ago ;-)
https://github.com/NixOS/nixpkgs/tree/master/pkgs/tools/filesystems/irods
I'll upgrade this package to irods 4.2.2 soon... (actually already done here, I have to push it upstream)
However, no success for the server part of this package, we end up with a freezed irodsServer process just after the SQL initialization. But this should be another issue...
from irods_client_icommands.
Thanks - yes, the process model is a bit different in 4.2+. Let us know if you think we can help.
from irods_client_icommands.
Did you all ever resolve this? How do you install and start irods services in nixos?
from irods_client_icommands.
No. We gave up launching irods services under nixos... Anyway, we are still using icommands with Nix and Nixos, as Nix is our main way to provide applications to our users.
from irods_client_icommands.
Related Issues (20)
- Which commit on 4-2-stable should be used to build clients for iRODS 4.2.7? HOT 3
- Allow multiple icommands versions to be installed HOT 3
- showing metadata ID HOT 5
- better verbosity for writes
- icd not handling special characters correctly HOT 4
- ihelp does not mention iunreg HOT 1
- Install icommands on CentOS 8 (arch: x84_64) and Red Hat 8 (arch: ppc64le) HOT 1
- irepl does not processing remaining existing data objects if it processes a nonexistent one HOT 4
- usr directory error HOT 12
- build error in rocky with main branch HOT 1
- some rule file tests failing
- iquest parses queries with tabs in the where clause incorrectly. HOT 4
- iquest silent when no results HOT 4
- iquest reads query from stdin HOT 5
- iput numThreads HOT 1
- iCommands 4.3.0 fails to run with PAM HOT 2
- icp cannot copy files larger than 2GB HOT 7
- irods-icommands installs without irods-runtime on CentOS 8 HOT 2
- Bash autocomplete for iCommands not working right HOT 3
- Inconsistent iinit irods_authentication_scheme setting for pam in 4.3.0 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from irods_client_icommands.