Hello community,

here is the log from the commit of package WoeUSB for openSUSE:Factory checked 
in at 2018-05-10 15:50:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/WoeUSB (Old)
 and      /work/SRC/openSUSE:Factory/.WoeUSB.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "WoeUSB"

Thu May 10 15:50:52 2018 rev:5 rq:605712 version:3.2.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/WoeUSB/WoeUSB.changes    2018-03-30 
12:07:54.580677657 +0200
+++ /work/SRC/openSUSE:Factory/.WoeUSB.new/WoeUSB.changes       2018-05-10 
15:50:52.334026106 +0200
@@ -1,0 +2,19 @@
+Wed May  9 08:28:30 UTC 2018 - [email protected]
+
+- Version 3.2.1
+  * This patch release fixes the fatal error slipped into last minute patch in 
v3.2.0.
+
+-------------------------------------------------------------------
+Tue May  8 11:32:57 UTC 2018 - [email protected]
+
+- Version 3.2.0
+  * A check for "FAT32 Filesystem 4GiB Single File Size Limitation" has been
+    implemented thanks to Jakub SzymaƄski
+  * A fix to comply with the recent changes of UEFI:NTFS has been implemented
+    thanks to Felipe Magno de Almeida
+  * PNG images distributed in WoeUSB has been optimized to smaller size thanks
+    to Peter Dave Hello
+  * A typo has been picked out in woeusb(1) manpage thanks to Anthony Fok
+  * Detailed changes see https://github.com/slacka/WoeUSB/releases/tag/v3.2.0
+
+-------------------------------------------------------------------

Old:
----
  WoeUSB-3.1.5.tar.gz

New:
----
  WoeUSB-3.2.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ WoeUSB.spec ++++++
--- /var/tmp/diff_new_pack.SZAyI5/_old  2018-05-10 15:50:53.209994000 +0200
+++ /var/tmp/diff_new_pack.SZAyI5/_new  2018-05-10 15:50:53.213993854 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           WoeUSB
-Version:        3.1.5
+Version:        3.2.1
 Release:        0
 Summary:        Windows USB installation media creator
 License:        GPL-3.0-or-later

++++++ WoeUSB-3.1.5.tar.gz -> WoeUSB-3.2.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WoeUSB-3.1.5/setup-development-environment.bash 
new/WoeUSB-3.2.1/setup-development-environment.bash
--- old/WoeUSB-3.1.5/setup-development-environment.bash 2018-03-19 
22:28:23.000000000 +0100
+++ new/WoeUSB-3.2.1/setup-development-environment.bash 2018-05-08 
18:21:26.000000000 +0200
@@ -8,7 +8,7 @@
 set -o nounset
 set -o pipefail
 
-for required_command in\
+for required_command in \
        realpath\
        basename\
        dirname\
@@ -17,7 +17,8 @@
        do
        if ! command -v "${required_command}" >/dev/null; then
                printf\
-                       "Error: This program requires \"${required_command}\" 
command in your \$PATH.\n"\
+                       "Error: This program requires \"%s\" command in your 
\$PATH.\n"\
+                       "${required_command}"\
                        1>&2
                exit 1
        fi
@@ -61,11 +62,22 @@
        git config include.path ../.gitconfig\
                && printf "done\n"
 
-       printf "Activate Git smudge filter...\n"
-       git stash save &>/dev/null || true
+       printf "Activating Git smudge filter...\n"
+       # git - How do I programmatically determine if there are uncommitted 
changes? - Stack Overflow
+       # 
https://stackoverflow.com/questions/3878624/how-do-i-programmatically-determine-if-there-are-uncommitted-changes
+       # DOC: git-diff-index(1) manpage: OPTIONS: --quiet, --exit-code
+       local stash_is_needed=false
+       if ! git diff-index --quiet HEAD --; then
+               stash_is_needed=true
+       fi
+       if test "${stash_is_needed}" = 'true'; then
+               git stash save &>/dev/null
+       fi
        rm .git/index
        git checkout HEAD -- "$(git rev-parse --show-toplevel)" >/dev/null
