Commit Graph

3379 Commits

Author SHA1 Message Date
Mike Fleetwood 03e89b1289 Add support for minix file system (!12)
Util-linux package, at least as far back as version 2.23.2 as found on
CentOS 7, provides the mkfs.minix and fsck.minix commands.  Also blkid
from the same package, recognises minix file systems.

Create version 3 file systems because MINIX 3 [1] is the only supported
version and that reportedly uses version 3 of the file system [2].

[1] MINIX 3 / History
    https://en.wikipedia.org/wiki/MINIX_3#History

[2] Regarding MINIX 3 file system
    https://groups.google.com/forum/#!topic/minix3/3-TeHR_23X8

    "MINIX 3 uses Minix File System (MFS).  More precisely MFS V3."

Closes !12 - Add minix file system support
2018-08-24 20:22:08 +01:00
Mike Fleetwood 92f6946e24 Use one shade darker blue for EXT2/3/4 file systems (!12)
I see the MINIX file system as a kind of forerunner to EXT* because of
it's history [1].  No body uses the original EXT file system any more,
however the MINIX file system is still used by the MINIX 3 operating
system.  So use the same range of colours for MINIX and EXT2/3/4.  Use
one shade darker blue for EXT2/3/4, allowing MINIX to use the lightest
blue.  After adding MINIX support in the next patch, the colours will
become:
    MINIX - Blue Hilight
    EXT2  - Blue Medium
    EXT3  - Blue Dark
    EXT4  - Blue Shadow

[1] MINIX file system / History
    https://en.wikipedia.org/wiki/MINIX_file_system#History

    "When Linus Torvalds first started writing his Linux operating
    system kernel (1991), he was working on a machine running MINIX, and
    adopted its file system layout.  This soon proved problematic, since
    MINIX restricted filename lengths to fourteen characters (thirty in
    later versions), it limited partitions to 64 megabytes, and the file
    system was designed for teaching purposes, not performance.  The
    Extended file system (ext; April 1992) was developed to replace
    MINIX's, but it was only with the second version of this, ext2, that
    Linux obtained a commercial-grade file system.  As of 1994, the
    MINIX file system was "scarcely in use" among Linux users.
    "

Closes !12 - Add minix file system support
2018-08-24 20:21:58 +01:00
Mike Fleetwood dc80ce196a Update bug links in the UI translation files too (!11)
The translations which have been updated for the 0.32.0 release, and
since the migration to GitLab hosting, have been updated with the new
GitLab issue bug reporting URL.  Update all the remaining translation
files to match.

Closes !11 - Update bugzilla references
2018-08-24 11:32:00 +01:00
Curtis Gedak 8bc599d054 Update bug links from Bugzilla to GitLab issues (!11)
- Bugzilla has disabled reporting of new bugs.
- Existing Bugzilla bug reports permit new comments only.
- New bugs are to be created on GitLab issues.

Reference:
[GitLab] IMPORTANT: Mass migration plan
https://mail.gnome.org/archives/desktop-devel-list/2018-March/msg00023.html

