import rear-2.4-10.el8
This commit is contained in:
commit
2eefda7c9b
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
SOURCES/rear-2.4.tar.gz
|
1
.rear.metadata
Normal file
1
.rear.metadata
Normal file
@ -0,0 +1 @@
|
||||
9f6037ea582635ed78f1dffaa8a7cc5cdc7db37a SOURCES/rear-2.4.tar.gz
|
15
SOURCES/rear-bz1492177-warning.patch
Normal file
15
SOURCES/rear-bz1492177-warning.patch
Normal file
@ -0,0 +1,15 @@
|
||||
diff --git a/usr/share/rear/output/ISO/Linux-i386/249_check_rhel_grub2_efi_package.sh b/usr/share/rear/output/ISO/Linux-i386/249_check_rhel_grub2_efi_package.sh
|
||||
new file mode 100644
|
||||
index 00000000..4c4ded08
|
||||
--- /dev/null
|
||||
+++ b/usr/share/rear/output/ISO/Linux-i386/249_check_rhel_grub2_efi_package.sh
|
||||
@@ -0,0 +1,9 @@
|
||||
+# 249_check_rhel_grub2_efi_package.sh
|
||||
+
|
||||
+is_true $USING_UEFI_BOOTLOADER || return # empty or 0 means NO UEFI
|
||||
+
|
||||
+(
|
||||
+ VERBOSE=1
|
||||
+ test -r /usr/lib/grub/x86_64-efi/moddep.lst
|
||||
+ PrintIfError "WARNING: /usr/lib/grub/x86_64-efi/moddep.lst not found, grub2-mkimage will likely fail. Please install the grub2-efi-x64-modules package to fix this."
|
||||
+)
|
275
SOURCES/rear-bz1631183.patch
Normal file
275
SOURCES/rear-bz1631183.patch
Normal file
@ -0,0 +1,275 @@
|
||||
diff --git a/usr/share/rear/backup/NETFS/default/500_make_backup.sh b/usr/share/rear/backup/NETFS/default/500_make_backup.sh
|
||||
index 47266910..7170cda6 100644
|
||||
--- a/usr/share/rear/backup/NETFS/default/500_make_backup.sh
|
||||
+++ b/usr/share/rear/backup/NETFS/default/500_make_backup.sh
|
||||
@@ -67,49 +67,99 @@ else
|
||||
SPLIT_COMMAND="dd of=$backuparchive"
|
||||
fi
|
||||
|
||||
+# Used by "tar" method to record which pipe command failed
|
||||
+FAILING_BACKUP_PROG_FILE="$TMP_DIR/failing_backup_prog"
|
||||
+FAILING_BACKUP_PROG_RC_FILE="$TMP_DIR/failing_backup_prog_rc"
|
||||
+
|
||||
LogPrint "Creating $BACKUP_PROG archive '$backuparchive'"
|
||||
ProgressStart "Preparing archive operation"
|
||||
(
|
||||
case "$(basename ${BACKUP_PROG})" in
|
||||
- # tar compatible programs here
|
||||
- (tar)
|
||||
- set_tar_features
|
||||
- Log $BACKUP_PROG $TAR_OPTIONS --sparse --block-number --totals --verbose \
|
||||
- --no-wildcards-match-slash --one-file-system \
|
||||
- --ignore-failed-read "${BACKUP_PROG_OPTIONS[@]}" \
|
||||
- $BACKUP_PROG_CREATE_NEWER_OPTIONS \
|
||||
- ${BACKUP_PROG_BLOCKS:+-b $BACKUP_PROG_BLOCKS} "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
- -X $TMP_DIR/backup-exclude.txt -C / -c -f - \
|
||||
- $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE \| $BACKUP_PROG_CRYPT_OPTIONS BACKUP_PROG_CRYPT_KEY \| $SPLIT_COMMAND
|
||||
- $BACKUP_PROG $TAR_OPTIONS --sparse --block-number --totals --verbose \
|
||||
- --no-wildcards-match-slash --one-file-system \
|
||||
- --ignore-failed-read "${BACKUP_PROG_OPTIONS[@]}" \
|
||||
- $BACKUP_PROG_CREATE_NEWER_OPTIONS \
|
||||
- ${BACKUP_PROG_BLOCKS:+-b $BACKUP_PROG_BLOCKS} "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
- -X $TMP_DIR/backup-exclude.txt -C / -c -f - \
|
||||
- $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE | $BACKUP_PROG_CRYPT_OPTIONS $BACKUP_PROG_CRYPT_KEY | $SPLIT_COMMAND
|
||||
- ;;
|
||||
- (rsync)
|
||||
- # make sure that the target is a directory
|
||||
- mkdir -p $v "$backuparchive" >&2
|
||||
- Log $BACKUP_PROG --verbose "${BACKUP_RSYNC_OPTIONS[@]}" --one-file-system --delete \
|
||||
- --exclude-from=$TMP_DIR/backup-exclude.txt --delete-excluded \
|
||||
- $(cat $TMP_DIR/backup-include.txt) "$backuparchive"
|
||||
- $BACKUP_PROG --verbose "${BACKUP_RSYNC_OPTIONS[@]}" --one-file-system --delete \
|
||||
- --exclude-from=$TMP_DIR/backup-exclude.txt --delete-excluded \
|
||||
- $(cat $TMP_DIR/backup-include.txt) "$backuparchive" >&2
|
||||
- ;;
|
||||
- (*)
|
||||
- Log "Using unsupported backup program '$BACKUP_PROG'"
|
||||
- Log $BACKUP_PROG "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
- $BACKUP_PROG_OPTIONS_CREATE_ARCHIVE $TMP_DIR/backup-exclude.txt \
|
||||
- "${BACKUP_PROG_OPTIONS[@]}" $backuparchive \
|
||||
- $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE > $backuparchive
|
||||
- $BACKUP_PROG "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
- $BACKUP_PROG_OPTIONS_CREATE_ARCHIVE $TMP_DIR/backup-exclude.txt \
|
||||
- "${BACKUP_PROG_OPTIONS[@]}" $backuparchive \
|
||||
- $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE > $backuparchive
|
||||
- ;;
|
||||
+ # tar compatible programs here
|
||||
+ (tar)
|
||||
+ set_tar_features
|
||||
+ Log $BACKUP_PROG $TAR_OPTIONS --sparse --block-number --totals --verbose \
|
||||
+ --no-wildcards-match-slash --one-file-system \
|
||||
+ --ignore-failed-read "${BACKUP_PROG_OPTIONS[@]}" \
|
||||
+ $BACKUP_PROG_CREATE_NEWER_OPTIONS \
|
||||
+ ${BACKUP_PROG_BLOCKS:+-b $BACKUP_PROG_BLOCKS} "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
+ -X $TMP_DIR/backup-exclude.txt -C / -c -f - \
|
||||
+ $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE \| $BACKUP_PROG_CRYPT_OPTIONS BACKUP_PROG_CRYPT_KEY \| $SPLIT_COMMAND
|
||||
+
|
||||
+ # Variable used to record the short name of piped commands in case of
|
||||
+ # error, e.g. ( "tar" "cat" "dd" ) in case of unencrypted and unsplit backup.
|
||||
+ backup_prog_shortnames=(
|
||||
+ "$(basename $(echo "$BACKUP_PROG" | awk '{ print $1 }'))"
|
||||
+ "$(basename $(echo "$BACKUP_PROG_CRYPT_OPTIONS" | awk '{ print $1 }'))"
|
||||
+ "$(basename $(echo "$SPLIT_COMMAND" | awk '{ print $1 }'))"
|
||||
+ )
|
||||
+ for index in ${!backup_prog_shortnames[@]} ; do
|
||||
+ [ -n "${backup_prog_shortnames[$index]}" ] || BugError "No computed shortname for pipe component $index"
|
||||
+ done
|
||||
+
|
||||
+ $BACKUP_PROG $TAR_OPTIONS --sparse --block-number --totals --verbose \
|
||||
+ --no-wildcards-match-slash --one-file-system \
|
||||
+ --ignore-failed-read "${BACKUP_PROG_OPTIONS[@]}" \
|
||||
+ $BACKUP_PROG_CREATE_NEWER_OPTIONS \
|
||||
+ ${BACKUP_PROG_BLOCKS:+-b $BACKUP_PROG_BLOCKS} \
|
||||
+ "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
+ -X $TMP_DIR/backup-exclude.txt -C / -c -f - \
|
||||
+ $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE | \
|
||||
+ \
|
||||
+ $BACKUP_PROG_CRYPT_OPTIONS $BACKUP_PROG_CRYPT_KEY | \
|
||||
+ \
|
||||
+ $SPLIT_COMMAND
|
||||
+ pipes_rc=( ${PIPESTATUS[@]} )
|
||||
+
|
||||
+ # Exit code logic:
|
||||
+ # - never return rc=1 (this is reserved for "tar" warning about modified files)
|
||||
+ # - process exit code in pipe's reverse order
|
||||
+ # - if last command failed (e.g. "dd"), return an error
|
||||
+ # - otherwise if previous command failed (e.g. "encrypt"), return an error
|
||||
+ # ...
|
||||
+ # - otherwise return "tar" exit code
|
||||
+ #
|
||||
+ # When an error occurs, record the program name in $FAILING_BACKUP_PROG_FILE
|
||||
+ # and real exit code in $FAILING_BACKUP_PROG_RC_FILE.
|
||||
+
|
||||
+ let index=${#pipes_rc[@]}-1
|
||||
+ while [ $index -ge 0 ] ; do
|
||||
+ rc=${pipes_rc[$index]}
|
||||
+ if [ $rc -ne 0 ] ; then
|
||||
+ echo "${backup_prog_shortnames[$index]}" > $FAILING_BACKUP_PROG_FILE
|
||||
+ echo "$rc" > $FAILING_BACKUP_PROG_RC_FILE
|
||||
+ if [ $rc -eq 1 ] && [ "${backup_prog_shortnames[$index]}" != "tar" ] ; then
|
||||
+ rc=2
|
||||
+ fi
|
||||
+ exit $rc
|
||||
+ fi
|
||||
+ # This pipe command succeeded, check the previous one
|
||||
+ let index--
|
||||
+ done
|
||||
+ # This was a success
|
||||
+ exit 0
|
||||
+ ;;
|
||||
+ (rsync)
|
||||
+ # make sure that the target is a directory
|
||||
+ mkdir -p $v "$backuparchive" >&2
|
||||
+ Log $BACKUP_PROG --verbose "${BACKUP_RSYNC_OPTIONS[@]}" --one-file-system --delete \
|
||||
+ --exclude-from=$TMP_DIR/backup-exclude.txt --delete-excluded \
|
||||
+ $(cat $TMP_DIR/backup-include.txt) "$backuparchive"
|
||||
+ $BACKUP_PROG --verbose "${BACKUP_RSYNC_OPTIONS[@]}" --one-file-system --delete \
|
||||
+ --exclude-from=$TMP_DIR/backup-exclude.txt --delete-excluded \
|
||||
+ $(cat $TMP_DIR/backup-include.txt) "$backuparchive" >&2
|
||||
+ ;;
|
||||
+ (*)
|
||||
+ Log "Using unsupported backup program '$BACKUP_PROG'"
|
||||
+ Log $BACKUP_PROG "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
+ $BACKUP_PROG_OPTIONS_CREATE_ARCHIVE $TMP_DIR/backup-exclude.txt \
|
||||
+ "${BACKUP_PROG_OPTIONS[@]}" $backuparchive \
|
||||
+ $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE > $backuparchive
|
||||
+ $BACKUP_PROG "${BACKUP_PROG_COMPRESS_OPTIONS[@]}" \
|
||||
+ $BACKUP_PROG_OPTIONS_CREATE_ARCHIVE $TMP_DIR/backup-exclude.txt \
|
||||
+ "${BACKUP_PROG_OPTIONS[@]}" $backuparchive \
|
||||
+ $(cat $TMP_DIR/backup-include.txt) $RUNTIME_LOGFILE > $backuparchive
|
||||
+ ;;
|
||||
esac 2> "${TMP_DIR}/${BACKUP_PROG_ARCHIVE}.log"
|
||||
# important trick: the backup prog is the last in each case entry and the case .. esac is the last command
|
||||
# in the (..) subshell. As a result the return code of the subshell is the return code of the backup prog!
|
||||
@@ -121,44 +171,44 @@ sleep 1 # Give the backup software a good chance to start working
|
||||
|
||||
# return disk usage in bytes
|
||||
function get_disk_used() {
|
||||
- let "$(stat -f -c 'used=(%b-%f)*%S' $1)"
|
||||
- echo $used
|
||||
+ let "$(stat -f -c 'used=(%b-%f)*%S' $1)"
|
||||
+ echo $used
|
||||
}
|
||||
|
||||
# While the backup runs in a sub-process, display some progress information to the user.
|
||||
# ProgressInfo texts have a space at the end to get the 'OK' from ProgressStop shown separated.
|
||||
test "$PROGRESS_WAIT_SECONDS" || PROGRESS_WAIT_SECONDS=1
|
||||
case "$( basename $BACKUP_PROG )" in
|
||||
- (tar)
|
||||
- while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null; do
|
||||
- #blocks="$(stat -c %b ${backuparchive})"
|
||||
- #size="$((blocks*512))"
|
||||
- size="$(stat -c %s ${backuparchive}* | awk '{s+=$1} END {print s}')"
|
||||
- ProgressInfo "Archived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec] "
|
||||
- done
|
||||
- ;;
|
||||
- (rsync)
|
||||
- # since we do not want to do a $(du -s) run every second we count disk usage instead
|
||||
- # this obviously leads to wrong results in case something else is writing to the same
|
||||
- # disk at the same time as is very likely with a networked file system. For local disks
|
||||
- # this should be good enough and in any case this is only some eye candy.
|
||||
- # TODO: Find a fast way to count the actual transfer data, preferrable getting the info from rsync.
|
||||
- let old_disk_used="$(get_disk_used "$backuparchive")"
|
||||
- while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null; do
|
||||
- let disk_used="$(get_disk_used "$backuparchive")" size=disk_used-old_disk_used
|
||||
- ProgressInfo "Archived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec] "
|
||||
- done
|
||||
- ;;
|
||||
- (*)
|
||||
- while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null; do
|
||||
- size="$(stat -c "%s" "$backuparchive")" || {
|
||||
- kill -9 $BackupPID
|
||||
- ProgressError
|
||||
- Error "$(basename $BACKUP_PROG) failed to create the archive file"
|
||||
- }
|
||||
- ProgressInfo "Archived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec] "
|
||||
- done
|
||||
- ;;
|
||||
+ (tar)
|
||||
+ while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null; do
|
||||
+ #blocks="$(stat -c %b ${backuparchive})"
|
||||
+ #size="$((blocks*512))"
|
||||
+ size="$(stat -c %s ${backuparchive}* | awk '{s+=$1} END {print s}')"
|
||||
+ ProgressInfo "Archived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec] "
|
||||
+ done
|
||||
+ ;;
|
||||
+ (rsync)
|
||||
+ # since we do not want to do a $(du -s) run every second we count disk usage instead
|
||||
+ # this obviously leads to wrong results in case something else is writing to the same
|
||||
+ # disk at the same time as is very likely with a networked file system. For local disks
|
||||
+ # this should be good enough and in any case this is only some eye candy.
|
||||
+ # TODO: Find a fast way to count the actual transfer data, preferrable getting the info from rsync.
|
||||
+ let old_disk_used="$(get_disk_used "$backuparchive")"
|
||||
+ while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null; do
|
||||
+ let disk_used="$(get_disk_used "$backuparchive")" size=disk_used-old_disk_used
|
||||
+ ProgressInfo "Archived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec] "
|
||||
+ done
|
||||
+ ;;
|
||||
+ (*)
|
||||
+ while sleep $PROGRESS_WAIT_SECONDS ; kill -0 $BackupPID 2>/dev/null; do
|
||||
+ size="$(stat -c "%s" "$backuparchive")" || {
|
||||
+ kill -9 $BackupPID
|
||||
+ ProgressError
|
||||
+ Error "$(basename $BACKUP_PROG) failed to create the archive file"
|
||||
+ }
|
||||
+ ProgressInfo "Archived $((size/1024/1024)) MiB [avg $((size/1024/(SECONDS-starttime))) KiB/sec] "
|
||||
+ done
|
||||
+ ;;
|
||||
esac
|
||||
ProgressStop
|
||||
transfertime="$((SECONDS-starttime))"
|
||||
@@ -177,10 +227,12 @@ sleep 1
|
||||
# everyone should see this warning, even if not verbose
|
||||
case "$(basename $BACKUP_PROG)" in
|
||||
(tar)
|
||||
- if (( $backup_prog_rc == 1 )); then
|
||||
- LogPrint "WARNING: $(basename $BACKUP_PROG) ended with return code $backup_prog_rc and below output:
|
||||
+ if (( $backup_prog_rc != 0 )); then
|
||||
+ prog="$(cat $FAILING_BACKUP_PROG_FILE)"
|
||||
+ if (( $backup_prog_rc == 1 )); then
|
||||
+ LogUserOutput "WARNING: $prog ended with return code 1 and below output:
|
||||
---snip---
|
||||
-$(grep '^tar: ' $RUNTIME_LOGFILE | sed -e 's/^/ /' | tail -n3)
|
||||
+$(grep '^tar: ' "${TMP_DIR}/${BACKUP_PROG_ARCHIVE}.log" | sed -e 's/^/ /' | tail -n3)
|
||||
----------
|
||||
This means that files have been modified during the archiving
|
||||
process. As a result the backup may not be completely consistent
|
||||
@@ -188,16 +240,19 @@ or may not be a perfect copy of the system. Relax-and-Recover
|
||||
will continue, however it is highly advisable to verify the
|
||||
backup in order to be sure to safely recover this system.
|
||||
"
|
||||
- elif (( $backup_prog_rc > 1 )); then
|
||||
- Error "$(basename $BACKUP_PROG) failed with return code $backup_prog_rc and below output:
|
||||
+ else
|
||||
+ rc=$(cat $FAILING_BACKUP_PROG_RC_FILE)
|
||||
+ Error "$prog failed with return code $rc and below output:
|
||||
---snip---
|
||||
-$(grep '^tar: ' $RUNTIME_LOGFILE | sed -e 's/^/ /' | tail -n3)
|
||||
+$(grep "^$prog: " "${TMP_DIR}/${BACKUP_PROG_ARCHIVE}.log" | sed -e 's/^/ /' | tail -n3)
|
||||
----------
|
||||
This means that the archiving process ended prematurely, or did
|
||||
not even start. As a result it is unlikely you can recover this
|
||||
system properly. Relax-and-Recover is therefore aborting execution.
|
||||
"
|
||||
- fi;;
|
||||
+ fi
|
||||
+ fi
|
||||
+ ;;
|
||||
(*)
|
||||
if (( $backup_prog_rc > 0 )) ; then
|
||||
Error "$(basename $BACKUP_PROG) failed with return code $backup_prog_rc
|
||||
@@ -212,10 +267,12 @@ esac
|
||||
|
||||
tar_message="$(tac $RUNTIME_LOGFILE | grep -m1 '^Total bytes written: ')"
|
||||
if [ $backup_prog_rc -eq 0 -a "$tar_message" ] ; then
|
||||
- LogPrint "$tar_message in $transfertime seconds."
|
||||
+ LogPrint "$tar_message in $transfertime seconds."
|
||||
elif [ "$size" ]; then
|
||||
- LogPrint "Archived $((size/1024/1024)) MiB in $((transfertime)) seconds [avg $((size/1024/transfertime)) KiB/sec]"
|
||||
+ LogPrint "Archived $((size/1024/1024)) MiB in $((transfertime)) seconds [avg $((size/1024/transfertime)) KiB/sec]"
|
||||
fi
|
||||
|
||||
### Copy progress log to backup media
|
||||
cp $v "${TMP_DIR}/${BACKUP_PROG_ARCHIVE}.log" "${opath}/${BACKUP_PROG_ARCHIVE}.log" >&2
|
||||
+
|
||||
+# vim: set et ts=4 sw=4:
|
1487
SOURCES/rear-bz1639705.patch
Normal file
1487
SOURCES/rear-bz1639705.patch
Normal file
File diff suppressed because it is too large
Load Diff
156
SOURCES/rear-bz1652828-bz1652853.patch
Normal file
156
SOURCES/rear-bz1652828-bz1652853.patch
Normal file
@ -0,0 +1,156 @@
|
||||
diff --git a/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh b/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh
|
||||
index 9c4212ae..873e244e 100644
|
||||
--- a/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh
|
||||
+++ b/usr/share/rear/build/GNU/Linux/100_copy_as_is.sh
|
||||
@@ -54,9 +54,13 @@ Log "copy_as_is_executables = ${copy_as_is_executables[@]}"
|
||||
# add them to the LIBS list if they are not yet included in the copied files:
|
||||
Log "Adding required libraries of executables in all the copied files to LIBS"
|
||||
local required_library=""
|
||||
-for required_library in $( RequiredSharedOjects "${copy_as_is_executables[@]}" ) ; do
|
||||
- # Skip when the required library was already actually copied by 'tar' above:
|
||||
- grep -q "$required_library" $copy_as_is_filelist_file && continue
|
||||
+for required_library in $( RequiredSharedObjects "${copy_as_is_executables[@]}" ) ; do
|
||||
+ # Skip when the required library was already actually copied by 'tar' above.
|
||||
+ # grep for a full line (copy_as_is_filelist_file contains 1 file name per line)
|
||||
+ # to avoid that libraries get skipped when their library path is a substring
|
||||
+ # of another already copied library, e.g. do not skip /path/to/lib when
|
||||
+ # /other/path/to/lib was already copied, cf. https://github.com/rear/rear/pull/1976
|
||||
+ grep -q "^${required_library}\$" $copy_as_is_filelist_file && continue
|
||||
# Skip when the required library is already in LIBS:
|
||||
IsInArray "$required_library" "${LIBS[@]}" && continue
|
||||
Log "Adding required library '$required_library' to LIBS"
|
||||
diff --git a/usr/share/rear/build/GNU/Linux/390_copy_binaries_libraries.sh b/usr/share/rear/build/GNU/Linux/390_copy_binaries_libraries.sh
|
||||
index f7809bc7..ed02dea9 100644
|
||||
--- a/usr/share/rear/build/GNU/Linux/390_copy_binaries_libraries.sh
|
||||
+++ b/usr/share/rear/build/GNU/Linux/390_copy_binaries_libraries.sh
|
||||
@@ -62,16 +62,16 @@ Log "Binaries being copied: ${all_binaries[@]}"
|
||||
copy_binaries "$ROOTFS_DIR/bin" "${all_binaries[@]}"
|
||||
|
||||
# Copy libraries:
|
||||
-# It is crucial to also have all LIBS itself in all_libs because RequiredSharedOjects()
|
||||
+# It is crucial to also have all LIBS itself in all_libs because RequiredSharedObjects()
|
||||
# outputs only those libraries that are required by a library but not the library itself
|
||||
# so that without all LIBS itself in all_libs those libraries in LIBS are missing that
|
||||
# are not needed by a binary in all_binaries (all_binaries were already copied above).
|
||||
-# RequiredSharedOjects outputs the required shared objects on STDOUT.
|
||||
+# RequiredSharedObjects outputs the required shared objects on STDOUT.
|
||||
# The output are absolute paths to the required shared objects.
|
||||
# The output can also be symbolic links (also as absolute paths).
|
||||
# In case of symbolic links only the link but not the link target is output.
|
||||
# Therefore for symbolic links also the link target gets copied below.
|
||||
-local all_libs=( "${LIBS[@]}" $( RequiredSharedOjects "${all_binaries[@]}" "${LIBS[@]}" ) )
|
||||
+local all_libs=( "${LIBS[@]}" $( RequiredSharedObjects "${all_binaries[@]}" "${LIBS[@]}" ) )
|
||||
|
||||
Log "Libraries being copied: ${all_libs[@]}"
|
||||
local lib=""
|
||||
diff --git a/usr/share/rear/build/OPALPBA/Linux-i386/391_list_executable_dependencies.sh b/usr/share/rear/build/OPALPBA/Linux-i386/391_list_executable_dependencies.sh
|
||||
index 9803200d..8cb27d78 100644
|
||||
--- a/usr/share/rear/build/OPALPBA/Linux-i386/391_list_executable_dependencies.sh
|
||||
+++ b/usr/share/rear/build/OPALPBA/Linux-i386/391_list_executable_dependencies.sh
|
||||
@@ -8,7 +8,7 @@ if is_true $KEEP_BUILD_DIR; then
|
||||
executable_dependencies_list="$TMP_DIR/executable-dependencies"
|
||||
|
||||
for executable in "${executables[@]}"; do
|
||||
- dependents=( $(RequiredSharedOjects "$ROOTFS_DIR/$executable") )
|
||||
+ dependents=( $(RequiredSharedObjects "$ROOTFS_DIR/$executable") )
|
||||
echo "$executable: ${dependents[*]}"
|
||||
done > "$executable_dependencies_list"
|
||||
|
||||
diff --git a/usr/share/rear/build/default/980_verify_rootfs.sh b/usr/share/rear/build/default/980_verify_rootfs.sh
|
||||
index f8b3e8e9..d03e5f34 100644
|
||||
--- a/usr/share/rear/build/default/980_verify_rootfs.sh
|
||||
+++ b/usr/share/rear/build/default/980_verify_rootfs.sh
|
||||
@@ -51,6 +51,11 @@ if test "$BACKUP" = "SESAM" ; then
|
||||
# related libraries
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SESAM_LD_LIBRARY_PATH
|
||||
fi
|
||||
+if test "$BACKUP" = "NBU" ; then
|
||||
+ # Use a NBU-specific LD_LIBRARY_PATH to find NBU libraries
|
||||
+ # see https://github.com/rear/rear/issues/1974
|
||||
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NBU_LD_LIBRARY_PATH
|
||||
+fi
|
||||
# Actually test all binaries for 'not found' libraries.
|
||||
# Find all binaries and libraries also e.g. those that are copied via COPY_AS_IS into other paths:
|
||||
for binary in $( find $ROOTFS_DIR -type f -executable -printf '/%P\n' ); do
|
||||
diff --git a/usr/share/rear/conf/default.conf b/usr/share/rear/conf/default.conf
|
||||
index 0f0d0675..796f228a 100644
|
||||
--- a/usr/share/rear/conf/default.conf
|
||||
+++ b/usr/share/rear/conf/default.conf
|
||||
@@ -1467,7 +1467,8 @@ OBDR_BLOCKSIZE=2048
|
||||
##
|
||||
#
|
||||
COPY_AS_IS_NBU=( /usr/openv/bin/vnetd /usr/openv/bin/vopied /usr/openv/lib /usr/openv/netbackup /usr/openv/var/auth/[mn]*.txt )
|
||||
-COPY_AS_IS_EXCLUDE_NBU=( "/usr/openv/netbackup/logs/*" "/usr/openv/netbackup/bin/bpjava*" "/usr/openv/netbackup/bin/xbp" )
|
||||
+COPY_AS_IS_EXCLUDE_NBU=( "/usr/openv/netbackup/logs/*" "/usr/openv/netbackup/bin/bpjava*" /usr/openv/netbackup/bin/xbp /usr/openv/netbackup/bin/private /usr/openv/lib/java /usr/openv/lib/shared/vddk /usr/openv/netbackup/baremetal )
|
||||
+NBU_LD_LIBRARY_PATH="/usr/openv/lib"
|
||||
PROGS_NBU=( )
|
||||
|
||||
##
|
||||
diff --git a/usr/share/rear/lib/_input-output-functions.sh b/usr/share/rear/lib/_input-output-functions.sh
|
||||
index d5eed43e..bdbf593d 100644
|
||||
--- a/usr/share/rear/lib/_input-output-functions.sh
|
||||
+++ b/usr/share/rear/lib/_input-output-functions.sh
|
||||
@@ -324,10 +324,11 @@ function LogToSyslog () {
|
||||
# see https://github.com/rear/rear/issues/729
|
||||
function has_binary () {
|
||||
for bin in $@ ; do
|
||||
- # Suppress success output via stdout (but keep failure output via stderr):
|
||||
- if type $bin 1>/dev/null ; then
|
||||
- return 0
|
||||
- fi
|
||||
+ # Suppress success output via stdout which is crucial when has_binary is called
|
||||
+ # in other functions that provide their intended function results via stdout
|
||||
+ # to not pollute intended function results with intermixed has_binary stdout
|
||||
+ # (e.g. the RequiredSharedObjects function) but keep failure output via stderr:
|
||||
+ type $bin 1>/dev/null && return 0
|
||||
done
|
||||
return 1
|
||||
}
|
||||
diff --git a/usr/share/rear/lib/linux-functions.sh b/usr/share/rear/lib/linux-functions.sh
|
||||
index 6a767367..3fb44e6d 100644
|
||||
--- a/usr/share/rear/lib/linux-functions.sh
|
||||
+++ b/usr/share/rear/lib/linux-functions.sh
|
||||
@@ -100,13 +100,13 @@ function FindStorageDrivers () {
|
||||
|
||||
# Determine all required shared objects (shared/dynamic libraries)
|
||||
# for programs and/or shared objects (binaries) specified in $@.
|
||||
-# RequiredSharedOjects outputs the required shared objects on STDOUT.
|
||||
+# RequiredSharedObjects outputs the required shared objects on STDOUT.
|
||||
# The output are absolute paths to the required shared objects.
|
||||
# The output can also be symbolic links (also as absolute paths).
|
||||
# In case of symbolic links only the link but not the link target is output.
|
||||
-function RequiredSharedOjects () {
|
||||
- has_binary ldd || Error "Cannot run RequiredSharedOjects() because there is no ldd binary"
|
||||
- Log "RequiredSharedOjects: Determining required shared objects"
|
||||
+function RequiredSharedObjects () {
|
||||
+ has_binary ldd || Error "Cannot run RequiredSharedObjects() because there is no ldd binary"
|
||||
+ Log "RequiredSharedObjects: Determining required shared objects"
|
||||
# It uses 'ldd' to determine all required shared objects because 'ldd' outputs
|
||||
# also transitively required shared objects i.e. libraries needed by libraries,
|
||||
# e.g. for /usr/sbin/parted also the libraries needed by the libparted library:
|
||||
@@ -164,10 +164,11 @@ function RequiredSharedOjects () {
|
||||
# 2. Line: " lib (mem-addr)" -> virtual library
|
||||
# 3. Line: " lib => not found" -> print error to stderr
|
||||
# 4. Line: " lib => /path/to/lib (mem-addr)" -> print $3 '/path/to/lib'
|
||||
- # 5. Line: " /path/to/lib (mem-addr)" -> print $1 '/path/to/lib'
|
||||
+ # 5. Line: " /path/to/lib => /path/to/lib2 (mem-addr)" -> print $3 '/path/to/lib2'
|
||||
+ # 6. Line: " /path/to/lib (mem-addr)" -> print $1 '/path/to/lib'
|
||||
ldd "$@" | awk ' /^\t.+ => not found/ { print "Shared object " $1 " not found" > "/dev/stderr" }
|
||||
/^\t.+ => \// { print $3 }
|
||||
- /^\t\// { print $1 } ' | sort -u
|
||||
+ /^\t\// && !/ => / { print $1 } ' | sort -u
|
||||
}
|
||||
|
||||
# Provide a shell, with custom exit-prompt and history
|
||||
diff --git a/usr/share/rear/prep/NBU/default/450_check_nbu_client_configured.sh b/usr/share/rear/prep/NBU/default/450_check_nbu_client_configured.sh
|
||||
index e01dcdbd..3cc29777 100644
|
||||
--- a/usr/share/rear/prep/NBU/default/450_check_nbu_client_configured.sh
|
||||
+++ b/usr/share/rear/prep/NBU/default/450_check_nbu_client_configured.sh
|
||||
@@ -5,5 +5,6 @@
|
||||
Log "Running: /usr/openv/netbackup/bin/bplist command"
|
||||
LANG=C /usr/openv/netbackup/bin/bplist -l -s `date -d "-5 days" \
|
||||
"+%m/%d/%Y"` / >/dev/null
|
||||
-[ $? -gt 0 ] && LogPrint "WARNING: Netbackup bplist check failed with error code $?.
|
||||
+rc=$?
|
||||
+[ $rc -gt 0 ] && LogPrint "WARNING: Netbackup bplist check failed with error code ${rc}.
|
||||
See $RUNTIME_LOGFILE for more details."
|
17
SOURCES/rear-bz1653214.patch
Normal file
17
SOURCES/rear-bz1653214.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff --git a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
index 4698618c..6b3194bd 100644
|
||||
--- a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
+++ b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
@@ -854,7 +854,11 @@ function handle_physdev () {
|
||||
|
||||
DebugPrint "$network_interface is a physical device"
|
||||
|
||||
- mac="$( cat $sysfspath/address )" || BugError "Could not read a MAC address for '$network_interface'."
|
||||
+ if [ -e $sysfspath/bonding_slave/perm_hwaddr ] ; then
|
||||
+ mac="$( cat $sysfspath/bonding_slave/perm_hwaddr )"
|
||||
+ else
|
||||
+ mac="$( cat $sysfspath/address )" || BugError "Could not read a MAC address for '$network_interface'."
|
||||
+ fi
|
||||
# Skip fake interfaces without MAC address
|
||||
[ "$mac" != "00:00:00:00:00:00" ] || return $rc_error
|
||||
|
35
SOURCES/rear-bz1655956.patch
Normal file
35
SOURCES/rear-bz1655956.patch
Normal file
@ -0,0 +1,35 @@
|
||||
diff --git a/usr/sbin/rear b/usr/sbin/rear
|
||||
index a51f820c..e21156bf 100755
|
||||
--- a/usr/sbin/rear
|
||||
+++ b/usr/sbin/rear
|
||||
@@ -527,6 +527,10 @@ Build date: $( date -R )
|
||||
if test "$WORKFLOW" != "help" ; then
|
||||
# Create temporary work area and register removal exit task:
|
||||
BUILD_DIR="$( mktemp -d -t rear.XXXXXXXXXXXXXXX || Error "Could not create build area '$BUILD_DIR'" )"
|
||||
+ # Since 'mktemp' doesn't always return a path under /tmp, the build
|
||||
+ # directory has always to be excluded for safety
|
||||
+ BACKUP_PROG_EXCLUDE+=( "$BUILD_DIR" )
|
||||
+
|
||||
QuietAddExitTask cleanup_build_area_and_end_program
|
||||
Log "Using build area '$BUILD_DIR'"
|
||||
ROOTFS_DIR=$BUILD_DIR/rootfs
|
||||
@@ -582,3 +586,5 @@ if test "$WORKFLOW" != "help" ; then
|
||||
fi
|
||||
|
||||
exit $EXIT_CODE
|
||||
+
|
||||
+# vim: set et ts=4 sw=4:
|
||||
diff --git a/usr/share/rear/conf/default.conf b/usr/share/rear/conf/default.conf
|
||||
index ef118998..52b05eea 100644
|
||||
--- a/usr/share/rear/conf/default.conf
|
||||
+++ b/usr/share/rear/conf/default.conf
|
||||
@@ -47,7 +47,9 @@
|
||||
# is set in the environment where /usr/sbin/rear is called.
|
||||
# To have a specific working area directory prefix for Relax-and-Recover
|
||||
# specify in /etc/rear/local.conf something like
|
||||
+#
|
||||
# export TMPDIR="/prefix/for/rear/working/directory"
|
||||
+#
|
||||
# where /prefix/for/rear/working/directory must already exist.
|
||||
# This is useful for example when there is not sufficient free space
|
||||
# in /tmp or $TMPDIR for the ISO image or even the backup archive.
|
91
SOURCES/rear-bz1659137.patch
Normal file
91
SOURCES/rear-bz1659137.patch
Normal file
@ -0,0 +1,91 @@
|
||||
diff --git a/usr/share/rear/skel/default/etc/scripts/system-setup.d/55-migrate-network-devices.sh b/usr/share/rear/skel/default/etc/scripts/system-setup.d/55-migrate-network-devices.sh
|
||||
index e3ebacce..17cd1dd6 100644
|
||||
--- a/usr/share/rear/skel/default/etc/scripts/system-setup.d/55-migrate-network-devices.sh
|
||||
+++ b/usr/share/rear/skel/default/etc/scripts/system-setup.d/55-migrate-network-devices.sh
|
||||
@@ -26,18 +26,47 @@ ORIGINAL_MACS=()
|
||||
# The ORIGINAL_DEVICES collects the original device names:
|
||||
ORIGINAL_DEVICES=()
|
||||
# The ORIG_MACS_FILE contains lines of the form: network_interface mac_address
|
||||
+
|
||||
+# Temporary rear_mappings_mac used when interfaces have been renamed
|
||||
+tmp_mac_mapping_file=$(mktemp)
|
||||
+
|
||||
# TODO: What should happen if there is no ORIG_MACS_FILE or when it is empty?
|
||||
while read orig_dev orig_mac junk ; do
|
||||
ORIGINAL_DEVICES=( "${ORIGINAL_DEVICES[@]}" "$orig_dev")
|
||||
ORIGINAL_MACS=( "${ORIGINAL_MACS[@]}" "$orig_mac" )
|
||||
- # Continue with the next original MAC address if it is found on the current system:
|
||||
- ip link show | grep -q "$orig_mac" && continue
|
||||
- MIGRATE_DEVNAMES=( "${MIGRATE_DEVNAMES[@]}" "$orig_dev" )
|
||||
- MIGRATE_MACS=( "${MIGRATE_MACS[@]}" "$orig_mac" )
|
||||
+ # Continue with the next original MAC address if it is found on the current
|
||||
+ # system, otherwise we consider it needs migration:
|
||||
+ new_dev=$( get_device_by_hwaddr "$orig_mac" )
|
||||
+ if [ -n "$new_dev" ] ; then
|
||||
+ [ "$new_dev" = "$orig_dev" ] && continue
|
||||
+ # The device was found but has been renamed (it was customized in
|
||||
+ # source system).
|
||||
+ # Create a temporary mac mapping, we don't want finalize() to update
|
||||
+ # the ifcfg-* files!
|
||||
+ echo "$orig_mac $orig_mac $orig_dev" >> $tmp_mac_mapping_file
|
||||
+ else
|
||||
+ MIGRATE_MACS+=( "$orig_mac" )
|
||||
+ fi
|
||||
done < $ORIG_MACS_FILE
|
||||
|
||||
-# Skip this process if all MACs and network interfacs (devices) are accounted for:
|
||||
-test ${#MIGRATE_MACS[@]} -eq 0 && test ${#MIGRATE_DEVNAMES[@]} -eq 0 && return 0
|
||||
+
|
||||
+if [ ${#MIGRATE_MACS[@]} -ne 0 ] ; then
|
||||
+ # If some MACs were not found (MIGRATE_MACS not empty) then, we need a migration
|
||||
+ :
|
||||
+elif [ -s $tmp_mac_mapping_file ] ; then
|
||||
+ # Else, if some devices were renamed, we also need a migration, but it will
|
||||
+ # be automatic thanks to the $tmp_mac_mapping_file mapping file
|
||||
+
|
||||
+ # We do not need the $MAC_MAPPING_FILE file from the user, just overwrite it
|
||||
+ # Later, we will remove that file to not have finalize() modify the ifcfg-*
|
||||
+ # files.
|
||||
+ mkdir -p $(dirname $MAC_MAPPING_FILE)
|
||||
+ cp $tmp_mac_mapping_file $MAC_MAPPING_FILE
|
||||
+else
|
||||
+ # Skip this process if all MACs and network interfaces (devices) are accounted for
|
||||
+ unset tmp_mac_mapping_file
|
||||
+ return 0
|
||||
+fi
|
||||
|
||||
# Find the MAC addresses that are now available.
|
||||
# This is an array with values of the form "$dev $mac $driver"
|
||||
@@ -74,7 +103,7 @@ done
|
||||
# so that it is shown to the user what MAC address mappings will be done:
|
||||
if read_and_strip_file $MAC_MAPPING_FILE ; then
|
||||
while read orig_dev orig_mac junk ; do
|
||||
- read_and_strip_file $MAC_MAPPING_FILE | grep -q "$orig_mac" && MANUAL_MAC_MAPPING=true
|
||||
+ read_and_strip_file $MAC_MAPPING_FILE | grep -qw "^$orig_mac" && MANUAL_MAC_MAPPING=true
|
||||
done < $ORIG_MACS_FILE
|
||||
fi
|
||||
|
||||
@@ -237,7 +266,7 @@ if is_true $reload_udev ; then
|
||||
echo -n "Reloading udev ... "
|
||||
# Force udev to reload rules (as they were just changed)
|
||||
# Failback to "udevadm control --reload" in case of problem (as specify in udevadm manpage in SLES12)
|
||||
- # If nothing work, then wait 1 seconf delay. It should let the time for udev to detect changes in the rules files.
|
||||
+ # If nothing work, then wait 1 second delay. It should let the time for udev to detect changes in the rules files.
|
||||
udevadm control --reload-rules || udevadm control --reload || sleep 1
|
||||
my_udevtrigger
|
||||
sleep 1
|
||||
@@ -252,5 +281,13 @@ if is_true $reload_udev ; then
|
||||
fi
|
||||
|
||||
# A later script in finalize/* will also go over the MAC mappings file and
|
||||
-# apply them to the files in the recovered system.
|
||||
+# apply them to the files in the recovered system, unless we did the mapping
|
||||
+# automatically, which means some device has been renamed and will probably
|
||||
+# gets its name back upon reboot.
|
||||
+if [ -s $tmp_mac_mapping_file ] ; then
|
||||
+ rm $MAC_MAPPING_FILE $tmp_mac_mapping_file
|
||||
+fi
|
||||
+
|
||||
+unset tmp_mac_mapping_file
|
||||
|
||||
+# vim: set et ts=4 sw=4:
|
17
SOURCES/rear-bz1663515.patch
Normal file
17
SOURCES/rear-bz1663515.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff --git a/usr/share/rear/lib/uefi-functions.sh b/usr/share/rear/lib/uefi-functions.sh
|
||||
index e40f2ab0..95e6292d 100644
|
||||
--- a/usr/share/rear/lib/uefi-functions.sh
|
||||
+++ b/usr/share/rear/lib/uefi-functions.sh
|
||||
@@ -46,6 +46,11 @@ function build_bootx86_efi {
|
||||
Log "Did not find grub-mkimage (cannot build bootx86.efi)"
|
||||
return
|
||||
fi
|
||||
- $gmkimage $v -O x86_64-efi -c $TMP_DIR/mnt/EFI/BOOT/embedded_grub.cfg -o $TMP_DIR/mnt/EFI/BOOT/BOOTX64.efi -p "/EFI/BOOT" part_gpt part_msdos fat ext2 normal chain boot configfile linux linuxefi multiboot jfs iso9660 usb usbms usb_keyboard video udf ntfs all_video gzio efi_gop reboot search test echo btrfs
|
||||
+ # as not all Linux distro's have the same grub modules present we verify what we have (see also https://github.com/rear/rear/pull/2001)
|
||||
+ grub_modules=""
|
||||
+ for grub_module in part_gpt part_msdos fat ext2 normal chain boot configfile linux linuxefi multiboot jfs iso9660 usb usbms usb_keyboard video udf ntfs all_video gzio efi_gop reboot search test echo btrfs ; do
|
||||
+ test "$( find /boot -type f -name "$grub_module.mod" 2>/dev/null )" && grub_modules="$grub_modules $grub_module"
|
||||
+ done
|
||||
+ $gmkimage $v -O x86_64-efi -c $TMP_DIR/mnt/EFI/BOOT/embedded_grub.cfg -o $TMP_DIR/mnt/EFI/BOOT/BOOTX64.efi -p "/EFI/BOOT" $grub_modules
|
||||
StopIfError "Error occurred during $gmkimage of BOOTX64.efi"
|
||||
}
|
94
SOURCES/rear-bz1672938.patch
Normal file
94
SOURCES/rear-bz1672938.patch
Normal file
@ -0,0 +1,94 @@
|
||||
diff --git a/usr/share/rear/lib/layout-functions.sh b/usr/share/rear/lib/layout-functions.sh
|
||||
index aa6fc938..4bc59131 100644
|
||||
--- a/usr/share/rear/lib/layout-functions.sh
|
||||
+++ b/usr/share/rear/lib/layout-functions.sh
|
||||
@@ -478,6 +478,9 @@ get_sysfs_name() {
|
||||
### /dev/dm-3 -> /dev/mapper/system-tmp
|
||||
### /dev/dm-4 -> /dev/mapper/oralun
|
||||
### /dev/dm-5 -> /dev/mapper/oralunp1
|
||||
+### /dev/sda -> /dev/sda
|
||||
+###
|
||||
+### Returns 0 on success, 1 if device is not existing
|
||||
get_device_name() {
|
||||
### strip common prefixes
|
||||
local name=${1#/dev/}
|
||||
@@ -485,47 +488,39 @@ get_device_name() {
|
||||
|
||||
contains_visible_char "$name" || BugError "Empty string passed to get_device_name"
|
||||
|
||||
- ### Translate dm-8 -> mapper/test
|
||||
- local device dev_number mapper_number
|
||||
- if [[ -d /sys/block/$name ]] ; then
|
||||
+ if [[ "$name" =~ ^mapper/ ]]; then
|
||||
+ echo "/dev/$name"
|
||||
+ return 0
|
||||
+ fi
|
||||
+
|
||||
+ if [[ -L "/dev/$name" ]] ; then
|
||||
+ # Map vg/lv into dm-X, which will then be resolved later
|
||||
+ name="$( basename $(readlink -f /dev/$name) )"
|
||||
+ fi
|
||||
+
|
||||
+ if [[ "$name" =~ ^dm- ]] ; then
|
||||
+ local device
|
||||
if [[ -r /sys/block/$name/dm/name ]] ; then
|
||||
### recent kernels have a dm subfolder
|
||||
- echo "/dev/mapper/$( < /sys/block/$name/dm/name)";
|
||||
- return 0
|
||||
+ device="$( < /sys/block/$name/dm/name )"
|
||||
else
|
||||
- ### loop over all block devices
|
||||
- dev_number=$( < /sys/block/$name/dev)
|
||||
- for device in /dev/mapper/* ; do
|
||||
- mapper_number=$(dmsetup info -c --noheadings -o major,minor ${device#/dev/mapper/} 2>/dev/null )
|
||||
- if [ "$dev_number" = "$mapper_number" ] ; then
|
||||
- echo "$device"
|
||||
- return 0
|
||||
- fi
|
||||
- done
|
||||
+ local dev_number=$( < /sys/block/$name/dev)
|
||||
+ if [[ ! -r "$TMP_DIR/dmsetup_info.txt" ]] ; then
|
||||
+ dmsetup info --noheadings -c -o name,major,minor > "$TMP_DIR/dmsetup_info.txt"
|
||||
+ fi
|
||||
+ device="$( awk -F ':' "/$dev_number\$/ { print \$1 }" < "$TMP_DIR/dmsetup_info.txt" )"
|
||||
+ [[ -n "$device" ]] || BugError "No device returned for major/minor $dev_number"
|
||||
fi
|
||||
- fi
|
||||
-
|
||||
- ### Translate device name to mapper name. ex: vg/lv -> mapper/vg-lv
|
||||
- if [[ "$name" =~ ^mapper/ ]]; then
|
||||
- echo "/dev/$name"
|
||||
+ echo "/dev/mapper/$device"
|
||||
return 0
|
||||
fi
|
||||
- if my_dm=`readlink /dev/$name`; then
|
||||
- for mapper_dev in /dev/mapper/*; do
|
||||
- if mapper_dm=`readlink $mapper_dev`; then
|
||||
- if [ "$my_dm" = "$mapper_dm" ]; then
|
||||
- echo $mapper_dev
|
||||
- return 0
|
||||
- fi
|
||||
- fi
|
||||
- done
|
||||
- fi
|
||||
|
||||
### handle cciss sysfs naming
|
||||
name=${name//!//}
|
||||
|
||||
### just return the possibly nonexisting name
|
||||
echo "/dev/$name"
|
||||
+ [[ -r "/dev/$name" ]] && return 0
|
||||
return 1
|
||||
}
|
||||
|
||||
diff --git a/usr/share/rear/rescue/GNU/Linux/270_fc_transport_info.sh b/usr/share/rear/rescue/GNU/Linux/270_fc_transport_info.sh
|
||||
index 0de4f60b..64276dfe 100644
|
||||
--- a/usr/share/rear/rescue/GNU/Linux/270_fc_transport_info.sh
|
||||
+++ b/usr/share/rear/rescue/GNU/Linux/270_fc_transport_info.sh
|
||||
@@ -1,3 +1,6 @@
|
||||
+# don't collect this anymore, this can be very slow
|
||||
+return 0
|
||||
+
|
||||
# collect output from production SAN disks
|
||||
|
||||
find /sys/class/fc_transport -follow -maxdepth 6 \( -name model -o -name vendor -o -name rev -name state -o -name model_name -o -name size -o -name node_name \) 2>/dev/null| egrep -v 'driver|rport|power|drivers|devices' | xargs grep '.' > $VAR_DIR/recovery/fc_transport.info >&2
|
40
SOURCES/rear-bz1685166.patch
Normal file
40
SOURCES/rear-bz1685166.patch
Normal file
@ -0,0 +1,40 @@
|
||||
diff --git a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
index 6b3194bd..57e8777a 100644
|
||||
--- a/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
+++ b/usr/share/rear/rescue/GNU/Linux/310_network_devices.sh
|
||||
@@ -562,7 +562,12 @@ function handle_team () {
|
||||
local network_interface=$1
|
||||
local sysfspath=/sys/class/net/$network_interface
|
||||
|
||||
- if [ "$( ethtool -i $network_interface | awk '$1 == "driver:" { print $2 }' )" != "team" ] ; then
|
||||
+ if has_binary ethtool ; then
|
||||
+ if [ "$( ethtool -i $network_interface | awk '$1 == "driver:" { print $2 }' )" != "team" ] ; then
|
||||
+ return $rc_error
|
||||
+ fi
|
||||
+ else
|
||||
+ LogPrintError "Couldn't determine if network interface '$network_interface' is a Team, skipping."
|
||||
return $rc_error
|
||||
fi
|
||||
|
||||
@@ -854,10 +859,17 @@ function handle_physdev () {
|
||||
|
||||
DebugPrint "$network_interface is a physical device"
|
||||
|
||||
- if [ -e $sysfspath/bonding_slave/perm_hwaddr ] ; then
|
||||
- mac="$( cat $sysfspath/bonding_slave/perm_hwaddr )"
|
||||
- else
|
||||
- mac="$( cat $sysfspath/address )" || BugError "Could not read a MAC address for '$network_interface'."
|
||||
+ local mac=""
|
||||
+
|
||||
+ if has_binary ethtool ; then
|
||||
+ mac="$( ethtool -P $network_interface 2>/dev/null | awk '{ print $NF }' )"
|
||||
+ fi
|
||||
+ if [ -z "$mac" ] ; then
|
||||
+ if [ -e $sysfspath/bonding_slave/perm_hwaddr ] ; then
|
||||
+ mac="$( cat $sysfspath/bonding_slave/perm_hwaddr )"
|
||||
+ else
|
||||
+ mac="$( cat $sysfspath/address )" || BugError "Could not read a MAC address for '$network_interface'."
|
||||
+ fi
|
||||
fi
|
||||
# Skip fake interfaces without MAC address
|
||||
[ "$mac" != "00:00:00:00:00:00" ] || return $rc_error
|
85
SOURCES/rear-rhbz1610638.patch
Normal file
85
SOURCES/rear-rhbz1610638.patch
Normal file
@ -0,0 +1,85 @@
|
||||
diff --git a/usr/share/rear/conf/GNU/Linux.conf b/usr/share/rear/conf/GNU/Linux.conf
|
||||
index 5b9343b9..f0c44381 100644
|
||||
--- a/usr/share/rear/conf/GNU/Linux.conf
|
||||
+++ b/usr/share/rear/conf/GNU/Linux.conf
|
||||
@@ -184,6 +184,8 @@ env
|
||||
w
|
||||
dosfslabel
|
||||
sysctl
|
||||
+blockdev
|
||||
+lsblk
|
||||
)
|
||||
|
||||
# the lib* serves to cover both 32bit and 64bit libraries!
|
||||
diff --git a/usr/share/rear/lib/layout-functions.sh b/usr/share/rear/lib/layout-functions.sh
|
||||
index eb45115b..af1069ea 100644
|
||||
--- a/usr/share/rear/lib/layout-functions.sh
|
||||
+++ b/usr/share/rear/lib/layout-functions.sh
|
||||
@@ -365,7 +365,9 @@ get_partition_start() {
|
||||
local disk_name=$1
|
||||
local start_block start
|
||||
|
||||
- local block_size=$(get_block_size ${disk_name%/*})
|
||||
+ # When reading /sys/block/.../start or "dmsetup table", output is always in
|
||||
+ # 512 bytes blocks
|
||||
+ local block_size=512
|
||||
|
||||
if [[ -r /sys/block/$disk_name/start ]] ; then
|
||||
start_block=$(< $path/start)
|
||||
@@ -548,11 +550,32 @@ get_device_mapping() {
|
||||
}
|
||||
|
||||
# Get the size in bytes of a disk/partition.
|
||||
+# For disks, use "sda" as argument.
|
||||
# For partitions, use "sda/sda1" as argument.
|
||||
get_disk_size() {
|
||||
local disk_name=$1
|
||||
+ # When a partition is specified (e.g. sda/sda1)
|
||||
+ # then it has to read /sys/block/sda/sda1/size in the old code below.
|
||||
+ # In contrast the get_block_size() function below is different
|
||||
+ # because it is non-sense asking for block size of a partition,
|
||||
+ # so that the get_block_size() function below is stripping everything
|
||||
+ # in front of the blockdev basename (e.g. /some/path/sda -> sda)
|
||||
+ # cf. https://github.com/rear/rear/pull/1885#discussion_r207900308
|
||||
+
|
||||
+ # Preferably use blockdev, see https://github.com/rear/rear/issues/1884
|
||||
+ if has_binary blockdev; then
|
||||
+ # ${disk_name##*/} translates 'sda/sda1' into 'sda1' and 'sda' into 'sda'
|
||||
+ blockdev --getsize64 /dev/${disk_name##*/} && return
|
||||
+ # If blockdev fails do not error out but fall through to the old code below
|
||||
+ # because blockdev fails e.g. for a CDROM device when no DVD or ISO is attached to
|
||||
+ # cf. https://github.com/rear/rear/pull/1885#issuecomment-410676283
|
||||
+ # and https://github.com/rear/rear/pull/1885#issuecomment-410697398
|
||||
+ fi
|
||||
|
||||
- local block_size=$(get_block_size ${disk_name%/*})
|
||||
+ # Linux always considers sectors to be 512 bytes long. See the note in the
|
||||
+ # kernel source, specifically, include/linux/types.h regarding the sector_t
|
||||
+ # type for details.
|
||||
+ local block_size=512
|
||||
|
||||
retry_command test -r /sys/block/$disk_name/size || Error "Could not determine size of disk $disk_name"
|
||||
|
||||
@@ -565,9 +588,20 @@ get_disk_size() {
|
||||
|
||||
# Get the block size of a disk.
|
||||
get_block_size() {
|
||||
+ local disk_name="${1##*/}" # /some/path/sda -> sda
|
||||
+
|
||||
+ # Preferably use blockdev, see https://github.com/rear/rear/issues/1884
|
||||
+ if has_binary blockdev; then
|
||||
+ blockdev --getss /dev/$disk_name && return
|
||||
+ # If blockdev fails do not error out but fall through to the old code below
|
||||
+ # because blockdev fails e.g. for a CDROM device when no DVD or ISO is attached to
|
||||
+ # cf. https://github.com/rear/rear/pull/1885#issuecomment-410676283
|
||||
+ # and https://github.com/rear/rear/pull/1885#issuecomment-410697398
|
||||
+ fi
|
||||
+
|
||||
# Only newer kernels have an interface to get the block size
|
||||
- if [ -r /sys/block/$1/queue/logical_block_size ] ; then
|
||||
- echo $( < /sys/block/$1/queue/logical_block_size)
|
||||
+ if [ -r /sys/block/$disk_name/queue/logical_block_size ] ; then
|
||||
+ echo $( < /sys/block/$disk_name/queue/logical_block_size)
|
||||
else
|
||||
echo "512"
|
||||
fi
|
50
SOURCES/rear-rhbz1610647.patch
Normal file
50
SOURCES/rear-rhbz1610647.patch
Normal file
@ -0,0 +1,50 @@
|
||||
diff --git a/usr/share/rear/finalize/Linux-ppc64le/680_install_PPC_bootlist.sh b/usr/share/rear/finalize/Linux-ppc64le/680_install_PPC_bootlist.sh
|
||||
index bf1db404..3a07580a 100644
|
||||
--- a/usr/share/rear/finalize/Linux-ppc64le/680_install_PPC_bootlist.sh
|
||||
+++ b/usr/share/rear/finalize/Linux-ppc64le/680_install_PPC_bootlist.sh
|
||||
@@ -9,9 +9,12 @@ if grep -q "PowerNV" /proc/cpuinfo || grep -q "emulated by qemu" /proc/cpuinfo ;
|
||||
fi
|
||||
|
||||
# Look for the PPC PReP Boot Partition.
|
||||
-part=$( awk -F ' ' '/^part / {if ($6 ~ /prep/) {print $7}}' $LAYOUT_FILE )
|
||||
+part_list=$( awk -F ' ' '/^part / {if ($6 ~ /prep/) {print $7}}' $LAYOUT_FILE )
|
||||
|
||||
-if [ -n "$part" ]; then
|
||||
+# All the possible boot devices
|
||||
+boot_list=()
|
||||
+
|
||||
+for part in $part_list ; do
|
||||
LogPrint "PPC PReP Boot partition found: $part"
|
||||
|
||||
# Using $LAYOUT_DEPS file to find the disk device containing the partition.
|
||||
@@ -29,14 +32,23 @@ if [ -n "$part" ]; then
|
||||
# If yes, get the list of path which are part of the multipath device.
|
||||
# Limit to the first 5 PATH (see #876)
|
||||
if dmsetup ls --target multipath | grep -w ${bootdev#/dev/mapper/} >/dev/null 2>&1; then
|
||||
- LogPrint "Limiting bootlist to 5 entries..."
|
||||
- bootlist_path=$(dmsetup deps $bootdev -o devname | awk -F: '{gsub (" ",""); gsub("\\(","/dev/",$2) ; gsub("\\)"," ",$2) ; print $2}' | cut -d" " -f-5)
|
||||
- LogPrint "Set LPAR bootlist to $bootlist_path"
|
||||
- bootlist -m normal $bootlist_path
|
||||
+ LogPrint "Limiting bootlist to 5 entries as a maximum..."
|
||||
+ boot_list+=( $(dmsetup deps $bootdev -o devname | awk -F: '{gsub (" ",""); gsub("\\(","/dev/",$2) ; gsub("\\)"," ",$2) ; print $2}' | cut -d" " -f-5) )
|
||||
else
|
||||
# Single Path device found
|
||||
- LogPrint "Set LPAR bootlist to $bootdev"
|
||||
- bootlist -m normal $bootdev
|
||||
+ boot_list+=( $bootdev )
|
||||
fi
|
||||
- LogIfError "Unable to set bootlist. You will have to start in SMS to set it up manually."
|
||||
+done
|
||||
+
|
||||
+if [[ ${#boot_list[@]} -gt 5 ]]; then
|
||||
+ LogPrint "Too many entries for bootlist command, limiting to first 5 entries..."
|
||||
+ boot_list=( ${boot_list[@]:0:5} )
|
||||
fi
|
||||
+
|
||||
+if [[ ${#boot_list[@]} -gt 0 ]]; then
|
||||
+ LogPrint "Set LPAR bootlist to '${boot_list[*]}'"
|
||||
+ bootlist -m normal "${boot_list[@]}"
|
||||
+ LogPrintIfError "Unable to set bootlist. You will have to start in SMS to set it up manually."
|
||||
+fi
|
||||
+
|
||||
+# vim: set et ts=4 sw=4:
|
268
SPECS/rear.spec
Normal file
268
SPECS/rear.spec
Normal file
@ -0,0 +1,268 @@
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Relax-and-Recover is a Linux disaster recovery and system migration tool
|
||||
Name: rear
|
||||
Version: 2.4
|
||||
Release: 10%{?dist}
|
||||
License: GPLv3
|
||||
Group: Applications/File
|
||||
URL: http://relax-and-recover.org/
|
||||
|
||||
Source0: https://github.com/rear/rear/archive/%{version}.tar.gz#/rear-%{version}.tar.gz
|
||||
Patch4: rear-bz1492177-warning.patch
|
||||
Patch6: rear-rhbz1610638.patch
|
||||
Patch7: rear-rhbz1610647.patch
|
||||
Patch8: rear-bz1652828-bz1652853.patch
|
||||
Patch9: rear-bz1631183.patch
|
||||
Patch10: rear-bz1639705.patch
|
||||
Patch11: rear-bz1653214.patch
|
||||
Patch12: rear-bz1659137.patch
|
||||
patch13: rear-bz1663515.patch
|
||||
Patch14: rear-bz1672938.patch
|
||||
Patch15: rear-bz1685166.patch
|
||||
Patch16: rear-bz1655956.patch
|
||||
|
||||
ExcludeArch: s390x
|
||||
ExcludeArch: s390
|
||||
|
||||
### Dependencies on all distributions
|
||||
BuildRequires: asciidoc
|
||||
Requires: binutils
|
||||
Requires: ethtool
|
||||
Requires: gzip
|
||||
Requires: iputils
|
||||
Requires: parted
|
||||
Requires: tar
|
||||
Requires: openssl
|
||||
Requires: gawk
|
||||
Requires: attr
|
||||
Requires: bc
|
||||
|
||||
### If you require NFS, you may need the below packages
|
||||
#Requires: nfsclient portmap rpcbind
|
||||
|
||||
### We drop LSB requirements because it pulls in too many dependencies
|
||||
### The OS is hardcoded in /etc/rear/os.conf instead
|
||||
#Requires: redhat-lsb
|
||||
|
||||
### Required for Bacula/MySQL support
|
||||
#Requires: bacula-mysql
|
||||
|
||||
### Required for OBDR
|
||||
#Requires: lsscsi sg3_utils
|
||||
|
||||
### Optional requirement
|
||||
#Requires: cfg2html
|
||||
|
||||
%ifarch x86_64 i686
|
||||
Requires: syslinux
|
||||
%endif
|
||||
%ifarch ppc ppc64
|
||||
Requires: yaboot
|
||||
%endif
|
||||
|
||||
Requires: crontabs
|
||||
Requires: iproute
|
||||
#Requires: mkisofs
|
||||
Requires: xorriso
|
||||
|
||||
# mingetty is not available anymore with RHEL 7 (use agetty instead via systemd)
|
||||
# Note that CentOS also has rhel defined so there is no need to use centos
|
||||
%if 0%{?rhel} && 0%{?rhel} > 6
|
||||
Requires: util-linux
|
||||
%else
|
||||
Requires: mingetty
|
||||
Requires: util-linux
|
||||
%endif
|
||||
|
||||
### The rear-snapshot package is no more
|
||||
#Obsoletes: rear-snapshot
|
||||
|
||||
%description
|
||||
Relax-and-Recover is the leading Open Source disaster recovery and system
|
||||
migration solution. It comprises of a modular
|
||||
frame-work and ready-to-go workflows for many common situations to produce
|
||||
a bootable image and restore from backup using this image. As a benefit,
|
||||
it allows to restore to different hardware and can therefore be used as
|
||||
a migration tool as well.
|
||||
|
||||
Currently Relax-and-Recover supports various boot media (incl. ISO, PXE,
|
||||
OBDR tape, USB or eSATA storage), a variety of network protocols (incl.
|
||||
sftp, ftp, http, nfs, cifs) as well as a multitude of backup strategies
|
||||
(incl. IBM TSM, HP DataProtector, Symantec NetBackup, EMC NetWorker,
|
||||
Bacula, Bareos, BORG, Duplicity, rsync).
|
||||
|
||||
Relax-and-Recover was designed to be easy to set up, requires no maintenance
|
||||
and is there to assist when disaster strikes. Its setup-and-forget nature
|
||||
removes any excuse for not having a disaster recovery solution implemented.
|
||||
|
||||
Professional services and support are available.
|
||||
|
||||
%pre
|
||||
if [ $1 -gt 1 ] ; then
|
||||
# during upgrade remove obsolete directories
|
||||
%{__rm} -rf %{_datadir}/rear/output/NETFS
|
||||
fi
|
||||
|
||||
%prep
|
||||
%setup
|
||||
%patch4 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
|
||||
echo "30 1 * * * root /usr/sbin/rear checklayout || /usr/sbin/rear mkrescue" >rear.cron
|
||||
|
||||
### Add a specific os.conf so we do not depend on LSB dependencies
|
||||
%{?fedora:echo -e "OS_VENDOR=Fedora\nOS_VERSION=%{?fedora}" >etc/rear/os.conf}
|
||||
%{?rhel:echo -e "OS_VENDOR=RedHatEnterpriseServer\nOS_VERSION=%{?rhel}" >etc/rear/os.conf}
|
||||
|
||||
%build
|
||||
# asciidoc writes a timestamp to files it produces, based on the last
|
||||
# modified date of the source file, but is sensible to the timezone.
|
||||
# This makes the results differ according to the timezone of the build machine
|
||||
# and spurious changes will be seen.
|
||||
# Set the timezone to UTC as a workaround.
|
||||
# https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByAsciidoc
|
||||
TZ=UTC %{__make} -C doc
|
||||
|
||||
%install
|
||||
%{__rm} -rf %{buildroot}
|
||||
%{__make} install DESTDIR="%{buildroot}"
|
||||
%{__install} -Dp -m0644 rear.cron %{buildroot}%{_sysconfdir}/cron.d/rear
|
||||
|
||||
%files
|
||||
%defattr(-, root, root, 0755)
|
||||
%doc MAINTAINERS COPYING README.adoc doc/*.txt doc/user-guide/relax-and-recover-user-guide.html
|
||||
%doc %{_mandir}/man8/rear.8*
|
||||
%config(noreplace) %{_sysconfdir}/cron.d/rear
|
||||
%config(noreplace) %{_sysconfdir}/rear/
|
||||
%config(noreplace) %{_sysconfdir}/rear/cert/
|
||||
%{_datadir}/rear/
|
||||
%{_localstatedir}/lib/rear/
|
||||
%{_sbindir}/rear
|
||||
|
||||
%changelog
|
||||
* Tue Jun 4 2019 Pavel Cahyna <pcahyna@redhat.com> - 2.4-10
|
||||
- Apply upstream patch PR1993
|
||||
Automatically exclude $BUILD_DIR from the backup
|
||||
Resolves: rhbz1677733
|
||||
|
||||
* Mon Jun 3 2019 Pavel Cahyna <pcahyna@redhat.com> - 2.4-9
|
||||
- Update fix for bz#1657725. Previous fix was not correct, bootlist was still
|
||||
invoked only with one partition argument due to incorrect array expansion.
|
||||
See upstream PR2096, 2097, 2098.
|
||||
|
||||
* Tue May 28 2019 Pavel Cahyna <pcahyna@redhat.com> - 2.4-8
|
||||
- Apply upstream PR2065 (record permanent MAC address for team members)
|
||||
Resolves: rhbz1685178
|
||||
|
||||
* Tue May 28 2019 Pavel Cahyna <pcahyna@redhat.com> - 2.4-7
|
||||
- Apply upstream PR2034 (multipath optimizations for lots of devices)
|
||||
|
||||
* Mon Jan 14 2019 Pavel Cahyna <pcahyna@redhat.com> - 2.4-6
|
||||
- Require xorriso instead of genisoimage, it is now the preferred method
|
||||
and supports files over 4GB in size.
|
||||
- Apply upstream PR2004 (support for custom network interface naming)
|
||||
- Backport upstream PR2001 (UEFI support broken on Fedora 29 and RHEL 8)
|
||||
|
||||
* Thu Dec 13 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.4-4
|
||||
- Backport fixes for upstream bugs 1974 and 1975
|
||||
- Backport fix for upstream bug 1913 (backup succeeds in case of tar error)
|
||||
- Backport fix for upstream bug 1926 (support for LACP bonding and teaming)
|
||||
- Apply upstream PR1954 (record permanent MAC address for bond members)
|
||||
|
||||
* Thu Aug 09 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.4-3
|
||||
- Merge some spec changes from Fedora.
|
||||
- Apply upstream patch PR1887
|
||||
LPAR/PPC64 bootlist is incorrectly set when having multiple 'prep' partitions
|
||||
- Apply upstream patch PR1885
|
||||
Partition information recorded is unexpected when disk has 4K block size
|
||||
|
||||
* Wed Jul 18 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.4-2
|
||||
- Build and install the HTML user guide. #1418459
|
||||
|
||||
* Wed Jun 27 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.4-1
|
||||
- Rebase to version 2.4, drop patches integrated upstream
|
||||
Resolves #1534646 #1484051 #1498828 #1571266 #1496518
|
||||
|
||||
* Wed Feb 14 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.00-6
|
||||
- Ensure that NetBackup is started automatically upon recovery (PR#1544)
|
||||
Also do not kill daemons spawned by sysinit.service at the service's end
|
||||
(PR#1610, applies to NetBackup and also to dhclient)
|
||||
Resolves #1506231
|
||||
- Print a warning if grub2-mkimage is about to fail and suggest what to do.
|
||||
bz#1492177
|
||||
- Update the patch for #1388653 to the one actually merged upstream (PR1418)
|
||||
|
||||
* Fri Jan 12 2018 Pavel Cahyna <pcahyna@redhat.com> - 2.00-5
|
||||
- cd to the correct directory before md5sum to fix BACKUP_INTEGRITY_CHECK.
|
||||
Upstream PR#1685, bz1532676
|
||||
|
||||
* Mon Oct 23 2017 Pavel Cahyna <pcahyna@redhat.com> - 2.00-4
|
||||
- Retry get_disk_size to fix upstream #1370, bz1388653
|
||||
|
||||
* Wed Sep 13 2017 Pavel Cahyna <pcahyna@redhat.com> - 2.00-3
|
||||
- Fix rear mkrescue on systems w/o UEFI. Upstream PR#1481 issue#1478
|
||||
- Resolves: #1479002
|
||||
|
||||
* Wed May 17 2017 Jakub Mazanek <jmazanek@redhat.com> - 2.00-2
|
||||
- Excluding Archs s390 and s390x
|
||||
- Related #1355667
|
||||
|
||||
* Mon Feb 20 2017 Jakub Mazanek <jmazanek@redhat.com> - 2.00-1
|
||||
- Rebase to version 2.00
|
||||
- Resolves #1355667
|
||||
|
||||
* Tue Jul 19 2016 Petr Hracek <phracek@redhat.com> - 1.17.2-6
|
||||
- Replace experimental grep -P with grep -E
|
||||
Resolves: #1290205
|
||||
|
||||
* Wed Mar 23 2016 Petr Hracek <phracek@redhat.com> - 1.17.2-5
|
||||
- Remove backuped patched files
|
||||
Related: #1283930
|
||||
|
||||
* Wed Mar 23 2016 Petr Hracek <phracek@redhat.com> - 1.17.2-4
|
||||
- Rear recovery over teaming interface will not work
|
||||
Resolves: #1283930
|
||||
|
||||
* Tue Mar 08 2016 Petr Hracek <phracek@redhat.com> - 1.17.2-3
|
||||
- Replace experimental grep -P with grep -E
|
||||
Resolves: #1290205
|
||||
|
||||
* Tue Feb 23 2016 Petr Hracek <phracek@redhat.com> - 1.17.2-2
|
||||
- rear does not require syslinux
|
||||
- changing to arch package so that syslinux is installed
|
||||
- Resolves: #1283927
|
||||
|
||||
* Mon Sep 14 2015 Petr Hracek <phracek@redhat.com> - 1.17.2-1
|
||||
- New upstream release 1.17.2
|
||||
Related: #1059196
|
||||
|
||||
* Wed May 13 2015 Petr Hracek <phracek@redhat.com> 1.17.0-2
|
||||
- Fix Source tag
|
||||
Related: #1059196
|
||||
|
||||
* Mon May 04 2015 Petr Hracek <phracek@redhat.com> 1.17.0-1
|
||||
- Initial package for RHEL 7
|
||||
Resolves: #1059196
|
||||
|
||||
* Fri Oct 17 2014 Gratien D'haese <gratien.dhaese@gmail.com>
|
||||
- added the suse_version lines to identify the corresponding OS_VERSION
|
||||
|
||||
* Fri Jun 20 2014 Gratien D'haese <gratien.dhaese@gmail.com>
|
||||
- add %%pre section
|
||||
|
||||
* Thu Apr 11 2013 Gratien D'haese <gratien.dhaese@gmail.com>
|
||||
- changes Source
|
||||
|
||||
* Thu Jun 03 2010 Dag Wieers <dag@wieers.com>
|
||||
- Initial package. (using DAR)
|
Loading…
Reference in New Issue
Block a user