[PATCH] Make notmuch-mutt script more portable

classic Classic list List threaded Threaded
3 messages Options
Greg Anders Greg Anders
Reply | Threaded
Open this post in threaded view
|

[PATCH] Make notmuch-mutt script more portable

The -D flag to install (used in the Makefile) is GNU-specific and does
not work on BSD distributions (i.e. macOS). Likewise with the xargs -r
flag. These changes use portable alternatives to these flags while
preserving the exact behavior.
---
 contrib/notmuch-mutt/Makefile     | 6 +++---
 contrib/notmuch-mutt/notmuch-mutt | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/contrib/notmuch-mutt/Makefile b/contrib/notmuch-mutt/Makefile
index 855438be..de933eaa 100644
--- a/contrib/notmuch-mutt/Makefile
+++ b/contrib/notmuch-mutt/Makefile
@@ -15,11 +15,11 @@ README.html: README
  markdown $< > $@
 
 install: all
- mkdir -p $(DESTDIR)$(prefix)/bin
+ mkdir -p $(DESTDIR)$(prefix)/bin $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(sysconfdir)/Muttrc.d
  sed "1s|^#!.*|#! $(PERL_ABSOLUTE)|" < $(NAME) > $(DESTDIR)$(prefix)/bin/$(NAME)
  chmod 755 $(DESTDIR)$(prefix)/bin/$(NAME)
- install -D -m 644 $(NAME).1 $(DESTDIR)$(mandir)/man1/$(NAME).1
- install -D -m 644 $(NAME).rc $(DESTDIR)$(sysconfdir)/Muttrc.d/$(NAME).rc
+ install -m 644 $(NAME).1 $(DESTDIR)$(mandir)/man1/
+ install -m 644 $(NAME).rc $(DESTDIR)$(sysconfdir)/Muttrc.d/
 
 clean:
  rm -f notmuch-mutt.1 README.html
diff --git a/contrib/notmuch-mutt/notmuch-mutt b/contrib/notmuch-mutt/notmuch-mutt
index 0e46a8c1..d33223bd 100755
--- a/contrib/notmuch-mutt/notmuch-mutt
+++ b/contrib/notmuch-mutt/notmuch-mutt
@@ -50,7 +50,7 @@ sub search($$$) {
     empty_maildir($maildir);
     system("notmuch search --output=files $dup_option $query"
    . " | sed -e 's: :\\\\ :g'"
-   . " | xargs -r -I searchoutput ln -s searchoutput $maildir/cur/");
+   . " | while IFS= read -r searchoutput; do ln -s \$searchoutput $maildir/cur/; done");
 }
 
 sub prompt($$) {
--
2.25.1

_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
Tomi Ollila-2 Tomi Ollila-2
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Make notmuch-mutt script more portable

On Mon, Mar 16 2020, Greg Anders wrote:

> The -D flag to install (used in the Makefile) is GNU-specific and does
> not work on BSD distributions (i.e. macOS). Likewise with the xargs -r
> flag. These changes use portable alternatives to these flags while
> preserving the exact behavior.

Looks more portable to me. +1.

The system and shell pipeline in the search() function has always irritated
me when I've looked it (a bit). At the end of this email is model of
potential replacement code which I just cooked up, which SomeOne(TM)
may implement =D

> ---
>  contrib/notmuch-mutt/Makefile     | 6 +++---
>  contrib/notmuch-mutt/notmuch-mutt | 2 +-
>  2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/contrib/notmuch-mutt/Makefile b/contrib/notmuch-mutt/Makefile
> index 855438be..de933eaa 100644
> --- a/contrib/notmuch-mutt/Makefile
> +++ b/contrib/notmuch-mutt/Makefile
> @@ -15,11 +15,11 @@ README.html: README
>   markdown $< > $@
>  
>  install: all
> - mkdir -p $(DESTDIR)$(prefix)/bin
> + mkdir -p $(DESTDIR)$(prefix)/bin $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(sysconfdir)/Muttrc.d
>   sed "1s|^#!.*|#! $(PERL_ABSOLUTE)|" < $(NAME) > $(DESTDIR)$(prefix)/bin/$(NAME)
>   chmod 755 $(DESTDIR)$(prefix)/bin/$(NAME)
> - install -D -m 644 $(NAME).1 $(DESTDIR)$(mandir)/man1/$(NAME).1
> - install -D -m 644 $(NAME).rc $(DESTDIR)$(sysconfdir)/Muttrc.d/$(NAME).rc
> + install -m 644 $(NAME).1 $(DESTDIR)$(mandir)/man1/
> + install -m 644 $(NAME).rc $(DESTDIR)$(sysconfdir)/Muttrc.d/
>  
>  clean:
>   rm -f notmuch-mutt.1 README.html
> diff --git a/contrib/notmuch-mutt/notmuch-mutt b/contrib/notmuch-mutt/notmuch-mutt
> index 0e46a8c1..d33223bd 100755
> --- a/contrib/notmuch-mutt/notmuch-mutt
> +++ b/contrib/notmuch-mutt/notmuch-mutt
> @@ -50,7 +50,7 @@ sub search($$$) {
>      empty_maildir($maildir);
>      system("notmuch search --output=files $dup_option $query"
>     . " | sed -e 's: :\\\\ :g'"
> -   . " | xargs -r -I searchoutput ln -s searchoutput $maildir/cur/");
> +   . " | while IFS= read -r searchoutput; do ln -s \$searchoutput $maildir/cur/; done");
>  }
>  
>  sub prompt($$) {
> --
> 2.25.1

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

safe to run; "write" code outcommented, example print added.

--8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<--

#!/usr/bin/perl
# -*- mode: cperl; cperl-indent-level: 4 -*-
# $ test-search-code.pl $

use 5.8.1;
use strict;
use warnings;

#$ENV{'PATH'} = '/sbin:/usr/sbin:/bin:/usr/bin';

sub search($$$) {
    my ($maildir, $remove_dups, $query) = @_;

    my @opts;
    push @opts, '--duplicate=1' if $remove_dups;
    push @opts, $query;

    #empty_maildir($maildir);
    open P, '-|', qw/notmuch search --output=files/, @opts or die $!;
    while (<P>) {
        chomp;
        my $f = $_;
        s|.*/||;
        print qq'$f "$maildir/$_" or die \$!;\n';
        #symlink $f "$maildir/$_" or die $!;
    }
    close P;
}

search 'maildir', 0, 'date:1d..';
_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch
David Bremner-2 David Bremner-2
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Make notmuch-mutt script more portable

Tomi Ollila <[hidden email]> writes:

> On Mon, Mar 16 2020, Greg Anders wrote:
>
>> The -D flag to install (used in the Makefile) is GNU-specific and does
>> not work on BSD distributions (i.e. macOS). Likewise with the xargs -r
>> flag. These changes use portable alternatives to these flags while
>> preserving the exact behavior.
>
> Looks more portable to me. +1.
>

pushed,

d
_______________________________________________
notmuch mailing list
[hidden email]
https://notmuchmail.org/mailman/listinfo/notmuch