Re: [arch-dev-public] Strange behaviour of pacman

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Thu, Oct 22, 2009 at 4:09 PM, Pierre Chapuis <catwell@xxxxxxxxxxxx> wrote:
> Le Thu, 22 Oct 2009 14:02:53 -0500,
> Aaron Griffin <aaronmgriffin@xxxxxxxxx> a écrit :
>
>> On Thu, Oct 22, 2009 at 1:45 PM, Pierre Chapuis <catwell@xxxxxxxxxxxx> wrote:
>> > On Tue, 20 Oct 2009 09:48:58 +1000,
>> > Allan McRae <allan@xxxxxxxxxxxxx> wrote:
>> >
>> >> Jan de Groot wrote:
>> >> > On Mon, 2009-10-19 at 15:18 -0500, Aaron Griffin wrote:
>> >> >
>> >> >> Are you saying that the .pyo files are no longer architecture
>> >> >> independent? I was under the assumption they were.
>> >> >>
>> >> >
>> >> > Actually, they're even python-version specific. Updating python could
>> >> > break the precompiled .pyo files.
>> >> >
>> >>
>> >> And this whole issue was a fairly major source of headaches during the
>> >> python-2.6 transition...  which is why I started making the python
>> >> packaging policy to deal with them, although that obviously was never
>> >> finished with  (in fact, I had never seen the comment with --optimize=1
>> >> in it).
>> >>
>> >> Now my main concern about all of this is that .pyc and .pyo files used
>> >> to contain full paths to where they were created.  That meant they need
>> >> to be created on the users system and not during the packaging stage.
>> >> I have not confirmed if this is still the case.
>> >>
>> >> So the best way to deal with them seems to be:
>> >> 1) touch them during packaging
>> >> 2) generate them during post_install()
>> >
>> > I have found a way to automate that which is, I believe, not PKGBUILD-dependant.
>> >
>> > Here's what I do in the PKGBUILD:
>> >
>> > [...]
>> > install="pyo_remover.install"
>> > [...]
>> > build() {
>> >  [...]
>> >  # Take care of .pyo files
>> >  cd $pkgdir
>> >  echo "post_install() {" > $startdir/$install
>> >  for _i in  $(find . -name '*.pyo'); do
>> >    echo "rm -f "$(echo "$_i" | cut -c2-) >> $startdir/$install
>> >    echo > "$_i"
>> >  done
>> >  echo -e '}\npost_upgrade() {\npost_install $1\n}\n' >>  $startdir/$install
>> > }
>> >
>> > pyo_remover.install can be anything, even an empty file. For packages that need a .install file this has to be adapted.
>> >
>> > Does this look like a good way to solve the problem?  I know the way I do it for now is kind of ugly, but I think it could be much cleaner if the same kind of thing was done directly by makepkg.
>>
>>
>> Did you mean for this to be post_install? This should be done on
>> remove, if I'm not mistaken, as the pyo files are actually a good
>> thing
>
> No, I meant that to be post_install, because that way:
>
>  - Pacman will track the .pyo files because they are in the package (as empty text files), so they will be deleted on removal.
>
>  - The .pyo files will be deleted after install so I think they will be re-generated at runtime. This means there will always be generated for the right architecture and Python version.
>
> By the way I think you can do the same for .pyc files.

This requires that the program has write access to those files, which
is generally not the case


[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux