Closed disc-kuraudo closed 1 year ago
The PSL1GHT variable IS DESTDIR for psl1ght, so I don't understand the usage of this. Same with PS3DEV, which is the DESTDIR for ps3dev
The PSL1GHT variable is the prefix.
E.g. when set to /opt/ps3dev/psl1ght
, when building it's impossible to write to there as non-root, that's why you shift it to DESTDIR
(e.g. ${PWD}/pkg
-> ${PWD}/pkg/opt/ps3dev/psl1ght
) temporarily in a custom environment to package it, then the package manager takes it from there to install it on any machine into the actual prefix.
https://www.gnu.org/prep/standards/html_node/DESTDIR.html
Many such cases.
If unset, e.g. when invoking the psl1ght script in ps3toolchain, it doesn't change a thing.
@disc-kuraudo What miigotu is saying is that you for example want a "prefix" of /opt/ps3dev/psl1ght
and a "DESTDIR" of /tmp/build/psl1ght/image
, then you can build with $PSL1GHT
set to /tmp/build/psl1ght/image/opt/ps3dev/psl1ght
(or just /tmp/build/psl1ght/image
if you prefer that). After install, your package system can move it to /opt/ps3dev/psl1ght
, /home/disc/psl1ght
or whereever, and it will still work. There is nothing in what is installed that contains the build value of $PSL1GHT
. When you use psl1ght, you set $PSL1GHT
to wherever it is now.
Nope, not working as expected during install:
make PSL1GHT="${pkgdir}${PSL1GHT}" install
[...]
'include/usb' -> '/build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu/include/usb'
'include/usb/usb.h' -> '/build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu/include/usb/usb.h'
Makefile:11: /build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu_rules: No such file or directory
make[2]: *** No rule to make target '/build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu_rules'. Stop.
make[1]: *** [Makefile:18: install] Error 2
make: *** [Makefile:36: install] Error 2
Note: the _rules
were installed as a separate package since make
to build this expects these to be in ${PSL1GHT}
already.
Faking this variable for this purpose makes a mess. Will keep pointing the package to my branch until there is something that works to package this.
@disc-kuraudo You need to have the same value (/build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev
) in $PSL1GHT
for each of the steps make install-ctrl
, make
and make install
. Then it will work. You are not "faking" the variable, you are using it to tell the build process where you want the result, which is the purpose of the variable.
export PSL1GHT="/tmp/opt/psl1ght"
make install-ctrl
make
make install
You can then:
zip /tmp/opt/psl1ght
extract it to /opt/psl1ght
(on another system)
export PSL1GHT="/opt/psl1ght"
make install-ctrl
make
make install
Nope, not working as expected during install:
make PSL1GHT="${pkgdir}${PSL1GHT}" install [...] 'include/usb' -> '/build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu/include/usb' 'include/usb/usb.h' -> '/build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu/include/usb/usb.h' Makefile:11: /build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu_rules: No such file or directory make[2]: *** No rule to make target '/build/ps3-psl1ght/pkg/ps3-psl1ght/opt/ps3dev/ppu_rules'. Stop. make[1]: *** [Makefile:18: install] Error 2 make: *** [Makefile:36: install] Error 2
Note: the
_rules
were installed as a separate package sincemake
to build this expects these to be in${PSL1GHT}
already.Faking this variable for this purpose makes a mess. Will keep pointing the package to my branch until there is something that works to package this.
I think you are expecting the PSL1GHT variable to provide some hardcoded linker path, which is actually set relatively in the whole toolchain. If you build psl1ght in one location, and then completely change the location to the toolchain you just change the value of PSL1GHT to match the new location.
The temporary package directory only exists in the package()
step, anything else would be weird, because you can't even tell what the package directory is as you could split it into several sub-packages from one build()
, as done in e.g. the gcc package.
So building like that in the build()
step won't work as the temporary package directory doesn't exist, that's why I had to resort to a separate -rules
package. After building I would have to invoke make install-ctrl
before make install
with both pointing to the temporary package directory and I'd then need to remove the *_rules
again as they already exist in the -rules
package.
It's all good if you play around with this in your ${HOME}
or with sudo using the scripts, totally unmanaged (unpackaged).
Anyway, I found a workaround to build and package this in one go (w/o a -rules
package) with the upstream Makefile:
PSL1GHT
variable to the root directory during make
for building in build()
for it to find the *_rules
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ps3-psl1ght#n45PS3DEV
and PSL1GHT
variable to "${pkgdir}${PS3DEV}"
and "${pkgdir}${PSL1GHT}"
, respectively, in package()
for make install-ctrl install
https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ps3-psl1ght#n60What a waste of my time. Closing.
I wouldn't say it's a waste of your time, sometimes it just helps to have the people who have been maintaining a project for 10+ years understand exactly what your reasoning is.
You don't necessarily need to reinvoke install-ctrl, as long as you set the paths relative or add a variable in the variable definition of PSL1GHT itself.
Anyway, I hope a minor disagreement or misunderstanding doesn't discourage you from contributing in the future.
For packaging with e.g.
$ make DESTDIR="${pkgdir}" install
as done here: https://aur.archlinux.org/packages/ps3-psl1ght-rules https://aur.archlinux.org/packages/ps3-psl1ghtPractically any Makefile out there supports this.
On a side note: I updated the ps3toolchain to gcc 9.5.0 (PPU/SPU) and binutils 2.40 (PPU) there. Feel free to update the toolchain with my updated patches.