Commit c9c86ff4 authored by Jeremy Bicha's avatar Jeremy Bicha

New upstream version 3.26.0

parents 2e7ccc81 e5846bba
Richard Hughes <richard@hughsie.com>
This diff is collapsed.
Richard Hughes <richard@hughsie.com>
GNOME MultiWriter
=================
GNOME MultiWriter can be used to write an ISO file to multiple USB devices at
once. Supported drive sizes are between 1GB and 32GB.
This application may be useful for QA testing, to create a GNOME Live image for
a code sprint or to create hundreds of LiveUSB drives for a trade show.
![](https://git.gnome.org/browse/gnome-multi-writer/plain/data/appdata/gmw-startup.png)
Writing a more than 10 devices simultaneously can easy saturate the USB bus for
most storage devices. There are two ways to write more devices in parallel:
* Use USB 3.0 hubs, even if the storage devices are USB 2.0
* Install another USB 2.0 PCIe root hub
MultiWriter was originally written as part of the ColorHug project but was
split off as an independent application in 2015.
Bugs
----
Issues (and pull requests) accepted on GitHub; if there's sufficient interest
I'll move the project to git.gnome.org after a few releases.
GNOME MultiWriter Release Notes
* Write NEWS entries in the same format as usual.
git log --format="%s" GNOME_MULTI_WRITER_3_25_90.. | grep -i -v trivial | grep -v Merge | uniq
Add any user visible changes into ../data/appdata/org.gnome.MultiWriter.appdata.xml.in
* Commit changes in git:
git commit -a -m "Release version 3.26.0"
git tag -s GNOME_MULTI_WRITER_3_26_0 -m "==== Version 3.25.91 ===="
ninja dist
git push --tags
git push
* Upload tarballs and install module
scp meson-dist/*.tar.xz rhughes@master.gnome.org:
ssh rhughes@master.gnome.org
ftpadmin install gnome-multi-writer-*.tar.xz
* Do post release version bump in meson.build
git commit -a -m "trivial: Post release version bump"
git push
#!/bin/bash
# configure script adapter for Meson
# Based on build-api: https://github.com/cgwalters/build-api
# Copyright 2010, 2011, 2013 Colin Walters <walters@verbum.org>
# Copyright 2016 Emmanuele Bassi
# Licensed under the new-BSD license (http://www.opensource.org/licenses/bsd-license.php)
# Build API variables:
# buildapi-variable-require-builddir
# Little helper function for reading args from the commandline.
# it automatically handles -a b and -a=b variants, and returns 1 if
# we need to shift $3.
read_arg() {
# $1 = arg name
# $2 = arg value
# $3 = arg parameter
local rematch='^[^=]*=(.*)$'
if [[ $2 =~ $rematch ]]; then
read "$1" <<< "${BASH_REMATCH[1]}"
else
read "$1" <<< "$3"
# There is no way to shift our callers args, so
# return 1 to indicate they should do it instead.
return 1
fi
}
sanitycheck() {
# $1 = arg name
# $1 = arg command
# $2 = arg alternates
local cmd=$( which $2 2>/dev/null )
if [ -x "$cmd" ]; then
read "$1" <<< "$cmd"
return 0
fi
test -z $3 || {
for alt in $3; do
cmd=$( which $alt 2>/dev/null )
if [ -x "$cmd" ]; then
read "$1" <<< "$cmd"
return 0
fi
done
}
echo -e "\e[1;31mERROR\e[0m: Command '$2' not found"
exit 1
}
sanitycheck MESON 'meson'
sanitycheck NINJA 'ninja' 'ninja-build'
enable_docs='-Denable-gtk-doc=false'
enable_man='-Denable-man=false'
enable_introspection=''
while (($# > 0)); do
case "${1%%=*}" in
--prefix) read_arg prefix "$@" || shift;;
--bindir) read_arg bindir "$@" || shift;;
--sbindir) read_arg sbindir "$@" || shift;;
--libexecdir) read_arg libexecdir "$@" || shift;;
--datarootdir) read_arg datarootdir "$@" || shift;;
--datadir) read_arg datadir "$@" || shift;;
--sysconfdir) read_arg sysconfdir "$@" || shift;;
--libdir) read_arg libdir "$@" || shift;;
--mandir) read_arg mandir "$@" || shift;;
--includedir) read_arg includedir "$@" || shift;;
--enable-gtk-doc) enable_docs='-Denable-gtk-doc=true';;
--disable-gtk-doc) enable_docs='-Denable-gtk-doc=false';;
--enable-man) enable_man='-Denable-man=true';;
--disable-man) enable_man='-Denable-man=false';;
--enable-introspection) enable_introspection='';;
--disable-introspection) enable_introspection='-Ddisable_introspection=true';;
*) echo -e "\e[1;33mINFO\e[0m: Ignoring unknown option '$1'";;
esac
shift
done
# Defaults
test -z ${prefix} && prefix="/usr/local"
test -z ${bindir} && bindir=${prefix}/bin
test -z ${sbindir} && sbindir=${prefix}/sbin
test -z ${libexecdir} && libexecdir=${prefix}/bin
test -z ${datarootdir} && datarootdir=${prefix}/share
test -z ${datadir} && datadir=${datarootdir}
test -z ${sysconfdir} && sysconfdir=${prefix}/etc
test -z ${libdir} && libdir=${prefix}/lib
test -z ${mandir} && mandir=${prefix}/share/man
test -z ${includedir} && includedir=${prefix}/include
# The source directory is the location of this file
srcdir=$(dirname $0)
# Wrapper Makefile for Ninja
cat > Makefile <<END
# Generated by configure; do not edit
all:
CC="\$(CC)" CXX="\$(CXX)" ${NINJA}
install:
DESTDIR="\$(DESTDIR)" ${NINJA} install
END
echo "Summary:"
echo " meson:....... ${MESON}"
echo " ninja:....... ${NINJA}"
echo " prefix:...... ${prefix}"
echo " bindir:...... ${bindir}"
echo " sbindir:..... ${sbindir}"
echo " libexecdir:.. ${libexecdir}"
echo " datarootdir:. ${datarootdir}"
echo " datadir:..... ${datadir}"
echo " sysconfdir:.. ${sysconfdir}"
echo " libdir:...... ${libdir}"
echo " mandir:...... ${mandir}"
echo " includedir:.. ${includedir}"
echo " additional:.."
echo " - ${enable_docs} ${enable_man} ${enable_introspection}"
exec ${MESON} \
--prefix=${prefix} \
--libdir=${libdir} \
--libexecdir=${libexecdir} \
--datadir=${datadir} \
--sysconfdir=${sysconfdir} \
--bindir=${bindir} \
--includedir=${includedir} \
--mandir=${mandir} \
--default-library shared \
${enable_docs} \
${enable_man} \
${enable_introspection} \
${srcdir}
# vim: ai ts=8 noet sts=2 ft=sh
%define alphatag #ALPHATAG#
Summary: Write an ISO file to multiple USB devices at once
Name: gnome-multi-writer
Version: #VERSION#
Release: 0.#BUILD#%{?alphatag}%{?dist}
License: GPLv2+
URL: https://wiki.gnome.org/Apps/MultiWriter
Source0: http://people.freedesktop.org/~hughsient/releases/%{name}-%{version}.tar.xz
BuildRequires: desktop-file-utils
BuildRequires: docbook-utils
BuildRequires: gettext
BuildRequires: glib2-devel
BuildRequires: gtk3-devel
BuildRequires: intltool
BuildRequires: itstool
BuildRequires: libcanberra-devel >= 0.10
BuildRequires: libgusb-devel >= 0.2.4
BuildRequires: libudisks2-devel
BuildRequires: libgudev1-devel
BuildRequires: libappstream-glib
BuildRequires: polkit-devel
Requires: gnome-icon-theme-extras
%description
GNOME MultiWriter can be used to write an ISO file to multiple USB devices
simultaneously.
%prep
%setup -q
%build
%meson
%meson_build
%install
%meson_install
%find_lang %{name}
%check
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
%post
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%postun
if [ $1 -eq 0 ] ; then
/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
fi
%posttrans
/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
%files -f %{name}.lang
%doc README.md AUTHORS
%{_bindir}/%{name}
%{_libexecdir}/%{name}-probe
%{_datadir}/appdata/org.gnome.MultiWriter.appdata.xml
%{_datadir}/applications/org.gnome.MultiWriter.desktop
%{_datadir}/glib-2.0/schemas/org.gnome.MultiWriter.gschema.xml
%{_datadir}/icons/hicolor/*/apps/*
%{_datadir}/polkit-1/actions/org.gnome.MultiWriter.policy
%{_mandir}/man1/gnome-multi-writer.1.gz
%changelog
* #LONGDATE# Richard Hughes <richard@hughsie.com> #VERSION#-0.#BUILD##ALPHATAG#
- Update from git
i18n.merge_file(
input: 'org.gnome.MultiWriter.appdata.xml.in',
output: 'org.gnome.MultiWriter.appdata.xml',
type: 'xml',
po_dir: join_paths(meson.source_root(), 'po'),
install: true,
install_dir: join_paths(get_option('datadir'), 'appdata')
)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2015 Richard Hughes <richard@hughsie.com> -->
<component type="desktop">
<id>org.gnome.MultiWriter.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0+</project_license>
<!-- TRANSLATORS: the application name -->
<name>MultiWriter</name>
<!-- TRANSLATORS: one-line description for the app -->
<summary>Write an ISO file to multiple USB devices at once</summary>
<description>
<!-- TRANSLATORS: AppData description marketing paragraph -->
<p>
GNOME MultiWriter can be used to write an ISO file to multiple USB devices
at once.
Supported drive sizes are between 1GB and 32GB.
</p>
<!-- TRANSLATORS: QA refers to quality assurance, aka people testing stuff,
GNOME refers to the desktop environment -->
<p>
MultiWriter may be useful for QA testing, to create a GNOME Live image
for a code sprint or to create hundreds of LiveUSB drives for a trade
show.
</p>
<!-- TRANSLATORS: saturate as in the throughput can get no more -->
<p>
Writing a more than 10 devices simultaneously can easy saturate the USB
bus for most storage devices.
There are two ways to write more devices in parallel:
</p>
<ul>
<!-- TRANSLATORS: storage devices refers to the things we're writing to -->
<li>Use USB 3.0 hubs, even if the storage devices are USB 2.0</li>
<!-- TRANSLATORS: PCIe is the data bus, don't translate please -->
<li>Install another USB 2.0 PCIe root hub</li>
</ul>
<!-- TRANSLATORS: the ColorHug is an open hardware product, don't translate the name -->
<p>
MultiWriter was originally written as part of the ColorHug project but
was split off as an independent application in 2015.
</p>
</description>
<screenshots>
<screenshot type="default">
<image>https://git.gnome.org/browse/gnome-multi-writer/plain/data/appdata/gmw-startup.png</image>
<!-- TRANSLATORS: the 1st screenshot caption -->
<caption>Initial screen for the application</caption>
</screenshot>
<screenshot>
<image>https://git.gnome.org/browse/gnome-multi-writer/plain/data/appdata/gmw-progress.png</image>
<!-- TRANSLATORS: the 2nd screenshot caption -->
<caption>Writing and verifying images</caption>
</screenshot>
<screenshot>
<image>https://git.gnome.org/browse/gnome-multi-writer/plain/data/appdata/gmw-finished.png</image>
<!-- TRANSLATORS: the 3rd screenshot caption -->
<caption>All devices have been written</caption>
</screenshot>
</screenshots>
<!--
Validate with `appstream-util validate *.appdata.xml`
-->
<releases>
<release date="2017-09-11" version="3.26.0">
<description>
<p>
This is the first stable release for GNOME 3.26 and updates several
translations.
</p>
</description>
</release>
<release date="2017-08-07" version="3.25.90">
<description>
<p>
This unstable release switched to the meson buildsystem and updated
several translations.
</p>
</description>
</release>
<release date="2017-03-20" version="3.24.0">
<description>
<p>This is the first stable release for GNOME 3.24.</p>
</description>
</release>
<release date="2017-03-11" version="3.23.92">
<description>
<p>This unstable release updates several translations.</p>
</description>
</release>
<release version="3.22.1" date="2016-10-12">
<description>
<p>This release fixes the following bugs:</p>
<ul>
<li>Allow writing to large expensive USB drives</li>
</ul>
</description>
</release>
<release version="3.22.0" date="2016-09-19">
<description>
<p>This is the first stable release for GNOME 3.22.</p>
</description>
</release>
<release version="3.21.92" date="2016-09-13">
<description>
<p>This unstable release fixes several build issues and also updates one translation.</p>
</description>
</release>
<release version="3.21.91" date="2016-08-29">
<description>
<p>This unstable release fixes the following bug:</p>
<ul>
<li>Check for authentication before copying starts</li>
</ul>
<p>This release also updates translations.</p>
</description>
</release>
<release version="3.21.90" date="2016-08-15">
<description>
<p>This release only updates translations.</p>
</description>
</release>
<release version="3.20.0" date="2016-03-21">
<description>
<p>This is the first stable release for GNOME 3.20</p>
</description>
</release>
<release version="3.19.90" date="2016-02-15">
<description>
<p>This unstable release fixes the following bug:</p>
<ul>
<li>Add proper text to the button during a copy operation</li>
</ul>
</description>
</release>
<release version="3.18.0" timestamp="1442827658">
<description>
<p>This is the first stable release for GNOME 3.18</p>
</description>
</release>
<release version="3.17.92" timestamp="1442312119"/>
<release version="3.17.90" timestamp="1439990287">
<description>
<p>This release only updates translations.</p>
</description>
</release>
<release version="3.16.0" timestamp="1427103917">
<description>
<p>This stable release marks the release of GNOME 3.16!</p>
</description>
</release>
<release version="3.15.92" timestamp="1426498834">
<description>
<p>This release only updates translations.</p>
</description>
</release>
<release version="3.15.91" timestamp="1425299116">
<description>
<p>This release only updates translations.</p>
</description>
</release>
<release version="3.15.90" timestamp="1285974000">
<description>
<p>This unstable release fixes the following bugs:</p>
<ul>
<li>Add hub quirks for all Plugable USB devices</li>
</ul>
<p>This release also adds the following new features:</p>
<ul>
<li>Optionally check that USB drives are indeed their advertised size</li>
<li>Allow renaming hub labels from the UI</li>
</ul>
</description>
</release>
<release version="3.15.4" timestamp="1390089600">
<description>
<p>This unstable release fixes the following bugs:</p>
<ul>
<li>Add quirks for the 36 port MegaHub</li>
<li>Don't proceed to the copy phase if unmounting failed</li>
<li>Never use the USB platform ID for the hub label</li>
<li>Support root hubs with bus numbers greater than 8</li>
<li>Unmount all partitions when a device is inserted</li>
</ul>
<p>This release also adds the following new feature:</p>
<ul>
<li>Show the size next to the device name when the device is idle</li>
</ul>
</description>
</release>
<release version="3.15.2" timestamp="1389225600">
<description>
<p>This unstable release fixes the following bugs:</p>
<ul>
<li>Queue the device writes according to the connected root hub</li>
<li>Show ten devices per column to better use the space</li>
<li>Unmount filesystems before starting to copy</li>
</ul>
<p>This release also adds the following new feature:</p>
<ul>
<li>Reads and writes are now spread over root hubs to increase throughput</li>
<li>Completely wipe devices by default</li>
<li>Make the verification and wipe optional</li>
<li>Show a warning dialog before copying for the first time</li>
<li>Show some global read/write stats in the title bar</li>
</ul>
</description>
</release>
<release version="3.15.1" timestamp="1388880000">
<description>
<p>This initial release fixes the following bugs:</p>
<ul>
<li>Show the USB connection address in the UI</li>
<li>Use a progressbar and smaller icons in the main UI</li>
</ul>
<p>This release also adds the following new feature:</p>
<ul>
<li>Copy an ISO image to an unlimited number of devices</li>
<li>Inhibit suspend when copying data</li>
<li>Play a sound when all the images have been written</li>
<li>Show an image when there are no suitable drives plugged in</li>
</ul>
</description>
</release>
</releases>
<kudos>
<kudo>AppMenu</kudo>
<kudo>HiDpiIcon</kudo>
<kudo>ModernToolkit</kudo>
</kudos>
<project_group>GNOME</project_group>
<url type="homepage">https://wiki.gnome.org/Apps/MultiWriter</url>
<url type="bugtracker">https://bugzilla.gnome.org/browse.cgi?product=gnome-multi-writer</url>
<update_contact>richard_at_hughsie.com</update_contact>
<translation type="gettext">gnome-multi-writer</translation>
</component>
This diff is collapsed.
install_data('16x16/org.gnome.MultiWriter.png',
install_dir : 'share/icons/hicolor/16x16/apps')
install_data('22x22/org.gnome.MultiWriter.png',
install_dir : 'share/icons/hicolor/22x22/apps')
install_data('32x32/org.gnome.MultiWriter.png',
install_dir : 'share/icons/hicolor/32x32/apps')
install_data('48x48/org.gnome.MultiWriter.png',
install_dir : 'share/icons/hicolor/48x48/apps')
install_data('256x256/org.gnome.MultiWriter.png',
install_dir : 'share/icons/hicolor/256x256/apps')
subdir('appdata')
subdir('icons')
compiled = gnome.compile_schemas()
install_data('org.gnome.MultiWriter.gschema.xml',
install_dir : 'share/glib-2.0/schemas'
)
i18n.merge_file(
input: 'org.gnome.MultiWriter.desktop.in',
output: 'org.gnome.MultiWriter.desktop',
type: 'desktop',
po_dir: join_paths(meson.source_root(), 'po'),
install: true,
install_dir: join_paths(get_option('datadir'), 'applications')
)
i18n.merge_file(
input: 'org.gnome.MultiWriter.policy.in',
output: 'org.gnome.MultiWriter.policy',
type: 'xml',
po_dir: join_paths(meson.source_root(), 'po'),
install: true,
install_dir: join_paths(get_option('datadir'), 'polkit-1', 'actions')
)
[Desktop Entry]
Name=MultiWriter
Comment=Write an ISO file to multiple USB devices at once
# TRANSLATORS: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.MultiWriter
Exec=gnome-multi-writer
Terminal=false
Type=Application
Categories=GNOME;GTK;System;
# TRANSLATORS: these are desktop keywords - remember the trailing ';' :)
Keywords=Image;Writer;ISO;USB;
StartupNotify=true
NoDisplay=false
<schemalist>
<schema id="org.gnome.MultiWriter" path="/org/gnome/MultiWriter/">
<key name="filename" type="s">
<default>''</default>
<!-- TRANSLATORS: schema summary -->
<summary>The filename to write to the USB disks</summary>
<!-- TRANSLATORS: schema description -->
<description>The filename of the ISO image to write to the connected USB disks.</description>
</key>
<key name="max-threads" type="u">
<default>10</default>
<!-- TRANSLATORS: schema summary -->
<summary>The maximum number of threads to use</summary>
<!-- TRANSLATORS: schema description -->
<description>The maximum number of parallel threads to use when copying data.</description>
</key>
<key name="blank-drive" type="b">
<default>true</default>
<!-- TRANSLATORS: schema summary -->
<summary>Completely blank drive when writing</summary>
<!-- TRANSLATORS: schema description -->
<description>Write the ISO to the drive and then blank the remainder of the drive.</description>
</key>
<key name="enable-verify" type="b">
<default>true</default>
<!-- TRANSLATORS: schema summary -->
<summary>Verify the ISO image was written correctly</summary>
<!-- TRANSLATORS: schema description -->
<description>Read and verify the ISO image from each device after writing is complete.</description>
</key>
<key name="enable-probe" type="b">
<default>false</default>
<!-- TRANSLATORS: schema summary -->
<summary>Inspect the device before writing images</summary>
<!-- TRANSLATORS: schema description -->
<description>Inspect the device to verify the reported device size is the actual media size.</description>
</key>
<key name="show-warning" type="b">
<default>true</default>
<!-- TRANSLATORS: schema summary -->
<summary>Show a warning before writing to a drive</summary>
<!-- TRANSLATORS: schema description -->
<description>Show a warning dialog confirming that the device contents are to be erased.</description>
</key>
</schema>
</schemalist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
<!--
Policy definitions for MultiWriter system actions.
Copyright (c) 2015 Richard Hughes <richard@hughsie.com>
-->
<vendor>GNOME</vendor>
<vendor_url>https://wiki.gnome.org/Apps/MultiWriter</vendor_url>
<icon_name>gnome-multi-writer</icon_name>
<action id="org.gnome.MultiWriter.probe">
<description>Check the device</description>
<message>Authentication is required to probe the device</message>
<icon_name>drive-harddisk-usb</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gnome-multi-writer-probe</annotate>
</action>
</policyconfig>
<Project xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:gnome="http://api.gnome.org/doap-extensions#"
xmlns="http://usefulinc.com/ns/doap#">
<name xml:lang="en">gnome-multi-writer</name>
<shortdesc xml:lang="en">GNOME MultiWriter</shortdesc>
<category rdf:resource="http://api.gnome.org/doap-extensions#apps" />
<programming-language>C</programming-language>
<description xml:lang="en">
Write an ISO file to multiple USB devices at once.
</description>
<homepage rdf:resource="https://wiki.gnome.org/Apps/MultiWriter" />
<download-page rdf:resource="http://download.gnome.org/sources/gnome-multi-writer/" />
<bug-database rdf:resource="https://bugzilla.gnome.org/browse.cgi?product=gnome-multi-writer" />
<maintainer>
<foaf:Person>
<foaf:name>Richard Hughes</foaf:name>
<foaf:mbox rdf:resource="mailto:richard@hughsie.com" />
<foaf:homepage rdf:resource="https://wiki.gnome.org/Apps/MultiWriter/" />
<gnome:userid>rhughes</gnome:userid>
</foaf:Person>
</maintainer>
<license rdf:resource="http://www.gnu.org/licenses/gpl-2.0.txt" />
</Project>
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!-- Please adjust the date whenever revising the manpage. -->
<!ENTITY date "<date>02 Januart,2015</date>">
<!ENTITY package "gnome-multi-writer">
<!ENTITY gnu "<acronym>GNU</acronym>">
<!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
]>
<refentry>
<refentryinfo>
<address>
<email>richard@hughsie.com</email>;
</address>
<author>
<firstname>Richard</firstname>
<surname>Hughes</surname>
</author>
<copyright>
<year>2015</year>
<holder>Richard Hughes</holder>
</copyright>