Skip to content
Commits on Source (150)
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
build:
stage: test
image: nixpkgs/nix:latest
script:
# Sandboxing would require privileged docker.
- mkdir -p /etc/nix
- echo 'sandbox = false' > /etc/nix/nix.conf
- nix-build
flatpak:
extends: '.flatpak'
variables:
MANIFEST_PATH: "flatpak/org.gnome.FileRoller.json"
FLATPAK_MODULE: "file-roller"
APP_ID: "org.gnome.FileRoller"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
BUNDLE: "file-roller-dev.flatpak"
nightly:
extends: '.publish_nightly'
dependencies: ['flatpak']
needs: ['flatpak']
Version 43.alpha
----------------
Released: 2022-08-18
New features and user visible changes:
- Support `7zz` and `7zzs` programs from the official 7-Zip project (!75)
- Distros will want to adjust the `data/packages.match` file.
- Add a mnemonic to Extract button (!73)
- Make password field reveal icon consistent with other GNOME apps
- Nautilus extension now supports extracting multiple archives simultaneously with “Archive to…” (!78)
- Add context menu item to navigate to a file from search (!71)
Bugs fixed:
- Fix RAR decompression support in 7-Zip backend (!75)
- Fix opening RAR archives with encrypted headers (Jake Dane; !82)
Other changes:
- Port Nautilus extension to Nautilus 43 (!81)
- Various code clean-ups (!74, #69, !59, !15, !80, !78, …)
- Slightly modernized Meson code (!60)
- Use portal-based APIs for opening files, adding dependency on libportal and libportal-gtk3 (Maximiliano; !55)
- Add support for building internal API docs using gi-docgen (!72)
- Do not hide File-Roller icon in the KDE app laucher (!70)
- Remove dependency on libnotify (Maximiliano; !61)
Translation updates:
- Abkhazian (Nart Tlisha)
- Basque (Asier Sarasua Garmendia)
- Catalan (Jordi Mas)
- Chinese (China) (Luming Zh)
- Croatian (Goran Vidović)
- Dutch (Nathan Follens)
- Finnish (Jiri Grönroos)
- French (Irénée THIRION)
- Friulian (Fabio Tomat)
- Galician (Fran Dieguez)
- Georgian (Zurab Kargareteli)
- Hebrew (Yosef Or Boczko)
- Indonesian (Andika Triwidada, Kukuh Syafaat)
- Nepali (Pawan Chitrakar)
- Occitan (Quentin PAGÈS)
- Persian (Danial Behzadi)
- Polish (Piotr Drąg)
- Portuguese (Hugo Carvalho)
- Russian (Aleksandr Melman)
- Serbian (Марко Костић)
- Slovak (Dušan Kazik)
- Slovenian (Matej Urbančič)
- Spanish (Daniel Mustieles)
- Swedish (Anders Jonsson)
- Turkish (Emin Tufan Çetin)
- Ukrainian (Yuri Chornoivan)
Version 3.42.0
~~~~~~~~~~~~~~
Released: 2022-03-20
Bugfixes:
* Requires libhandy >= 1.5
version 3.41.90
---------------
This is a Beta release
......
......@@ -75,9 +75,14 @@ Also you need the following libraries:
* glib >= 2.38
* gtk+ >= 3.22.0
* libnautilus-extension >= 3.28.0 (optional)
* libhandy >=1.5.0
* libportal >= 0.5
* libportal-gtk3 >= 0.5
* libnautilus-extension-4 >= 43.beta (optional)
* libarchive >= 3.1.900a (optional)
Alternately, with [Nix package manager](https://nixos.org/nix/), you can just run `nix-shell` in the project directory, and it will drop you into a shell with all the required dependencies.
## Install
```bash
......
po_dir = join_paths(meson.source_root(), 'po')
po_dir = join_paths(meson.project_source_root(), 'po')
install_data('org.gnome.FileRoller.gschema.xml',
install_dir : join_paths(datadir, 'glib-2.0', 'schemas')
......@@ -13,7 +13,7 @@ install_data('packages.match',
desktop_in_file = custom_target('org.gnome.FileRoller.desktop.in',
input : [ 'supported-mime-types', 'org.gnome.FileRoller.desktop.in.in' ],
output : 'org.gnome.FileRoller.desktop.in',
command : [ find_program('set-mime-type-entry.py'), '@INPUT@' ],
command : [ find_program('python3'), files('set-mime-type-entry.py'), '@INPUT@' ],
capture: true,
install : false
)
......
......@@ -48,6 +48,7 @@
</provides>
<releases>
<release version="43.alpha" date="2022-08-17" type="development"/>
<release version="3.42.0" date="2022-03-20"/>
<release version="3.41.90" date="2022-02-23" type="development"/>
<release version="3.40.0" date="2021-05-01"/>
......
......@@ -9,9 +9,8 @@ StartupNotify=true
Terminal=false
Type=Application
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.ArchiveManager
Icon=org.gnome.FileRoller
Categories=GTK;GNOME;Utility;Archiving;Compression;X-GNOME-Utilities;
NotShowIn=KDE;
MimeType=@MIMETYPES@
X-GNOME-DocPath=file-roller/file-roller.xml
X-GNOME-UsesNotifications=true
[Package Matches]
7zip=
7zip-full=
7zip-rar=
arj=
binutils=
brotli=
......@@ -9,13 +12,11 @@ genisoimage=
gzip=
lha=
lrzip=
lz4=
lzip=
lzma=
lzop=
ncompress=
p7zip=
p7zip-full=
p7zip-rar=
rar=
rpm=
rzip=
......@@ -24,9 +25,10 @@ unace=
unalz=
unarchiver=
unrar=
unsquashfs=
unstaff=
unzip=
xz=
zip=
zstd=
zoo=
zstd=
list=`find .. -iname "*.c" | xargs grep PACKAGES | sed -e 's/.*PACKAGES[ ]*[(]"\([^"]*\)"[)];/\1/g' -e 's/,/\n/g' | sort -u | sed -e 's/\(.*\)/\1=/g' | tr '\n' '|'`
list=`find .. -iname "*.c" | xargs grep FR_PACKAGES | sed -e 's/.*FR_PACKAGES[ ]*[(]"\([^"]*\)"[)];/\1/g' -e 's/,/\n/g' | sort -u | sed -e 's/\(.*\)/\1=/g' | tr '\n' '|'`
sed -e 's/@NAMES@/'"$list"'/g' < packages.match.in | tr '|' '\n' > packages.match
/*
How to use?
***********
If you have Nix installed, you can get an environment with everything
needed to compile file-roller by running:
$ nix-shell
at the root of the file-roller repository.
You can also compile file-roller and ‘install’ it by running:
$ nix-build
at the root of the file-roller repository. The command will install
file-roller to a location under Nix store and create a ‘result’ symlink
in the current directory pointing to the in-store location.
The dependencies are pinned, you can update them to latest versions with:
$ nix-shell --run 'niv update'
How to tweak default arguments?
*******************************
Nix supports the ‘--arg’ option (see nix-build(1)) that allows you
to override the top-level arguments.
For instance, to use your local copy of Nixpkgs:
$ nix-build --arg pkgs "import $HOME/Projects/nixpkgs {}"
Or to speed up the build by not running the test suite:
$ nix-build --arg doCheck false
*/
{
# Nixpkgs instance, will default to one from Niv.
pkgs ? null,
# Whether to run tests when building File Roller using nix-build.
doCheck ? true,
# Whether to build File Roller, or shell for developing it.
# We do not use lib.inNixShell because that would also apply
# when in a nix-shell of some package depending on this one.
shell ? false,
} @ args:
let
# Pinned Nix dependencies (e.g. Nixpkgs) managed by Niv.
sources = import ./nix/sources.nix;
# Setting pkgs to the pinned version
# when not overridden in args.
pkgs =
if args.pkgs or null == null
then
import sources.nixpkgs {
overlays = [];
config = {};
}
else args.pkgs;
inherit (pkgs) lib;
# Function for building File Roller or shell for developing it.
makeDerivation =
if shell
then pkgs.mkShell
else pkgs.stdenv.mkDerivation;
in
makeDerivation rec {
name = "file-roller";
src =
let
# Do not copy to the store:
# - build directory, since Nixpkgs’ Meson infrastructure would want to use it
# - .git directory, since it would unnecessarily bloat the source
cleanSource = path: _: !lib.elem (builtins.baseNameOf path) ["build" ".git"];
in
if shell
then null
else builtins.filterSource cleanSource ./.;
# Dependencies for build platform
nativeBuildInputs = with pkgs; [
desktop-file-utils
gettext
gi-docgen
glibcLocales
gobject-introspection
itstool
libxml2
meson
ninja
pkg-config
wrapGAppsHook
] ++ lib.optionals shell [
niv
];
# Dependencies for host platform
buildInputs = with pkgs; [
cpio
file
glib
gnome.adwaita-icon-theme
gtk3
json-glib
libarchive
libhandy
libportal-gtk3
];
mesonFlags = [
"-Dintrospection=enabled"
"-Dapi_docs=enabled"
# TODO: Re-enable once we have Nautilus 43.
"-Dnautilus-actions=disabled"
];
inherit doCheck;
}
[library]
version = "@VERSION@"
description = "An archive manager utility for GNOME"
license = "GPL-2.0-or-later"
browse_url = "https://gitlab.gnome.org/GNOME/file-roller/"
repository_url = "https://gitlab.gnome.org/GNOME/file-roller.git"
logo_url = "org.gnome.FileRoller.svg"
devhelp = true
search_index = true
[theme]
name = "basic"
show_index_summary = true
show_class_hierarchy = true
[source-location]
# The base URL for the web UI
base_url = "https://gitlab.gnome.org/GNOME/file-roller/-/blob/master/"
# The format for links, using "filename" and "line" for the format
file_format = "{filename}#L{line}"
[extra]
urlmap_file = "urlmap.js"
content_images = [
"../data/icons/hicolor/scalable/apps/org.gnome.FileRoller.svg",
]
if build_api_docs
toml_data = configuration_data()
toml_data.set('VERSION', meson.project_version())
fr_toml = configure_file(
input: 'file-roller.toml.in',
output: 'file-roller.toml',
configuration: toml_data,
)
custom_target(
'file-roller-doc',
input: [
fr_toml,
fr_gir[0],
],
output: 'file-roller',
command: [
gi_docgen,
'generate',
'--quiet',
'--add-include-path=@0@'.format(meson.current_build_dir() / '../../src'),
'--config=@INPUT0@',
'--output-dir=@OUTPUT@',
'--no-namespace-dir',
'--content-dir=@0@'.format(meson.current_source_dir()),
'@INPUT1@',
],
build_by_default: true,
install: true,
install_dir: docdir,
)
endif
// SPDX-FileCopyrightText: 2021 GNOME Foundation
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copied from GTK
// A map between namespaces and base URLs for their online documentation
baseURLs = [
["GLib", "https://docs.gtk.org/glib/"],
["Gio", "https://docs.gtk.org/gio/"],
["GObject", "https://docs.gtk.org/gobject/"],
["Gdk", "https://docs.gtk.org/gdk3/"],
["GdkPixbuf", "https://docs.gtk.org/gdk-pixbuf/"],
["Gtk", "https://docs.gtk.org/gtk3/"],
["Pango", "https://docs.gtk.org/Pango/"]
];
......@@ -62,4 +62,11 @@
<gnome:userid>paobac</gnome:userid>
</foaf:Person>
</maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Jan Tojnar</foaf:name>
<foaf:mbox rdf:resource="mailto:jtojnar@gmail.com"/>
<gnome:userid>jtojnar</gnome:userid>
</foaf:Person>
</maintainer>
</Project>
{
"app-id" : "org.gnome.FileRoller",
"runtime" : "org.gnome.Platform",
"runtime-version" : "master",
"sdk" : "org.gnome.Sdk",
"command" : "file-roller",
"finish-args" : [
"--share=ipc",
"--socket=fallback-x11",
"--socket=wayland",
"--filesystem=home",
"--metadata=X-DConf=migrate-path=/org/gnome/file-roller/",
"--own-name=org.gnome.ArchiveManager1"
],
"cleanup" : [
"/share/man"
],
"modules" : [
{
"name": "p7zip",
"no-autogen": true,
"make-args": [
"7z"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/jinfeihan57/p7zip/archive/refs/tags/v17.04.tar.gz",
"sha256": "ea029a2e21d2d6ad0a156f6679bd66836204aa78148a4c5e498fe682e77127ef"
}
]
},
{
"name": "gnustep-make",
"buildsystem": "simple",
"build-commands": [
"./configure --prefix=/app",
"make -j $FLATPAK_BUILDER_N_JOBS install"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/gnustep/tools-make/releases/download/make-2_9_0/gnustep-make-2.9.0.tar.gz",
"sha256": "a0b066c11257879c7c85311dea69c67f6dc741ef339db6514f85b64992c40d2a"
}
]
},
{
"name": "gnustep",
"buildsystem": "simple",
"build-commands": [
"./configure --prefix=/app",
"make -j $FLATPAK_BUILDER_N_JOBS install",
"ls /app/include"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/gnustep/libs-base/releases/download/base-1_28_0/gnustep-base-1.28.0.tar.gz",
"sha256": "c7d7c6e64ac5f5d0a4d5c4369170fc24ed503209e91935eb0e2979d1601039ed"
}
]
},
{
"name": "unar",
"buildsystem": "simple",
"build-commands": [
"sed -s -i 's#/usr/include/GNUstep#/app/include#g' */Makefile.linux",
"make -C XADMaster -j $FLATPAK_BUILDER_N_JOBS -f Makefile.linux",
"install -m755 XADMaster/unar XADMaster/lsar /app/bin/"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/MacPaw/unar/archive/v1.10.7.tar.gz",
"sha256": "6ab8f01f7db8bc88e6e8e08a1d79fb7ef8e9fb1d940c748d0a329a2d6d331016"
}
]
},
{
"name": "zstd",
"buildsystem": "meson",
"subdir": "build/meson",
"sources": [
{
"type": "archive",
"url": "https://github.com/facebook/zstd/releases/download/v1.4.8/zstd-1.4.8.tar.gz",
"sha256": "32478297ca1500211008d596276f5367c54198495cf677e9439f4791a4c69f24"
}
]
},
{
"name": "rpm2cpio",
"buildsystem": "simple",
"build-commands": [
"install -D rpm2cpio.py /app/bin/rpm2cpio"
],
"sources": [
{
"type": "archive",
"url": "https://github.com/ruda/rpm2cpio/archive/2017.tar.gz",
"sha256": "d266a4f49e65b5d05956502549ceb1d5671f927375ff71299069e6d92363297a"
},
{
"type": "patch",
"path": "rpm2cpio.patch"
}
]
},
{
"name": "libportal",
"buildsystem": "meson",
"builddir": true,
"config-opts": [
"-Ddocs=false",
"-Dbackends=gtk3"
],
"sources" : [
{
"type": "git",
"url": "https://github.com/flatpak/libportal.git",
"branch": "main"
}
]
},
{
"name" : "file-roller",
"buildsystem" : "meson",
"cleanup": [
"org.gnome.FileRoller.ArchiveManager1.service"
],
"builddir" : true,
"sources" : [
{
"type": "dir",
"path": "../"
}
]
}
]
}
diff --git a/rpm2cpio.py b/rpm2cpio.py
index e8e768d..06907e4 100755
--- a/rpm2cpio.py
+++ b/rpm2cpio.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Lightweight RPM to CPIO converter.
@@ -20,16 +20,10 @@ rpm2cpio < adjtimex-1.20-2.1.i386.rpm | cpio -it
133 blocks
'''
-from __future__ import print_function
-
import sys
import gzip
import subprocess
-
-try:
- from StringIO import StringIO
-except ImportError:
- from io import StringIO
+from io import BytesIO
HAS_LZMA_MODULE = True
try:
@@ -47,7 +41,7 @@ XZ_MAGIC = b'\xfd7zXZ\x00'
def gzip_decompress(data):
- gzstream = StringIO(data)
+ gzstream = BytesIO(data)
gzipper = gzip.GzipFile(fileobj=gzstream)
data = gzipper.read()
return data
......@@ -28,7 +28,7 @@
<title>
<media type="image" its:translate="no" width="48px" height="48px"
src="figures/org.gnome.ArchiveManager.svg" />
src="figures/org.gnome.FileRoller.svg" />
Archive Manager
</title>
......