Re: [Rpm-maint] [rpm-software-management/rpm] posix.redirect2null deprecated without replacement (Issue #3192)

2024-07-29 Thread Florian Weimer
You could add a Lua table argument with some sort of encoding of the 
`posix_spawn` actions. This way, you could extend things further if new actions 
are added.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/3192#issuecomment-2256182847
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] posix.redirect2null deprecated without replacement (Issue #3192)

2024-07-03 Thread Florian Weimer
**Describe the bug**
Commit 46bd0ed2a9e70f942e7c58f953f30a66d30a5142 added a deprecation warning to 
`posix.redirect2null` and others, pointing to `rpm.execute` as a replacement, 
but `rpm.execute` does not provide a way to suppress output.

**Expected behavior**
There is a way to run a program with its output suppressed.

We'd use this in the Fedora glibc package because we want to suppress the error 
message from `systemctl daemon-reexec` if systemd is not running. Bash is not 
necessarily installed at this point.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/3192
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Add RPM_LD_FLAGS to build environment (PR #2481)

2023-04-13 Thread Florian Weimer
> Ehm, never mind that, this is widely used in Fedora specs. Sigh.

Yeah, I came to post this. It's just 180 packages outside of `%changelog` 
though, so it's not impossible to fix.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/2481#issuecomment-1506498873
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] x86-64-v3, x86-64-v3 detection must take XCR0 into account (Issue #2463)

2023-04-06 Thread Florian Weimer
@Vogtinator SSE is part of the baseline spec for x86-64. For 32-bit i386, this 
was never properly enabled—there isn't a way to check that the SSE context 
switching support has been wired up properly. Obviously, it doesn't matter at 
this point because SSE software support is pervasive.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/2463#issuecomment-1499044773
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] x86-64-v3, x86-64-v3 detection must take XCR0 into account (Issue #2463)

2023-04-03 Thread Florian Weimer
OSXSAVE only indicates that it's safe to use XGETBV, I think. In glibc, we mask 
AVX etc. if XCR0 indicates it's not available:

https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/x86/cpu-features.c;h=978eb29f72550deeb237cc76c5cf78c153f0ffb6;hb=7b3d8558d92a123743699c577704aab4a2f3d949#l115

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/2463#issuecomment-1494311149
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] x86-64-v3, x86-64-v3 detection must take XCR0 into account (Issue #2463)

2023-04-03 Thread Florian Weimer
The current logic is based solely on CPUID. This is not correct because it does 
not verify that the software stack (firmware/hypervisor/kernel) supports YMM 
and ZMM registers. For that, it is necessary to read the XCR0 register using 
the XGETBV instruction.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/2463
You are receiving this because you are subscribed to this thread.

Message ID: ___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] How to get libb to export liba's symbols?

2022-05-10 Thread Florian Weimer
* Neal H. Walfield:

> Hi Florian,
>
> On Tue, 10 May 2022 12:04:52 +0200,
> Florian Weimer wrote:
>> * Neal H. Walfield:
>> 
>> > There are two major constraints.  Because rpm's OpenPGP API is public,
>> > it must be preserved until the next soname bump.  And, the OpenPGP
>> > backend should be pluggable.
>> 
>> How is this plug-in mechanism supposed to work?  Via RPM configuration
>> files?
>
> It is a build-time configuration option.  When you configure rpm, you
> can do:
>
>   ./configure --with-crypto=sequoia
>
> to get the Sequoia backend.  --with-crypto defaults to libgcrypt,
> which uses the internal OpenPGP implementation with libgcrypt.  (There
> is also --with-crypto=openssl, which uses the internal OpenPGP
> implementation with OpenSSL.)

That's a very limited form of pluggability.

I expect the most portable approach (for ELF targets) is to use a stub
shared object that contains all symbols, including those provided by
dependencies.  (librpmio.so should probably be a linker script
referencing the actual object, to prevent accidental loading of
librpmio.so via dlopen.)  That approach keeps the run-time DT_NEEDED
value an implementation detail.

I don't know if libtool supports that out of the box.

On non-ELF targets, you may need forwarder functions, and the plug-in
library cannot use the same symbols.

Thanks,
Florian

___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] How to get libb to export liba's symbols?

2022-05-10 Thread Florian Weimer
* Neal H. Walfield:

> There are two major constraints.  Because rpm's OpenPGP API is public,
> it must be preserved until the next soname bump.  And, the OpenPGP
> backend should be pluggable.

How is this plug-in mechanism supposed to work?  Via RPM configuration
files?

Thanks,
Florian

___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] RFC: Relocate RPM and DNF databases to /usr

2021-12-20 Thread Florian Weimer
* Colin Walters:

> On Wed, Dec 15, 2021, at 5:34 PM, Florian Weimer wrote:
>> * Chris Murphy:
>>
>>> Fedora 36 seems like a good time to do this. What do you think?
>>
>> It's a bit odd to locate a database under /usr that isn't pre-built and
>> installed.  
>
> Why is that odd?

Mentally, I still associate /usr with something that can be mounted
read-only from shared storage.

>> I guess in theory there could be systems with a read-only
>> /usr out there that still allow installation of packages into /opt.
>>
>> Does it really help to improve the snapshot situation? 
>
> Yes.  
>
> I didn't wake up one day and say "hey you know what, today I'm going
> to move the rpm database just for fun".  Neither, for that matter did
> the OpenSUSE folks.  We haven't had this conversation over and over
> throughout the years just because it was some minor thing.
>
> What I *did* wake up one day and say I'm going to do is make upgrades
> transactional and offline by default and hence safe.  No one should
> ever fear starting an operating system upgrade while their laptop is
> at 30% battery.  Administrators running important servers must be able
> to easily roll back when the kernel *or* systemd (or something) else
> regresses, because it's software, it regresses all the time despite
> our best efforts.

I appreciate these efforts.

Although transactional-update (as documented below) seems have one major
regression: transactional RPM updates now require reboots. 8-(

> So yes again, this does matter.  And it matters because whether you're
> doing "image based upgrades" like ostree or just "client side offline
> updates" like the
> https://kubic.opensuse.org/documentation/man-pages/transactional-update.8.html
> thing - it's very important *what data specifically* is
> versioned/snapshotted and what isn't.  On an ostree system for
> example, it's completely normal that there are *two* rpm databases
> (one you're running, one that's pending in the new root).
>
> All the data in the rpmdb is about content that's in `/usr`.

That totally ignores Software Collections and packages from ISVs.  If
the expected future that RPM is going to be an OS-internal software
deployment mechanism (and not be used for third-party software), it
should not be a side effect of this change, but an explicit decision.

Thanks,
Florian

___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] RFC: Relocate RPM and DNF databases to /usr

2021-12-15 Thread Florian Weimer
* Chris Murphy:

> Fedora 36 seems like a good time to do this. What do you think?

It's a bit odd to locate a database under /usr that isn't pre-built and
installed.  I guess in theory there could be systems with a read-only
/usr out there that still allow installation of packages into /opt.

Does it really help to improve the snapshot situation?  What about
software under /opt?  Maybe this needs multiple RPM databases
eventually, roughly aligned along file system boundaries.

Thanks,
Florian

