[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Erroneous uses of regex in the invokation of FIND-FILES
From: |
Maxim Cournoyer |
Subject: |
Re: Erroneous uses of regex in the invokation of FIND-FILES |
Date: |
Sat, 21 Sep 2019 04:52:02 +0900 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hello Alex,
Alex Vong <address@hidden> writes:
> [Resending...]
>
> Hello guix,
>
> I find out that there are a lof of erroneous uses of regex in the
> invokation of FIND-FILES. The correct usage should be:
>
> (find-files "." "\\.c$")
>
> Instead people write:
>
> (find-files "." ".*\\.c")
>
> which match unwanted files.
>
> For examples, in the procedure CUSTOM-GCC, the correct regex should be:
>
> "(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)$"
>
> instead of:
>
> ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"
>
> Please correct me if I am wrong.
>
> Right now, the erroneous use of regex in CUSTOM-GCC casues the 'bin/'
> directory of the output of gccgo, gcc-objc and gcc-objc++ to be empty.
I've done the following experiment to validate your findings:
Modified gcc.scm as follows:
--8<---------------cut here---------------start------------->8---
1 file changed, 4 insertions(+), 4 deletions(-)
gnu/packages/gcc.scm | 8 ++++----
modified gnu/packages/gcc.scm
@@ -631,10 +631,10 @@ as the 'native-search-paths' field."
`(modify-phases ,phases
(add-after 'install 'remove-broken-or-conflicting-files
(lambda* (#:key outputs #:allow-other-keys)
- (for-each delete-file
- (find-files (string-append (assoc-ref outputs "out")
"/bin")
-
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
- #t))))))))
+ ;; (for-each delete-file
+ ;; (find-files (string-append (assoc-ref outputs
"out") "/bin")
+ ;;
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
+ #f))))))))
(define %generic-search-paths
;; This is the language-neutral search path for GCC. Entries in $CPATH are
--8<---------------cut here---------------end--------------->8---
Then built it with
--8<---------------cut here---------------start------------->8---
./pre-inst-env guix build -K gcc-objc
--8<---------------cut here---------------start------------->8---
The copied the resulting store item under a writable location; e.g.:
--8<---------------cut here---------------start------------->8---
cp -r /gnu/store/7pmfv7bs9krrjdmfnky2q0i1kdhcvmzj-gcc-objc-8.3.0
/tmp/gccgcc-objc-8.3.0
--8<---------------cut here---------------end--------------->8---
And initialize a git repo in that dir:
--8<---------------cut here---------------start------------->8---
cd /tmp/gccgcc-objc-8.3.0; git init && git add . && git commit -m init
--8<---------------cut here---------------end--------------->8---
Then fired up Guile, and ran the following:
$ guile
> ,use (guix build utils)
> (define old-regexp ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)")
> (define new-regexp "(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)$")
> (for-each delete-file (find-files "./bin" old-regexp))
This resulted in the following files being deleted:
--8<---------------cut here---------------start------------->8---
git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: bin/c++
deleted: bin/cpp
deleted: bin/g++
deleted: bin/gcc
deleted: bin/gcc-ar
deleted: bin/gcc-nm
deleted: bin/gcc-ranlib
deleted: bin/gcov
deleted: bin/gcov-dump
deleted: bin/gcov-tool
deleted: bin/x86_64-unknown-linux-gnu-c++
deleted: bin/x86_64-unknown-linux-gnu-g++
deleted: bin/x86_64-unknown-linux-gnu-gcc
deleted: bin/x86_64-unknown-linux-gnu-gcc-8.3.0
deleted: bin/x86_64-unknown-linux-gnu-gcc-ar
deleted: bin/x86_64-unknown-linux-gnu-gcc-nm
deleted: bin/x86_64-unknown-linux-gnu-gcc-ranlib
no changes added to commit (use "git add" and/or "git commit -a")
--8<---------------cut here---------------end--------------->8---
And the bin directory is empty, as you found:
--8<---------------cut here---------------start------------->8---
ls -al bin/
total 0
drwxr-xr-x 1 mcournoyer users 0 Sep 21 04:31 ./
drwxr-xr-x 1 mcournoyer users 52 Sep 21 04:27 ../
--8<---------------cut here---------------end--------------->8---
Resetting the git repo (git reset --hard), and using the new regexp
instead:
--8<---------------cut here---------------start------------->8---
(for-each delete-file (find-files "./bin" new-regexp))
--8<---------------cut here---------------end--------------->8---
We now obtain:
--8<---------------cut here---------------start------------->8---
git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: bin/c++
deleted: bin/cpp
deleted: bin/g++
deleted: bin/gcc
deleted: bin/gcc-ar
deleted: bin/gcc-nm
deleted: bin/gcc-ranlib
deleted: bin/gcov
deleted: bin/x86_64-unknown-linux-gnu-c++
deleted: bin/x86_64-unknown-linux-gnu-g++
deleted: bin/x86_64-unknown-linux-gnu-gcc
deleted: bin/x86_64-unknown-linux-gnu-gcc-8.3.0
deleted: bin/x86_64-unknown-linux-gnu-gcc-ar
deleted: bin/x86_64-unknown-linux-gnu-gcc-nm
deleted: bin/x86_64-unknown-linux-gnu-gcc-ranlib
no changes added to commit (use "git add" and/or "git commit -a")
--8<---------------cut here---------------end--------------->8---
Which is mostly the same except that gcov-dump and gcov-tool are
preserved:
--8<---------------cut here---------------start------------->8---
ls -al ./bin
total 2292
drwxr-xr-x 1 mcournoyer users 36 Sep 21 04:49 ./
drwxr-xr-x 1 mcournoyer users 52 Sep 21 04:27 ../
-rwxr-xr-x 1 mcournoyer users 1155104 Sep 21 04:46 gcov-dump
-rwxr-xr-x 1 mcournoyer users 1185632 Sep 21 04:46 gcov-tool
--8<---------------cut here---------------end--------------->8---
That doesn't seem right either.
Maxim
- Re: Erroneous uses of regex in the invokation of FIND-FILES,
Maxim Cournoyer <=