Closes !11 - Update bugzilla references
2018-08-24 09:54:12 +01:00
Curtis Gedak b574628306 Fix broken XML tag in Romanian translation of help manual 2018-08-22 11:10:05 -06:00
Curtis Gedak 9abc477cad Append -git to version for continuing development 2018-08-22 10:09:08 -06:00
Curtis Gedak 6bece0b3d7 ========== gparted-0.32.0 ========== 2018-08-22 09:46:04 -06:00
A S Alam 2a7aea0957 Update Punjabi translation 2018-08-22 00:47:32 +00:00
صفا الفليج fc039be938 Update Arabic translation 2018-08-21 23:53:43 +00:00
Fabio Tomat 8c0b2ba712 Add Friulian translation 2018-08-20 19:02:23 +00:00
Alan Mortensen 812134eede Updated Danish translation 2018-08-20 20:26:47 +02:00
Daniel Șerbănescu 8c6f5100f2 Update Romanian translation 2018-08-19 08:55:33 +00:00
Daniel Șerbănescu 2c786bd7fb Update Romanian translation 2018-08-19 08:47:34 +00:00
Mario Blättermann 62dcf38197 Update German translation 2018-08-18 16:48:45 +00:00
Jiri Grönroos 1a50d24c79 Update Finnish translation 2018-08-18 12:45:47 +00:00
Hannie Dumoleyn 9b4f8e01f6 Update Dutch translation 2018-08-18 07:47:33 +00:00
Mario Blättermann 3db7f9d6da Update German translation 2018-08-17 20:45:38 +00:00
Aurimas Černius a107f3a9ce Updated Lithuanian translation 2018-08-17 23:11:07 +03:00
Baurzhan Muftakhidinov b580ae421d Update Kazakh translation 2018-08-17 16:58:39 +00:00
Trần Ngọc Quân 17a175e353 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2018-08-17 07:49:24 +07:00
Anders Jonsson b5e6eb3280 Update Swedish translation 2018-08-16 22:11:34 +00:00
Claude Paroz 5bd95f00c9 Updated French translation 2018-08-16 22:01:25 +02:00
Anders Jonsson 03959c9a53 Update Swedish translation 2018-08-16 19:14:22 +00:00
Emin Tufan Çetin 76abc29d87 Update Turkish translation 2018-08-16 13:50:37 +00:00
Mike Fleetwood fad5c9ff77 Update help manual with opening and closing encrypted partitions (#795617)
Bug 795617 - Implement opening and closing of LUKS mappings
2018-08-13 10:29:47 -06:00
Yi-Jyun Pan d85262bb65 Update Chinese (Taiwan) translation 2018-08-13 08:41:01 +00:00
Mike Fleetwood c9f0677c23 Update Autoconf macro AX_CXX_COMPILE_STDCXX_11 to latest serial 18
Update to the latest version of the AX_CXX_COMPILE_STDCXX_11 macro from
the Autoconf Archive,  Note that the macro now depends on
AX_CXX_COMPILE_STDCXX so this macro has to be included too.
2018-08-01 19:03:01 +01:00
Mike Fleetwood 73e7367ef7 Remove unused member Win_GParted::menu_item
Usage of menu_item was removed in this commit from 2006.

    fb672f5219
    happy new year ;) fixed some alignment issues removed confirmation dialogs
2018-08-01 19:03:01 +01:00
Mike Fleetwood 5d6f405b41 Remove unused members Win_GParted::label_device_info[12]
Usage of members label_device_info1 and label_device_info2 was removed
in this commit from 2004.

    8ae5ebb2e6
    several (mostly) i18n related fixes/cleanups
