On 07/26/2017 01:29 AM, Marek Marczykowski-Górecki wrote:
> On Tue, Jul 25, 2017 at 08:54:57PM -0700, Andrew Morgan wrote:
>> On 07/25/2017 06:23 PM, Marek Marczykowski-Górecki wrote:
>>> On Tue, Jul 25, 2017 at 05:52:56PM -0700, Andrew Morgan wrote:
>>>> On 07/24/2017 02:33 AM, Andrew Morgan wrote:
>>>>> ## Nautilus
>>>>>
>>>>> The patch for Nautilus is finally getting going! After some hiccups with
>>>>> Nautilus' build process, I've now switched to [GNOME
>>>>> Builder](https://wiki.gnome.org/Apps/Builder) for the compilation and
>>>>> run management of Nautilus. Builder provides a much cleaner experience
>>>>> when building and compiling, and after only hearing about it here and
>>>>> there, it was exciting to finally download and try it out.
>>>>>
>>>>> After a couple hiccups with importing the Nautilus code and checking out
>>>>> the correct branch (gnome-3-22 in this case) with the help of some fine
>>>>> folks on #gnome-builder, Nautilus was building and launching as expected:
>>>>>
>>>>> ![Nautilus built and running from
>>>>> Builder](images/nautilus-gnome-builder.png)
>>>>> *Nautilus built and running from Builder*
>>>>>
>>>>> The other advantage GNOME Builder holds is its ability to build all
>>>>> projects as flatpaks. This makes it much easier to share testing builds
>>>>> of Nautilus without asking people to install Nautilus' [horrible list of
>>>>> dependencies](https://ubuntuforums.org/showthread.php?t=1678656&p=10426119#post10426119),
>>>>> and instead just run a single command to start it up!
>>>>>
>>>>> In addition to Nautilus, GNOME Builder is also helping me with patching
>>>>> [nautilus-python](https://wiki.gnome.org/Projects/NautilusPython/),
>>>>> which are the python bindings that allow extensions written in python to
>>>>> interact with Nautilus' C API.
>>>>>
>>>>> [This
>>>>> folder](https://git.gnome.org/browse/nautilus-python/tree/src/nautilus-python-object.c)
>>>>> houses the definitions of functions that can be referenced in
>>>>> `nautilus-python` extensions. Nautilus' maintainer, Carlos Soriano, also
>>>>> kindly pointed out where these methods connect to Nautilus itself, which
>>>>> turns out to be
>>>>> [here](https://git.gnome.org/browse/nautilus/tree/libnautilus-extension).
>>>>>
>>>>> The typical workflow in a `nautilus-python` extension is to define a
>>>>> function that corresponds to the data or action you desire, then return
>>>>> some data based on some logic you have in your extension. My plan is to
>>>>> create another function here that will be called when a file is
>>>>> determined to be opened. The file will then be opened depending on
>>>>> whether the extension returns a `True` or a `False`.
>>>>>
>>>>> A new DisposableVM with the file in question can be launched from within
>>>>> the extension, so there is no need for any Qubes-specific code to go
>>>>> into this patch.
>>>>>
>>>> To clarify on this after some digging today, Nautilus officially only
>>>> supports extensions written in C. There are a few extensions that are
>>>> included in Nautilus' source tree (such as the sendto extension), but
>>>> all one needs to do to install an extension is to place the extension
>>>> library in `/usr/lib(64)/nautilus/extensions-3.0/`, restart Nautilus and
>>>> it should be installed.
>>>
>>>> NautilusPython is a Nautilus C extension. It's purpose is just to read
>>>> python scripts that perform extension actions and translate those into
>>>> the C actions Nautilus is used to. It's a completely separate
>>>> compatibility layer.
>>>
>>>> This is all fine and dandy, and means that if needed, really only
>>>> Nautilus (not NautilusPython) would have to be patched to include new
>>>> bindings for file open events, and a C Nautilus extension could be
>>>> written to make use of it.
>>>
>>>> I'm going to strive to have NautilusPython be compatible with the new
>>>> bindings though, since writing extensions in C is a heck of a lot more
>>>> work and setup then their Python counterparts.
>>>
>>> +1
>>>
>>>> One blocker I'm having at the moment is getting the gnome-builder
>>>> version of Nautilus to recognize extensions. The 'gnome-3-22' branch
>>>> version, to my knowledge, does not support building with Flatpak (or at
>>>> least there was no manifest defined, even though it could be built and
>>>> ran from gnome-builder).
>>>
>>> I'm not really sure if you need to spend time on getting Flatpak build
>>> working. If you build the same (or similar) Nautilus version as is
>>> already installed in the template, all dependencies should be already in
>>> place, so it should be still easy.
> 
>> Is it possible to build just Nautilus with qubes-builder? That may make
>> things much closer to what we want.
> 
> You'll need source package (.spec for rpm for example). You can start
> with upstream source package:
>  - dnf download --source nautilus && rpmdev-extract nautilus*src.rpm
>  - apt-get source nautilus
> 
> Then place resulting files in a subdirectory of qubes-src and add
> Makefile.builder with either (or both):
>  RPM_SPEC_FILES = relative/path/to/spec
>  DEBIAN_BUILD_DIRS = debian (actually, a path to a directory with "control" 
> file)
> 
> For RPM, qubes-builder will handle unpacking sources, for Debian, you
> need to add commands to do it into Makefile.builder, something like:
> 
>     ifneq ($(filter $(DISTRIBUTION), debian qubuntu),)
>     SOURCE_COPY_IN = debian-source-copy-in
>     endif
> 
>     debian-source-copy-in: SRC_FILE = 
> "$(CHROOT_DIR)/$(DIST_SRC)/nautilus-x.y.z.tar.gz"
>         tar xf $(SRC_FILE) -C $(CHROOT_DIR)/$(DIST_SRC) --strip-components=1  
> 
> Some more details here:
> https://github.com/QubesOS/qubes-builder/blob/master/doc/ComponentConfiguration.md
> 
> 

Hey Marek,

I was able to build an entire f25-minimal template. Is there any way to
build just the app or perhaps just build a new copy of Nautilus for an
existing template?

Thanks,
Andrew Morgan

-- 
You received this message because you are subscribed to the Google Groups 
"qubes-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to qubes-devel+unsubscr...@googlegroups.com.
To post to this group, send email to qubes-devel@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qubes-devel/ole5tb%241t7%241%40blaine.gmane.org.
For more options, visit https://groups.google.com/d/optout.

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to