-       git stash pop &>/dev/null || true
+       if test "${stash_is_needed}" = 'true'; then
+               git stash pop &>/dev/null
+       fi; unset stash_is_needed
        printf "done.\n"
 
        exit 0
Binary files old/WoeUSB-3.1.5/src/data/c501-logo.png and 
new/WoeUSB-3.2.1/src/data/c501-logo.png differ
Binary files old/WoeUSB-3.1.5/src/data/icon.png and 
new/WoeUSB-3.2.1/src/data/icon.png differ
Binary files old/WoeUSB-3.1.5/src/data/woeusb-logo.png and 
new/WoeUSB-3.2.1/src/data/woeusb-logo.png differ
Binary files old/WoeUSB-3.1.5/src/linux-menu/woeusbgui-icon.png and 
new/WoeUSB-3.2.1/src/linux-menu/woeusbgui-icon.png differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WoeUSB-3.1.5/src/woeusb new/WoeUSB-3.2.1/src/woeusb
--- old/WoeUSB-3.1.5/src/woeusb 2018-03-19 22:28:23.000000000 +0100
+++ new/WoeUSB-3.2.1/src/woeusb 2018-05-08 18:21:26.000000000 +0200
@@ -176,7 +176,7 @@
                        new_file_system_label\
                        workaround_bios_boot_flag\
                        target_filesystem_type\
-                       only_for_gui_ref; then
+                       global_only_for_gui; then
                print_help\
                        "${application_name}"\
                        "${application_version}"\
@@ -233,6 +233,22 @@
                "${target_device}"\
                "${target_partition}"
 
+       current_state=mount-source-filesystem
+
+       if ! mount_source_filesystem\
+               "${source_media}"\
+               "${source_fs_mountpoint}"; then
+               echo_with_color red 'Error: Unable to mount source filesystem'
+               exit 1
+       fi
+
+       if [ "${target_filesystem_type}" == 'FAT' ]; then
+               if ! check_fat32_filesize_limitation\
+                               "${source_fs_mountpoint}"; then
+                       exit 1
+               fi
+       fi
+
        if [ "${install_mode}" = 'device' ]; then
                wipe_existing_partition_table_and_filesystem_signatures\
                        "${target_device}"
@@ -263,19 +279,12 @@
                        "${target_device}"
        fi
 
-       current_state='start-mounting'
-
-       if ! mount_source_filesystem\
-               "${source_media}"\
-               "${source_fs_mountpoint}"; then
-               echo_with_color red 'Error: Unable to mount source filesystem'
-               exit 1
-       fi
+       current_state=mount-target-filesystem
 
        if ! mount_target_filesystem\
                "${target_partition}"\
-               "${target_fs_mountpoint}"\
-               vfat; then
+               "${target_fs_mountpoint}" \
+               "${target_filesystem_type}"; then
                echo_with_color red 'Error: Unable to mount target filesystem'
                exit 1
        fi
@@ -879,7 +888,7 @@
        else
                return 0
        fi
-}; declare check_if_the_drive_is_really_wiped
+}; declare -fr check_if_the_drive_is_really_wiped
 
 create_target_partition_table(){
        util_check_function_parameters_quantity 2 $#
@@ -965,7 +974,7 @@
 
        # Create target partition
        # We start at 4MiB for grub (it needs a post-mbr gap for its code) and 
alignment of flash memery block erase segment in general, for details see 
http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation and 
http://lwn.net/Articles/428584/
-       # If NTFS filesystem is used we leave a 256KiB partition at the end for 
installing UEFI:NTFS partition for NTFS support
+       # If NTFS filesystem is used we leave a 512KiB partition at the end for 
installing UEFI:NTFS partition for NTFS support
        case "${parted_mkpart_fs_type}" in
                fat32)
                        parted --script\
@@ -985,8 +994,8 @@
                                primary\
                                "${parted_mkpart_fs_type}"\
                                4MiB\
