From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 4 Mar 2004 01:05:19 +0300 From: "Dmitry V. Levin" To: ALT Devel discussion list Subject: Re: [devel] %__subst changes? Message-ID: <20040303220519.GB3390@nomad.office.altlinux.org> Mail-Followup-To: ALT Devel discussion list References: Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="NMuMz9nt05w80d4+" Content-Disposition: inline In-Reply-To: X-fingerprint: 9658 398D 181B 1200 8FC5 26B8 F6F8 846B C1E2 3429 X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Mar 2004 22:05:19 -0000 Archived-At: List-Archive: List-Post: --NMuMz9nt05w80d4+ Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit Hi, On Wed, Mar 03, 2004 at 07:33:28PM +0200, Maxim Tyurin wrote: > Hi! > Просветите plz какие изменения в subst (sed) произошли? Радикально изменилась версия, с sed-3.02-alt2 на sed-4.0.9-alt1. > Перестал обрабатывать такую конструкцию в спеке: > %__grep -r /etc/ipsec.secrets * \ > | %__awk '{ print $1 }' \ > | %__sed -e 's|:.*$|\1|' \ > | xargs %__subst 's|/etc/ipsec.conf|/etc/super-freeswan/ipsec.conf|'; > > Ругается > + /bin/grep -r /etc/ipsec.secrets BUGS CHANGES CHANGES.AggressiveMode CHANGES.SUPERFS CHANGES.X509 CHANGES.ipsec_alg COPYING CREDITS INSTALL Makefile Makefile.inc Makefile.ver README README.AggressiveMode README.DPD README.NAT-Traversal README.SUPERFS README.ipsec_alg README.selectors README.x509 contrib doc klips lib libcrypto libdes packaging pluto rpm.in testing utils zlib > + gawk '{ print $1 }' > + /bin/sed -e 's|:.*$|\1|' > /bin/sed: -e expression #1, char 10: Invalid reference \1 on `s' command's RHS > ошибка: Неверный код возврата из /home/mrkooll/tmp/rpm-tmp.44577 (%prep) Всё правильно, новый sed не принимает неверное выражение 's|:.*$|\1|' Чтобы использовать \1, нужно что-то выделить с помощью \( и \). > Пока заменил на > %__grep -r /etc/ipsec.secrets * \ > | %__awk '{ print $1 }' \ > | %__sed -e 's|:.*$|\1|' \ > | xargs perl -p -i -e 's|/etc/ipsec.secrets|/etc/freeswan/ipsec.secrets|'; > но это IMHO кривее. И работать всё равно не будет. > Или подкиньте кто мысль как эту конструкцию нормально переписать. Если я правильно понял идею замены, то find -type f -print0 | xargs -r0 %__grep -FZl /etc/ipsec.secrets -- | xargs -r0 %__subst 's|/etc/ipsec.conf|/etc/super-freeswan/ipsec.conf|' -- Похожий пример есть в Sisyphus/doc/alt-packaging/spp.tex -- ldv --NMuMz9nt05w80d4+ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFARlaf9viEa8HiNCkRAv72AJ9QQTRNWtG3iBQ74LgFe4fhurmziQCdFvjc x5PMD7p7iS7/3b8Z3dS+wpk= =IcYZ -----END PGP SIGNATURE----- --NMuMz9nt05w80d4+--