2018-08-01 19:03:01 +01:00
Mike Fleetwood ed17982eb3 Re-add getting EXT2/3/4 free space from dumpe2fs as a fallback (#8)
If an EXT2/3/4 file system needs checking, then resize2fs will report an
error, rather than report the minimum file system size.

    # mkfs.ext4 /dev/sdb11
    # resize2fs -P /dev/sdb11
    resize2fs 1.42.9 (28-Dec-2013)
    Estimated minimum size of the filesystem: 17012
    # debugfs -w -R "ssv state 0" /dev/sdb11
    # resize2fs -P /dev/sdb11
    resize2fs 1.42.9 (28-Dec-2013)
    Please run 'e2fsck -f /dev/sdb11' first.

    # echo $?
    1

This will prevent GParted reading the file system usage and in turn
GParted won't allow the file system to be shrunk.  Re-add the previous
method of reading the free space from dumpe2fs output as a fallback.

With this change, the worst case scenario is that GParted allows the
user to attempt to shrink an unclean EXT4 file system, smaller that that
which resize2fs allows and gets an error telling them so.  As part of
the failed shrink operation GParted will have checked the file system so
on refresh GParted will get the correct minimum size next time.

This scenario only seems to apply to unclean EXT4 file systems because
resize2fs has a larger minimum size that the free blocks would suggest
because of extra space requirements when resizing EXT4 file systems [1].

[1] e2fsprogs 1.44.3, resize/resize2fs.c:calculate_minimum_resize_size()
    https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/tree/resize/resize2fs.c?h=v1.44.3#n2946
    /*
     * For ext4 we need to allow for up to a flex_bg worth of
     * inode tables of slack space so the resize operation can be
     * guaranteed to finish.
     */

    /*
     * We need to reserve a few extra blocks if extents are
     * enabled, in case we need to grow the extent tree.  The more
     * we shrink the file system, the more space we need.
     *
     * The absolute worst case is every single data block is in
     * the part of the file system that needs to be evacuated,
     * with each data block needs to be in its own extent, and
     * with each inode needing at least one extent block.
     */

Closes #8 - Shrinking an EXT4 partition does not respect resize2fs
            limits
2018-08-01 19:03:01 +01:00
Mike Fleetwood fe83f6290f Use resize2fs -P to get minimum EXT2/3/4 FS size (#8)
A user reported GParted failed to shrink an EXT4 file system because
GParted tried to shrink it smaller than resize2fs reported minimum size.
Operation details were:

    Shrink /dev/sdc1 from 931.51 GiB to 605.00 GiB             (ERROR)
      calibrate /dev/sdc1                                      (SUCCESS)
        path: /dev/sdc1 (partition)
        start: 63
        end: 1953520064
        size: 1953520002 (931.51 GiB)
      check file system on /dev/sdc1 for errors and (if poss...(SUCCESS)
        e2fsck -f -y -v -C 0 '/dev/sdc1'                       (SUCCESS)
          ...
          158165624 blocks are used (64.77% of 244190000)
          ...
      shrink file system                                       (ERROR)
        resize2fs -p '/dev/sdc1' 634389176K                    (ERROR)
          resize2fs 1.44.2 (14-May-2018)
          resize2fs: New size smaller than minimum (171882113)

The GParted figures:
 *  Partition size    = 1953520064 (512b sectors) = 976760032 KiB
 *  FS size           = 244190000 (4K blocks)     = 976760000 KiB
 *  Used FS size      = 158165624 (4K blocks)     = 632662496 KiB
 *  Requested FS size                             = 634389176 KiB
The resize2fs figure:
 *  Minimum FS size   = 171882113 (4K blocks)     = 687528452 KiB

GParted uses the number of free blocks in the file system to determine
the minimum size it can shrink a file system to.  However resize2fs uses
it's own internally calculated minimum size and won't shrink a file
system below that size, as seen in the above details.  Resize2fs does
have a force flag, (-f) which overrides some safety checks which are
normally enforced, to allow it to try to shrink a file system smaller
than it's calculated minimum.  GParted currently doesn't use the force
flag and it seems unwise for it to start to do so.

So for unmounted EXT2/3/4 file systems, change GParted to use
'resize2fs -P' to get the minimum file system size, rather than using
the number of free blocks direct from the super block, as reported by
'dumpe2fs -h'.

Mounted file systems still use statvfs() to provide file system usage.
As mounted EXT2/3/4 file systems can't be shrunk the fact that statvfs()
produces different, possibly smaller than minimum, figures than those
from 'resize2fs -P' doesn't matter.

Closes #8 - Shrinking an EXT4 partition does not respect resize2fs
            limits
2018-08-01 19:02:41 +01:00
Mike Fleetwood ef8dbe8f4e Work in FS blocks until later while reading EXT2/3/4 usage (#8)
No functional change.  Just work in FS block sized units until as late
as possible in ext2::set_used_sectors(), before converting to device
sector size units.  This is to make the following change simpler and
easier to understand.

Closes #8 - Shrinking an EXT4 partition does not respect resize2fs
            limits
2018-07-31 07:02:52 +01:00
Mike Fleetwood cbb25a2511 Stop xmllint scrollkeeper-omf.dtd fetch failure breaking CI tests (#9)
The GitLab Continuous Integration test stage jobs can fail like this:

    $ make check
    ...
    Making check in help
    make[1]: Entering directory `/builds/mfleetwo/gparted/help'
    ...
    xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' gparted-C.omf
    warning: failed to load external entity "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd"
    Could not parse DTD http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd
    xmllint --noout --xinclude --dtdvalid 'http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd' gparted-cs.omf
    ...
    make[1]: *** [check-doc-omf] Error 2
    make[1]: Leaving directory `/builds/mfleetwo/gparted/help'
    make: *** [check-recursive] Error 1
    ERROR: Job failed: exit code 1

It fails when the scrollkeeper.sourceforge.net site reports that
SourceForge is undergoing maintenance or is temporarily unavailable.  I
have seen this occur on 3 separate occasions in the last 4 weeks since I
started experimenting with GitLab CI, which is rather too often.

Xmllint comes from the GNOME 2 gnome-doc-utils.make rules used to build
and validate GNOME 2 documentation.

Fragment of useful Debian bug report 730688:
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=730688
    --disable-scrollkeeper requieres scrollkeeper installed

    "You can reproduce the problem in mdbtoools version 0.7.1-1 with no
    network, and rarian-compat not installed.

    When the network is available, buildd downloads the DTD for checks.
    When there is no network, gnome-doc-utils fails.
    "

Fix by:
(1) adding the rarian-compat package to the CI Docker images, which
    provides a local copy of the scrollkeeper-omf.dtd file;
(2) adding the xmllint --nonet option to prevent fetching of DTDs
    remotely.

With reference to earlier commit:
    0eb9f1fcfb
    Reduce dependency on scrollkeeper (#743318)
That commit allowed GParted to be installed on GNOME 3 desktops without
requiring rarian-compat package to be installed.  This commit adds
rarian-compat to the CI images so that 'make check' can succeed without
accessing the Internet.  Just the intricate path to continue to build
and test a GNOME 2 application in a world of GNOME 3 desktops with
beginning to be reduced backward compatibility.

Closes #9 - CI test jobs occasionally fail with xmllint not loading
            external entity http://scrollkeeper.sourceforce.net/dtds/
            scrollkeeper-omf-1.0/scrollkeeper-omf.dtd
2018-07-24 22:32:36 +01:00
Mike Fleetwood 112f1d3e67 Stop parallelising make distcheck in GitLab CI test jobs (!6)
Unfortunately parallelising 'make distcheck' causes it to fail like
this:

    $ nproc=`grep -c '^processor' /proc/cpuinfo` || nproc=1
    $ echo nproc=$nproc
    nproc=8
    ...
    $ make -j $nproc distcheck
    ...
    make[1]: Entering directory '/builds/mfleetwo/gparted/gparted-0.31.0-git/_build/sub'
    ERROR: files left after uninstall:
    ./share/icons/hicolor/icon-theme.cache
    Makefile:896: recipe for target 'distuninstallcheck' failed
    make[1]: Leaving directory '/builds/mfleetwo/gparted/gparted-0.31.0-git/_build/sub'
    make[1]: *** [distuninstallcheck] Error 1
    make: *** [distcheck] Error 1
    Makefile:840: recipe for target 'distcheck' failed
    ERROR: Job failed: exit code 1

Therefore go back to serial 'make distcheck'.

Closes !6 - Reduce the time taken by the GitLab CI jobs
2018-07-23 18:21:35 +00:00
Mike Fleetwood ed06299c18 Parallelise building GParted in GitLab CI jobs (!6)
Reduce the time taken by the GitLab Continuous Integration jobs by
parallelising make to use all available CPUs in the Docker CI image
when it is building GParted code.  This includes 'make diskcheck'
because that also does a second build of the GParted code in a separate
subdirectory.

Closes !6 - Reduce the time taken by the GitLab CI jobs
2018-07-23 18:21:34 +00:00
Mike Fleetwood fc167a71a3 Move enum CUSTOM_TEXT into FileSystem.h
The CUSTOM_TEXT enumeration is exclusively used as the type of one of
the parameters to the functions get_generic_text() and get_custom_text()
in the FileSystem class and derived classes.  The definition of the
enumeration therefore belongs in FileSystem.h.  Move it.
2018-07-19 19:26:30 +00:00
Mike Fleetwood 465bd61e26 Set FSType when constructing FS in luks::get_filesystem_support()
This is functionally identical, but is just to follow established coding
pattern [1] of specifying the FSType when constructing struct FS, rather
and setting it afterwards.  luks.cc was added after the aforementioned
commit, but was being developed in parallel so was created [2] following
the old coding pattern.

[1] 1a4cefb960
    Initialise all struct FS members

[2] 070d734e57
    Add busy detection of LUKS mapping (#760080)
2018-07-19 19:26:30 +00:00
Mike Fleetwood 03d47d4d02 Recognise additional GRUB2 core.img signatures (!5)
Bootinfoscript v0.77 (2018-06-10) added additional signatures to
recognise GRUB2 core.img by.  Commit:

    9a00c1a887
    Add more core.img diskboot signatures

Specifically the new signatures are:
    5256be63 - trustedgrub2 1.4
    5256be56 - diskboot.S with mjg TPM patches (e.g. in openSUSE
               Tumbleweed)

Add those signatures into GParted.

Closes !5 - Recognise additional GRUB2 core.img signatures
2018-07-19 19:26:29 +00:00
Mike Fleetwood 8cd2181b49 Add CI job to test GParted on Ubuntu (!4)
Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-08 09:45:11 +01:00
Mike Fleetwood 391aebae93 Add CI job to build GParted on Ubuntu (!4)
Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-08 09:45:11 +01:00
Mike Fleetwood eb2435231b Parameterise CI config ready for also using a Ubuntu image (!4)
Prepare the GitLab Continuous Integration configuration for also
building and testing GParted on a Ubuntu image.  The definition of the
image and before_script, which so far specify the CentOS Docker image
and how to install the required RPM packages, need to move from being
top level nodes to being defined per job.  Namely within jobs
'centos_build' and 'centos_test'.

To avoid duplicating various nodes within multiple jobs, YAML anchors
(&LABEL) and references (*LABEL) are used.  They are defined in ignored
jobs, job names starting with a dot (.).

Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-08 09:44:57 +01:00
Mike Fleetwood a6b0a26c74 Rename CI jobs to reflect that they use a CentOS Docker image (!4)
Ready for adding additional Continuous Integration jobs using different
distribution Docker images.  Rename thus:
    build -> centos_build
    test  -> centos_test

Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-05 07:21:06 +01:00
Mike Fleetwood fe2fc33e67 Exclude unit test which fails in Docker CI image (!4)
Fragment of the tests/test-suite.log from the Docker CI image showing
details of the unit test failure:

    Running main() from gtest_main.cc
    [==========] Running 26 tests from 1 test case.
    [----------] Global test environment set-up.
    [----------] 26 tests from BlockSpecialTest
    ...
    [ RUN      ] BlockSpecialTest.NamedBlockSpecialObjectBySymlinkMatches
    test_BlockSpecial.cc:137: Failure
    Failed
    get_link_name(): Failed to open directory '/dev/disk/by-id'
    test_BlockSpecial.cc:168: Failure
    Failed
    follow_link_name(): Failed to resolve symbolic link ''
    test_BlockSpecial.cc:255: Failure
    Expected: (lnk.m_name.c_str()) != (bs.m_name.c_str()), actual: "" vs ""
    [  FAILED  ] BlockSpecialTest.NamedBlockSpecialObjectBySymlinkMatches (0 ms)
    ...
    [==========] 26 tests from 1 test case ran. (1 ms total)
    [  PASSED  ] 25 tests.
    [  FAILED  ] 1 test, listed below:
    [  FAILED  ] BlockSpecialTest.NamedBlockSpecialObjectBySymlinkMatches

     1 FAILED TEST

So the code is trying to find a symbolic link to a block device to use
in the test.  It is trying to read the directory /dev/disk/by-id to find
a symbolic link, but the directory doesn't exist in the Docker CI image.

The used directory was recently changed [1] to use one which existed on
all distributions.  Docker images don't even have the /dev/disk
directory.  Exclude just this specific test.

[1] 7fe4148074
    Use /dev/disk/by-id/ to get device symlink in test_BlockSpecial

Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-05 07:21:06 +01:00
Mike Fleetwood f5e161f698 Debug unit test failure in CI test job (!4)
Recursively list all the files below /dev as part of the 'test' job as
certain block device names are needed by the failing test_BlockSpecial
unit test.

The artifact captures all the files from the directory in which the CI
script runs to build and test GParted.  It creates a ZIP file which can
be downloaded after the job finishes, whether the job succeeds of fails.
This is to capture logs from the failure of the test_BlockSpecial unit
test.

Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-05 07:21:06 +01:00
Mike Fleetwood e76a3874af Add CI testing job on CentOS (!4)
Add GitLab Continuous Integration job named 'test' which runs the
GParted unit tests and distcheck.  Note that the job starts from a fresh
official CentOS Docker image so also has to rebuild GParted too.

So far this job fails on unit test test_BlockSpecial.  Fragment of the
CI job log:

    make  check-TESTS
    make[2]: Entering directory `/builds/mfleetwo/gparted/tests'
    make[3]: Entering directory `/builds/mfleetwo/gparted/tests'
    PASS: test_dummy
    FAIL: test_BlockSpecial
    PASS: test_PasswordRAMStore
    PASS: test_PipeCapture
    make[4]: Entering directory `/builds/mfleetwo/gparted/tests'
    make[4]: Nothing to be done for `all'.
    make[4]: Leaving directory `/builds/mfleetwo/gparted/tests'
    ============================================================================
    Testsuite summary for gparted 0.31.0-git
    ============================================================================
    # TOTAL: 4
    # PASS:  3
    # SKIP:  0
    # XFAIL: 0
    # FAIL:  1
    # XPASS: 0
    # ERROR: 0
    ============================================================================
    See tests/test-suite.log
    Please report to https://bugzilla.gnome.org/enter_bug.cgi?product=gparted
    ============================================================================

Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-05 07:21:05 +01:00
Mike Fleetwood 8fc4488fc2 Create initial GitLab CI job which builds on CentOS (!4)
Initial GitLab Continuous Integration configuration with a single job
named 'build' which just confirms GParted can be built and installed on
the latest official CentOS Docker image.

Closes !4 - Add GitLab CI jobs to build and test GParted
2018-07-05 07:20:59 +01:00
Jordi Mas d0d1435717 Update Catalan translation 2018-07-02 00:31:54 +02:00
Jordi Mas 77afd747b5 Fixes to Catalan translation 2018-07-02 00:28:50 +02:00
Mike Fleetwood ddb334705e Remove support for obsolete devkit-disks automount inhibitor
Back in 2009 devicekit-disks package was renamed to udisks [1].  All
supported distributions use udisks (or more recently udisks2).  None
have the old devkit-disks command.  Therefore remove it from the GParted
shell wrapper.

[1] https://www.freedesktop.org/wiki/Software/DeviceKit-disks/
    "Note
    On December 1st 2009, DeviceKit-disks was renamed to udisks. This
    release is expected to appear in distributions released in the first
    half of 2010."
2018-06-27 20:26:40 +00:00
Daniel Mustieles 1e1c4b8cef Updated Spanish translation 2018-06-22 12:06:58 +02:00