___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] Please provide source package name to dependency generators (#1736)

2021-06-27 Thread Florian Weimer
As far as I can see, `rpmfcApply` in `build/rpmfc.c` overwrites `%name` with 
the subpackage name. It would be nice to be able to pass the current source 
package name to a dependency generator as an argument. This will allow the 
dependency generator not to run for certain source packages (e.g., for the 
package that provides the generator but would otherwise trigger it during its 
own package build).

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/1736___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Run rpath check in parallel (#1714)

2021-06-21 Thread Florian Weimer
@fweimer-rh commented on this pull request.



> @@ -105,6 +104,7 @@ function check_rpath() {
 
 allow_ORIGIN=1
 for j; do
+   lower=$(echo $j | grep -o "$2" | awk '{print tolower($0)}')

I think you can use the `,,` expansion operator here:

```
$ bash -c 'echo ${0,,*}' FOO
foo
```

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/1714#pullrequestreview-688327063___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] check-rpaths-worker script increases build time considerably for some packages (#1713)

2021-06-21 Thread Florian Weimer
Yes, `ET_REL` files can be skipped. If you are changing the file anyway, please 
also add `-W` to the `readelf` invocations, so that the output does not get 
truncated.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/1713#issuecomment-864776521___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] RFE: implement wrapper for posix.fork()+posix.exec() (#389)

2018-02-06 Thread Florian Weimer
It might also be nice to use `posix_spawn`, which can be implemented more 
efficiently that the usual `fork`/`execve` sequence.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/389#issuecomment-363391402___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] %transfiletriggerin doesn't share what's in transaction (#386)

2018-01-29 Thread Florian Weimer
This needs to be gated by an option, in case the command being run doesn't 
expect any data on standard input and exits before completely reading all input.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/issues/386#issuecomment-361314866___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Allow SOURCE_DATE_EPOCH to override file timestamps (#144)

2017-02-08 Thread Florian Weimer
@Conan-Kudo:
> Wouldn't that happen during the package build, rather than at runtime? It 
> seems like that's a package build-time action.

I quoted the wrong part (Github doesn't seem to support automated quoting). I 
was actually referring to this:

> I was thinking that it would be better to do it like Debian and generate 
> those in %post which also reduces the size of rpms and allows it to be noarch

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/144#issuecomment-278350468___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] Allow SOURCE_DATE_EPOCH to override file timestamps (#144)

2017-02-06 Thread Florian Weimer
@bmwiedemann wrote:

> The alternative approach would be to change the macro generating them and 
> first touch source .py files to set their date to $SOURCE_DATE_EPOCH so that 
> this gets embedded in .pyc headers

I doubt that RPM can do this without delayed script execution because the 
bytecode generator is not necessarily installed when the %post runs.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/144#issuecomment-277920680___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [PATCH] Extend %changelog to support full timestamps

2016-10-06 Thread Florian Weimer

On 10/06/2016 09:10 AM, Pavlina Varekova wrote:

Extend %changelog to support full timestamps

The newly accepted date format is

Mon Jan 6 09:02:22 CEST 2016

(like output of "date" command). Original format "Mon Jun 6 2016" is still
supported.


I think it would be better to use ISO 8601 format (perhaps with space 
instead of 'T' as the date/time separator).  The week day information is 
redundant and only causes consistency issues.


Thanks,
Florian
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [PATCH] Remove anti-cheating protection for --short-circuit

2016-02-29 Thread Florian Weimer
This protection is in the way if the --short-circuit -bb is used to
build packages for testing the effects of complex dependency changes
in a spec file.
diff --git a/build/build.c b/build/build.c
index 04b039c..1bcc436 100644
--- a/build/build.c
+++ b/build/build.c
@@ -265,7 +265,7 @@ static rpmRC buildSpec(BTA_t buildArgs, rpmSpec spec, int what)
 		return rc;
 
 	if (((what & RPMBUILD_PACKAGEBINARY) && !test) &&
-	(rc = packageBinaries(spec, cookie, (didBuild == 0
+	(rc = packageBinaries(spec, cookie)))
 		goto exit;
 	
 	if ((what & RPMBUILD_CLEAN) &&
diff --git a/build/pack.c b/build/pack.c
index f9fb3a0..371d5ea 100644
--- a/build/pack.c
+++ b/build/pack.c
@@ -559,7 +559,7 @@ static rpmRC checkPackages(char *pkgcheck)
 return RPMRC_OK;
 }
 
-rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
+rpmRC packageBinaries(rpmSpec spec, const char *cookie)
 {
 rpmRC rc;
 const char *errorString;
@@ -590,10 +590,6 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
 	headerPutBin(pkg->header, RPMTAG_SOURCEPKGID, spec->sourcePkgId,16);
 	}
 
-	if (cheating) {
-	(void) rpmlibNeedsFeature(pkg, "ShortCircuited", "4.9.0-1");
-	}
-	
 	{   char *binFormat = rpmGetPath("%{_rpmfilename}", NULL);
 	char *binRpm, *binDir;
 	binRpm = headerFormat(pkg->header, binFormat, );
diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h
index 7dd577f..18ce1df 100644
--- a/build/rpmbuild_internal.h
+++ b/build/rpmbuild_internal.h
@@ -406,11 +406,10 @@ rpmRC processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags);
  * Generate binary package(s).
  * @param spec		spec file control structure
  * @param cookie	build identifier "cookie" or NULL
- * @param cheating	was build shortcircuited?
  * @return		RPMRC_OK on success
  */
 RPM_GNUC_INTERNAL
-rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating);
+rpmRC packageBinaries(rpmSpec spec, const char *cookie);
 
 /** \ingroup rpmbuild
  * Generate source package.
diff --git a/doc/rpmbuild.8 b/doc/rpmbuild.8
index 1d22913..c2a9d5d 100644
--- a/doc/rpmbuild.8
+++ b/doc/rpmbuild.8
@@ -192,9 +192,8 @@ used standalone, eg. "\fBrpmbuild\fR \fB--rmspec foo.spec\fR").
 \fB--short-circuit\fR
 Skip straight to specified stage (i.e., skip all stages leading
 up to the specified stage).  Only valid with \fB-bc\fR, \fB-bi\fR,
-and \fB-bb\fR.  Useful for local testing only.  Packages built this
-way will be marked with an unsatisfiable dependency to prevent
-their accidental use.
+and \fB-bb\fR.  Packages built this way should only be used for local
+testing, and not for production.
 .TP
 \fB--build-in-place\fR
 Build from locally checked out sources. Sets _builddir to current working
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] Speeding up XZ processing

2014-07-31 Thread Florian Weimer
RPM currently requests SHA-256 hashing from XZ, which is superfluous for 
its main operations due to the RPM-based integrity checks.


Here are some ways to avoid this overhead:

Add an option to liblzma to disable checking on decompression.  I'll ask 
upstream about this.


Fix rpm2cpio and rpm2archive so that payload contents is checked against 
the file hashes in the header during processing.  (This would allow 
adding meaningful signature checking to these tools, too.)


When writing RPMs, specify LZMA_CHECK_NONE.  Set the PAYLOADFLAGS tag to 
2 check=none (or something similar).  Update applydeltarpm so that it 
specifies LZMA_CHECK_NONE if PAYLOADFLAGS has this value.


To measure the speed improvement during installation, you can use xzcat 
and xz -2 --check=none to recompress the payload (after detaching it 
from the header).


In my experiments, about 30% the time related to decompression is spent 
in SHA-256 hashing.  The win for compression is obviously smaller 
because compression itself takes more time.


--
Florian Weimer / Red Hat Product Security
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] RPM 4.12.0 alpha released

2014-06-29 Thread Florian Weimer

On 06/27/2014 04:41 PM, Panu Matilainen wrote:


- Support for files over 4GB in packages


Is the new payload format documented somewhere?  It seems to use the FX 
index in a pseudo-cpio header instead of duplicating the data from the 
header, but it would be nice to to see this spelled out explicitly.


--
Florian Weimer / Red Hat Product Security
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint