Skip to content

Commit 458b3f5

Browse files
authored
Merge pull request #1504 from samvera/fedora6_rebase
Rebase Fedora 6 work on ActiveFedora 15
2 parents a865acd + 541ae48 commit 458b3f5

28 files changed

+264
-196
lines changed

.circleci/config.yml

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ orbs:
44
jobs:
55
bundle_lint_test:
66
parameters:
7+
ruby_type:
8+
type: string
9+
default: 'ruby'
710
ruby_version:
811
type: string
912
bundler_version:
@@ -14,23 +17,22 @@ jobs:
1417
solr_config_path:
1518
type: string
1619
default: lib/generators/active_fedora/config/solr/templates/solr/conf
17-
ruby_type:
18-
type: string
19-
default: 'ruby'
2020
solr_port:
2121
type: string
2222
default: '8985'
2323
fcrepo_version:
2424
type: string
25-
default: "4.7.5"
25+
default: "5.1.0"
2626
solr_version:
2727
type: string
2828
default: "9"
2929
docker:
3030
- image: cimg/<< parameters.ruby_type >>:<< parameters.ruby_version >>-browsers
31-
- image: samvera/fcrepo4:<< parameters.fcrepo_version >>
31+
- image: fcrepo/fcrepo:6.5-tomcat9
3232
environment:
33-
CATALINA_OPTS: "-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"
33+
JAVA_OPTS: -Dfcrepo.autoversioning.enabled=false -Dfcrepo.external.content.allowed=/fcrepo_allow.txt
34+
command: |
35+
/bin/bash -c "echo 'http://fedoraAdmin:fedoraAdmin@localhost:8080/' > /fcrepo_allow.txt && catalina.sh run"
3436
- image: zookeeper:3.9
3537
environment:
3638
ZOO_ADMINSERVER_ENABLED: false
@@ -49,6 +51,8 @@ jobs:
4951
FCREPO_TEST_PORT: 8080
5052
SPEC_OPTS: --profile 10 --format RspecJunitFormatter --out /tmp/test-results/rspec.xml --format progress
5153
RAILS_VERSION: << parameters.rails_version >>
54+
FCREPO_PORT: 8080
55+
FCREPO_REST_PATH: fcrepo/rest
5256
steps:
5357
- samvera/cached_checkout
5458
- checkout

.fcrepo_wrapper

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Place any default configuration for solr_wrapper here
2+
port: 8986
3+
version: 6.4.0
4+
enable_jms: false
5+
java_options: ['-Dfcrepo.log.http.api=DEBUG','-Dfcrepo.log.kernel=ERROR','-Xmx512m',
6+
'-Dfcrepo.external.content.allowed=config/fcrepo_allow.txt', '-Dfcrepo.autoversioning.enabled=false']
7+
#managed: true
8+
#fcrepo_home_dir: tmp/fcrepo-development-data
9+
url: https://github.com/fcrepo/fcrepo/releases/download/fcrepo-6.4.0/fcrepo-webapp-6.4.0-jetty-console.jar
10+
ignore_md5sum: true

.rubocop.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,9 @@ Rails/FilePath:
248248
Rails/ActiveRecordAliases:
249249
Enabled: false
250250

251+
Rails/RakeEnvironment:
252+
Enabled: false
253+
251254
Rails/SkipsModelValidations:
252255
Enabled: false
253256

.solr_wrapper

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Place any default configuration for solr_wrapper here
2-
# version: 6.1.0
2+
version: 7.7.3
33
port: 8985
44
collection:
55
dir: lib/generators/active_fedora/config/solr/templates/solr/conf/

Upgrading.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Upgrading to ActiveFedora 16+
2+
3+
ActiveFedora 16+ is built for use with Fedora 6+.
4+
5+
## Changes from ActiveFedora 15
6+
7+
- Direct/Indirect container classes now specified in headers required by Fedora 5+
8+
- External files supported via a Link header (see ActiveFedora::File::External)
9+
- Versioning updated based upon Fedora's use of Memento
10+
- Ability to restore previous versions removed
11+
12+
## Upgrade considerations
13+
14+
- You may want to turn off autoversioning in Fedora (`fcrepo.autoversioning.enabled=false`) if you edit objects frequently.
15+
- Be sure to allocate sufficient memory (2-4 GB) to the import-export tools.
16+
- The Fedora 4 export and Fedora 5/6 data directories have lots of files so file system operations can take a LONG time.
17+
18+
## Upgrading from Fedora 4 (without versions)
19+
20+
1. Install Java 21+
21+
2. Download [fcrepo-import-export](https://github.com/fcrepo-exts/fcrepo-import-export/) 1.2.0 or higher.
22+
3. Export from Fedora 4 (update --resource url to match the root of your fedora instance):
23+
```
24+
java -jar fcrepo-import-export-1.2.0.jar -b --dir fcrepo4.7.5_export --user fedoraAdmin:fedoraAdmin --mode export --resource http://fedora:8080/fedora/rest --binaries --membership --auditLog > importexport_`date +%Y%m%dT%H%M%S`.log 2>&1
25+
```
26+
4. Check that all objects were exported (uses ripgrep):
27+
```
28+
rg '^<(http://fedora:8080/fedora/[^#:]*)>$' -g '*.ttl' fcrepo4.7.5_export/ --no-heading -m 1 -INor '$1' | sort | uniq > subject_ids
29+
rg '<(http://fedora:8080/fedora/[^#:]*)>.*[.;]$' -g '*.ttl' fcrepo4.7.5_export/ --no-heading -INor '$1' | sort | uniq > object_ids
30+
comm -13 subject_ids object_ids > missing_ids
31+
```
32+
5. (If necessary) Restart export from missing_ids file (can also be done with remaining file if export does not finish successfully):
33+
```
34+
java -jar fcrepo-import-export-1.2.0.jar --dir fcrepo4.7.5_export --user fedoraAdmin:fedoraAdmin --mode export --repositoryRoot http://fedora:8080/fedora/rest --resourcesFile missing_ids --binaries --membership --auditLog > importexport_`date +%Y%m%dT%H%M%S`.log 2>&1
35+
```
36+
6. Download [fcrepo-upgrade-utils](https://github.com/fcrepo-exts/fcrepo-upgrade-utils/) 6.4.0 or higher. (6.4.0 has not been released yet so use the [Avalon patched version](https://github.com/avalonmediasystem/fcrepo-upgrade-utils/releases/download/6.3.0-AVALON/fcrepo-upgrade-utils-6.3.0-AVALON.jar) for now.)
37+
7. Migrate Fedora 4 export to Fedora 5:
38+
```
39+
java -jar fcrepo-upgrade-utils-6.3.0-AVALON.jar --input-dir fcrepo4.7.5_export --output-dir fcrepo5_export --source-version 4.7.5 --target-version 5+ > upgrade_5_`date +%Y%m%dT%H%M%S`.log 2>&1
40+
```
41+
8. Migrate Fedora 5 data directory to Fedora 6 (be sure that --base-uri matches --resource from the Fedora 4 export):
42+
```
43+
java --add-opens java.base/java.util.concurrent=ALL-UNNAMED -jar fcrepo-upgrade-utils-6.3.0-AVALON.jar --input-dir fcrepo5_export --output-dir fcrepo6_export --source-version 5+ --target-version 6+ --base-uri http://fedora:8080/fedora/rest > upgrade_6_`date +%Y%m%dT%H%M%S`.log 2>&1
44+
```
45+
9. Copy Fedora 6 data directory to `fcrepo.home` and startup Fedora
46+
This will kick off Fedora's indexing which can take hours depending on the size of your repository. During indexing Fedora will not respond to requests.

active-fedora.gemspec

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@ Gem::Specification.new do |s|
2020
s.add_dependency "activesupport", '>= 6.1'
2121
s.add_dependency "active-triples", '>= 0.11.0', '< 2.0.0'
2222
s.add_dependency "deprecation"
23-
s.add_dependency 'faraday', '>= 1.0'
23+
s.add_dependency 'faraday', '>= 2.0'
2424
s.add_dependency 'faraday-encoding', '>= 0.0.5'
25+
s.add_dependency 'faraday-follow_redirects'
2526
s.add_dependency "ldp", '>= 0.7.0', '< 2'
2627
s.add_dependency "mutex_m"
2728
s.add_dependency 'rsolr', '>= 1.1.2', '< 3'
@@ -47,4 +48,5 @@ Gem::Specification.new do |s|
4748
"README.md"
4849
]
4950
s.require_paths = ["lib"]
51+
s.post_install_message = "ActiveFedora 16+ is built for Fedora 6+. See Upgrading.md for important changes from ActiveFedora 15 and hints for using the Fedora upgrade tools to migrate from Fedora 4."
5052
end

config/fcrepo_allow.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
https://example.com/
2+
http://example.com/
3+
http://localhost:8986/

lib/active_fedora/attached_files.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def add_file(file, opts)
8080
node.content = file
8181
node.mime_type = opts[:mime_type]
8282
node.original_name = opts[:original_name]
83+
node.external_uri = opts[:external_uri]
84+
node.external_handling = opts[:external_handling]
8385
end
8486
end
8587

lib/active_fedora/change_set.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ def changes
3232
elsif key == 'type'.freeze
3333
# working around https://github.com/ActiveTriples/ActiveTriples/issues/122
3434
predicate = ::RDF.type
35-
result[predicate] = graph.query({ subject: object.rdf_subject, predicate: predicate })
35+
result[predicate] = graph.query({ subject: object.rdf_subject, predicate: predicate }).select do |statement|
36+
!statement.object.to_s.start_with?("http://fedora.info/definitions/v4/repository#", "http://www.w3.org/ns/ldp#")
37+
end
3638
elsif object.local_attributes.include?(key)
3739
raise "Unable to find a graph predicate corresponding to the attribute: \"#{key}\""
3840
end

lib/active_fedora/clean_connection.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ def get(*args)
1313

1414
def omit_uris
1515
[
16+
"http://fedora.info/definitions/fcrepo#ServerManaged",
1617
::RDF::Vocab::Fcrepo4.ServerManaged,
1718
::RDF::Vocab::LDP.PreferContainment,
1819
::RDF::Vocab::LDP.PreferEmptyContainer,

0 commit comments

Comments
 (0)