-                               -- -513s # Leave 256KiB==512sector in 
traditional 512bytes/sector disk, disks with sector with more than 512bytes 
only result in partition size greater than 256KiB and is intentionally 
let-it-be.
-                               # FIXME: Leave exact 256KiB in all 
circumstances is better, but the algorithm to do so is quite brainkilling.
+                               -- -1025s # Leave 512KiB==1024sector in 
traditional 512bytes/sector disk, disks with sector with more than 512bytes 
only result in partition size greater than 512KiB and is intentionally 
let-it-be.
+                               # FIXME: Leave exact 512KiB in all 
circumstances is better, but the algorithm to do so is quite brainkilling.
                        ;;
                *)
                        printf_with_color\
@@ -1023,7 +1032,7 @@
 
 ## Create UEFI:NTFS partition to support booting UEFI bootloader in NTFS 
filesystem where some UEFI firmwares are not able to do so
 ## https://github.com/pbatard/uefi-ntfs
-## This routine assumes that there's only one partition on the disk, and the 
trailing 256KiB space is not partitioned
+## This routine assumes that there's only one partition on the disk, and the 
trailing 512KiB space is not partitioned
 ## This routine should be run after create_target_partition and only on target 
partition's filesystem is NTFS
 ## target_device: The target device's entire deice file
 create_uefi_ntfs_support_partition(){
@@ -1041,7 +1050,7 @@
                primary\
                fat16\
                -- \
-               -512s\
+               -1024s\
                -1s
 
        return "$?"
@@ -1049,7 +1058,7 @@
 
 ## Install UEFI:NTFS partition by writing the partition image into the created 
partition
 ## FIXME: Currently this requires internet access to download the image from 
GitHub directly, it should be replaced by including the image in our datadir
-## uefi_ntfs_partition: The previously allocated partition for installing 
UEFI:NTFS, requires at least 256KiB
+## uefi_ntfs_partition: The previously allocated partition for installing 
UEFI:NTFS, requires at least 512KiB
 ## download_directory: The temporary directory for downloading UEFI:NTFS image 
from GitHub
 ## target_device: For workaround_make_system_realize_partition_table_changed
 install_uefi_ntfs_support_partition(){
@@ -1093,6 +1102,26 @@
        return $?
 }; declare -fr 
workaround_buggy_motherboards_that_ignore_disks_without_boot_flag_toggled
 
+## Check every file in source directory for files bigger than max fat32 file 
size (~4GB)
+check_fat32_filesize_limitation(){
+       util_check_function_parameters_quantity 1 $#
+       local -r source_fs_mountpoint="${1}"
+
+       while IFS= read -r -d '' file; do
+               if (( "$(stat -c '%s' "${file}")" > 4294967295 )); then # Max 
fat32 file size is 2^32 - 1 bytes
+                       printf_with_color\
+                               red\
+                               'Error: File "%s" in source image has exceed 
the FAT32 Filesystem 4GiB Single File Size Limitation and cannot be installed.  
You must specify a different --target-filesystem.\n'\
+                               "${file}"
+                       prntf_with_color\
+                               red\
+                               'Refer: 
https://github.com/slacka/WoeUSB/wiki/Limitations#fat32-filesystem-4gib-single-file-size-limitation
 for more info.\n'
+                       return 1
+               fi
+       done < <(find "${source_fs_mountpoint}" -type f)
+       return 0
+}; declare -fr check_fat32_filesize_limitation
+
 ## Check target partition for potential problems before mounting them for 
--partition creation mode as we don't know about the existing partition
 ## target_partition: The target partition to check
 ## install_mode: The usb storage creation method to be used
@@ -1196,7 +1225,7 @@
 # Mount target filesystem to existing path as mountpoint
 # target_partition: The partition device file target filesystem resides, for 
example /dev/sdX1
 # target_fs_mountpoint: The existing directory used as the target filesystem's 
mountpoint, for example /mnt/target_filesystem
-# target_fs_type: The filesystem of the target filesystem, this is same as the 
--types argument of mount(8), currently supports: vfat
+# target_fs_type: The filesystem of the target filesystem currently supports: 
FAT, NTFS
 mount_target_filesystem(){
        util_check_function_parameters_quantity 3 $#
        local target_partition="$1"; shift
@@ -1217,9 +1246,12 @@
 
        # Determine proper mount options according to filesystem type
        case "${target_fs_type}" in
-               vfat)
+               FAT)
                        mount_options='utf8=1'
                ;;
