IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
This fixes invalid cpio entries for `/dir/.*' constructs.
Consider this:
%install
install -pD /dev/null %buildroot/root/.bashrc
%files
/root/.*
Old behaviour:
$ rpm -qlvp /home/at/RPM/RPMS/athlon/test-1.0-alt1.athlon.rpm
drwxr-xr-x 2 root root 0 Mar 30 01:47 /root/.
drwxr-xr-x 2 root root 0 Mar 30 01:47 /root/..
drwxr-xr-x 2 root root 0 Mar 30 01:47 /root/../root
-rwxr-xr-x 1 root root 0 Mar 29 16:51 /root/../root/.bashrc
-rwxr-xr-x 1 root root 0 Mar 29 16:51 /root/./.bashrc
-rwxr-xr-x 1 root root 0 Mar 29 16:51 /root/.bashrc
$
New behaviour:
$ LD_LIBRARY_PATH=... rpm -bi test.spec
...
Processing files: test-1.0-alt1
error: File path must be canonical: /root/.
error: File path must be canonical: /root/..
RPM build errors:
File path must be canonical: /root/.
File path must be canonical: /root/..
$
The problem here is that glob(3) `dir/.*' globs both '.' and '..'.
It is not clear whether or not glob(3) should glob '.' and '..'.
$ bash -c 'echo /var/empty/.*'
/var/empty/. /var/empty/..
$ ksh -c 'echo /var/empty/.*'
/var/empty/.*
$
/bin/sh dependency is still there, because scriptlets are written
with "!#/bin/sh" first line, and bulk dependency optimization was
removed. However, having RPMSENSE_INTERP flag is still good idea --
maybe rpm can check that RPMSENSE_INTERP file is actually X_OK
or something.
This reverts commit 5224b77cbd.
Changed %update_menus, %clean_menus, %update_wms, %clean_wms,
%update_scrollkeeper, %clean_scrollkeeper macros definitions
to avoid extra autodependencies when used in shell scripts.
- verify-elf: According to information from Kirill Shutemov,
PIE executables on ARM always contain TEXTREL, so do not check them.
- find-package: Removed bulk dependencies optimization
introduced in previous release.
- scripts: Replaced redundant paths to basic programs
with program names.
- implemented automatic dependencies for %%pre, %%preun, %%post,
and %%postun scriptlets (#7409)
- find-package: when possible, keep file-level dependencies as is,
without mapping them to package names
- find-package: relax file-level dependencies on unpackaged directories
- find-package: optimize out bulk dependencies on sh, cat, rm, mv etc.
- build/parseScript.c: optimize out RPMSENSE_INTERP dependencies on /bin/sh
- lib.req: enabled ELF_INTERP dependencies except for standard /lib/ld-linux.so.2
- functions (ValidateBuildRoot): require RPM_BUILD_ROOT path be canonical
It was always illegal to deallocate objects with PyMem_DEL,
but it worked before Python 2.5. Now it just segfaults.
Also, I replace PyObject_NEW with PyObject_New
and "if(ptr) free(ptr)" with "free(ptr)".
Some scripts like lib.req rely on the fact that RPM_BUILD_ROOT
should not end with trailing slashes or something. Other
scripts like find-package explicitly assume that RPM_BUILD_ROOT
can be relocated within filesystem; they use something like
"real_buildroot" variables. The code gets complicated,
fragile, and error-prone.
Therefore, guys, hereby I FORBID non-canonical RPM_BUILD_ROOT path.
Note that RPM_BUILD_ROOT actually does not have to exist.
This is another problem...
When I write e.g. 'Requires(pre): /usr/bin/perl' in specfile,
I get the following flags:
$ perl -le 'printf "%16b\n", 576'
1001000000
$
which is RPMSENSE_PREREQ|RPMSENSE_SCRIPT_PRE.
Before this change, I do not specify what flags were generated
for scriptlet dependencies. After this change, autogenerated
flags for %pre-script are:
$ perl -le 'printf "%16b\n", 16960'
100001001000000
$
which is RPMSENSE_PREREQ|RPMSENSE_SCRIPT_PRE|RPMSENSE_FIND_REQUIRES.
I belive it looks sane now.
PS:
alias rpmdump='perl -MData::Dumper -MRPM::Header -e "print Dumper(RPM::Header->new(@ARGV))"'