+               NTFS)
+                       :
+               ;;
                *)
                        printf_with_color\
                                red\
@@ -1597,61 +1629,43 @@
        } > "${grub_cfg}"; unset target_fs_uuid
 }; declare -fr install_legacy_pc_bootloader_grub_config
 
-## Unmount mounted filesystems and clean-up mountpoints before exiting program
-## exit status:
-##     unclean(2): Not fully clean, target device can be safely detach from 
host
-##     unsafe(3): Target device cannot be safely detach from host
-cleanup_mountpoints(){
-       util_check_function_parameters_quantity 3 "${#}"
-       local -r source_fs_mountpoint="${1}"; shift
-       local -r target_fs_mountpoint="${1}"; shift
-       local -ir only_for_gui="${1}"
-
-       local clean_result='unknown'
-
-       # FIXME: Why `trigger_wxGenericProgressDialog_pulse off` here?
-       trigger_wxGenericProgressDialog_pulse\
-               off\
-               "${only_for_gui}"
+## Unmount mounted filesystem and clean-up mountpoint before exiting program
+## return_value: 1 - Failed to unmount / 2 - Failed to remove mountpoint
+cleanup_mountpoint(){
+       util_check_function_parameters_quantity 2 "${#}"
+       local -r fs_mountpoint="${1}"; shift
+       local -ir only_for_gui="${1}"; shift
 
        # In copy_filesystem_files, we use `pushd` to changed the working 
directory into source_fs_mountpoint in order to get proper source and target 
file path, proactively `popd` to ensure we are not in source_fs_mountpoint and 
preventing source filesystem to unmount
        popd &>/dev/null\
                || true
 
-       if [ -e "${source_fs_mountpoint}" ]; then
-               echo_with_color green "Unmounting and removing 
'${source_fs_mountpoint}'..."
-               if umount "${source_fs_mountpoint}"; then
-                       if ! rmdir "${source_fs_mountpoint}"; then
-                               echo_with_color yellow "${FUNCNAME[0]}: 
Warning: Unable to remove source mountpoint"
-                               clean_result='unclean'
-                       fi
-               else
-                       echo_with_color yellow "${FUNCNAME[0]}: Warning: Unable 
to unmount source filesystem."
-                       clean_result='unclean'
+       if [ -e "${fs_mountpoint}" ]; then
+               printf_with_color \
+                       green \
+                       'Unmounting and removing "%s"...\n' \
+                       "${fs_mountpoint}"
+               if ! umount "${fs_mountpoint}"; then
+                       printf_with_color \
+                               yellow \
+                               '%s: Warning: Unable to unmount "%s".\n' \
+                               "${FUNCNAME[0]}" \
+                               "${fs_mountpoint}"
+                       return 1
                fi
-       fi
 
-       if [ -e "${target_fs_mountpoint}" ]; then
-       echo_with_color green "Unmounting and removing 
'${target_fs_mountpoint}'..."
-               if umount "${target_fs_mountpoint}"; then
-                       if ! rmdir "${target_fs_mountpoint}"; then
-                               echo_with_color yellow "${FUNCNAME[0]}: 
Warning: Unable to remove target mountpoint"
-                               clean_result='unclean'
-                       fi
-               else
-                       echo_with_color yellow "${FUNCNAME[0]}: Warning: Unable 
to unmount target filesystem."
-                       clean_result='unsafe'
+               if ! rmdir "${fs_mountpoint}"; then
+                       printf_with_color \
+                               yellow \
+                               '%s: Warning: Unable to remove "%s".\n' \
+                               "${FUNCNAME[0]}" \
+                               "${fs_mountpoint}"
+                       return 2
                fi
        fi
 
-       if [ "${clean_result}" == 'unclean' ]; then
-               return 2
-       elif [ "${clean_result}" == 'unsafe' ]; then
-               return 3
-       else
-               return 0
-       fi
-}; declare -fr cleanup_mountpoints
+       return 0
+}; declare -fr cleanup_mountpoint
 
 ## This function continuously moves the GUI creation dialog's progressing bar 
bit by bit, by running `echo pulse` every 0.05 seconds until the next call 
chooses to turn off
 ## Refer src/MainPanel.cpp MainPanel::OnInstall(wxCommandEvent& event) method 
for more info
@@ -1707,6 +1721,17 @@
 }; declare -fr trap_errexit
 
 trap_exit(){
+       # Mountpoints aren't successfully removed
+       local flag_unclean=false
+
+       # Target filesystem failed to unmount
+       local flag_unsafe=false
+
+       # FIXME: Why `trigger_wxGenericProgressDialog_pulse off` here?
+       trigger_wxGenericProgressDialog_pulse\
+               off\
+               "${global_only_for_gui}"
+
        case "${current_state}" in
                copying-filesystem|finished)
                        workaround_linux_make_writeback_buffering_not_suck\
@@ -1714,24 +1739,46 @@
                ;;
        esac
 
-       if \
-               util_is_parameter_set_and_not_empty\
-                       source_fs_mountpoint\
-               && util_is_parameter_set_and_not_empty\
-                       target_fs_mountpoint; then
-               if cleanup_mountpoints\
-                       "${source_fs_mountpoint}"\
-                       "${target_fs_mountpoint}"\
+       if util_is_parameter_set_and_not_empty\
+               source_fs_mountpoint; then
+               if ! cleanup_mountpoint \
+                       "${source_fs_mountpoint}" \
                        "${global_only_for_gui}"; then
-                       :
-               elif [ "${?}" == '2' ]; then
-                       echo_with_color yellow 'Some mountpoints are not 
unmount/cleaned successfully and must be done manually'
-               else # $? == 3, target filesystem not unmounted
-                       echo_with_color yellow 'We unable to unmount target 
filesystem for you, please make sure target filesystem is unmounted before 
detaching to prevent data corruption'
-                       echo_with_color yellow 'Some mountpoints are not 
unmount/cleaned successfully and must be done manually'
+                       flag_unclean=true
                fi
        fi
 
+       if util_is_parameter_set_and_not_empty\
+               target_fs_mountpoint; then
+               if ! cleanup_mountpoint \
+                       "${target_fs_mountpoint}" \
+                       "${global_only_for_gui}"; then
+                       local -i return_value="${?}"
+
+                       flag_unclean=true
+
+                       if [ "${return_value}" = 1 ]; then
+                               flag_unsafe=true
+                       fi
+               fi
+       fi
+
+       if [ "${flag_unclean}" = true ]; then
+               echo_with_color \
+                       yellow \
+                       'Some mountpoints are not unmount/cleaned successfully 
and must be done manually'
+       fi
+
+       if [ "${flag_unsafe}" = true ]; then
+               echo_with_color \
+                       yellow \
+                       'We unable to unmount target filesystem for you, please 
make sure target filesystem is unmounted before detaching to prevent data 
corruption'
+       fi
+
+       unset \
+               flag_unclean \
+               flag_unsafe
+
        if \
                util_is_parameter_set_and_not_empty\
                        target_device; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WoeUSB-3.1.5/src/woeusb.1 
new/WoeUSB-3.2.1/src/woeusb.1
--- old/WoeUSB-3.1.5/src/woeusb.1       2018-03-19 22:28:23.000000000 +0100
+++ new/WoeUSB-3.2.1/src/woeusb.1       2018-05-08 18:21:26.000000000 +0200
@@ -9,7 +9,7 @@
 
 .SH DESCRIPTION
 .B woeusb
-is an command-line utility that enables you to create your own bootable 
Windows installation USB storage device from an existing Windows Installation 
DVD or its ISO image.
+is a command-line utility that enables you to create your own bootable Windows 
installation USB storage device from an existing Windows Installation DVD or 
its ISO image.
 .PP
 
 It mainly extracts all files from
@@ -98,11 +98,11 @@
 0 when success, 1 (and non-zero if there's any) when failure
 
 .SH BUGS
-Refer our
+Refer to our
 .UR https://github.com/slacka/WoeUSB/issues
 issue tracker
 .UE
- for any known issues
+for any known issues
 .br
 
 .SH SEE ALSO


Reply via email to