Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Oct 23 19:27
    albancopja5 starred peachpiecompiler/peachpie
  • Oct 23 09:09
    MrMoeinM starred peachpiecompiler/peachpie
  • Oct 22 19:28
    kripper edited #981
  • Oct 20 16:36
    chenwaichung starred peachpiecompiler/peachpie
  • Oct 20 00:46
    kripper commented #981
  • Oct 20 00:45
    kripper commented #981
  • Oct 19 03:49
    nazrulwazir starred peachpiecompiler/peachpie
  • Oct 17 23:07
    kripper commented #981
  • Oct 17 22:50
    kripper edited #981
  • Oct 17 22:49
    kripper reopened #981
  • Oct 17 22:49
    kripper edited #981
  • Oct 17 22:40
    kripper closed #981
  • Oct 17 22:37
    kripper opened #981
  • Oct 16 20:40
    kripper closed #980
  • Oct 16 20:40
    kripper commented #980
  • Oct 16 17:53
    kripper commented #980
  • Oct 16 17:51
    kripper commented #980
  • Oct 16 17:08
    jakubmisek commented #980
  • Oct 16 16:59
    kripper opened #980
  • Oct 14 23:29
smx
@smx-smx
My intention is to make a PeachPie command line program that uses the classes from the .NET Framework project
smx
@smx-smx
So i tried this
for %f in (*.dll) do snremove -r %f
and now it says, on PeachPie.Runtime: The module was expected to contain an assembly manifest.
smx
@smx-smx
ok i got it working by signing StrongLabors with the peachpie snk
but PeachPie.Library.Graphics.dll shouldn't signature-check its deps
Benjamin Fistein
@bfistein
Good job @smx-smx, you managed to get it done before we even got to respond. We didn't realize there were 3 unsigned libraries. We might have to fork those and sign them ourselves if the authors haven't done so.
smx
@smx-smx
thanks @bfistein :)
i was already working on an msbuild target that fixes the signature on the fly after build :P
yes they are unsigned
ImageSharp is unsigned, so it tries to load dlls that have a null PublicKeyToken
and .NET Framework doesn't allow that if the loading image is signed
so i had to sign ImageSharp and re-sign PeachPie.Library.Graphics in a single run
smx
@smx-smx
so that PeachPie.Library.Graphics gets patched to lookup a signed variant of ImageSharp
Patching the images one at a time didn't work because references weren't properly updated
smx
@smx-smx
made a workaround script
smx
@smx-smx
<?php
$toFix = array(
    "Peachpie.Library.Graphics.dll",
    "SixLabors.Core.dll",
    "SixLabors.ImageSharp.dll"
);

$fixer = "C:\Program Files\BrutalDev\.NET Assembly Strong-Name Signer\StrongNameSigner.Console.exe";

mkdir("tmp");

foreach($toFix as $item){
    copy($item, "tmp/{$item}");
}

$keyFile = escapeshellarg($argv[1]);
system("\"{$fixer}\" -in tmp -k {$keyFile}", $code);
if($code != 0)
    return $code;

foreach($toFix as $item){
    unlink($item);
    copy("tmp/{$item}", $item);
}

shell_exec("rd /s /q tmp");
invoke this from msbuild
  <Target Name="FixSignature" DependsOnTargets="Build" AfterTargets="Build">
    <Exec Command="php &quot;$(ProjectDir)fixer.php&quot; $(ProjectDir)peachpie.snk" WorkingDirectory="$(OutDir)" />
  </Target>
  <ItemGroup>
    <None Remove="fixer.php" />
  </ItemGroup>
hmm forgot that i made a copy of the snk in the outputdir
it should probably be passed as first arg
but w/e, just a temporary hax (P.S. updated the workaround script to do this)
smx
@smx-smx
question: is it possible to get syntax completion in referenced .NET projects? (in PHP land i mean)
at least for methods and types
smx
@smx-smx
also another question: how to do typeof in PHP (i need to get the type of a C# class)
smx
@smx-smx
worked around it with Type::GetType(string)
where string can be Type,ContainingAssembly
L!εsAμεr
@liesauer
i don't recommend write too many c# stuff
L!εsAμεr
@liesauer
u can write a c# util library and interop with it in php
Jakub Míšek
@jakubmisek
@smx-smx there is a NuGet package that does the post-compile signing I think
@smx-smx the code completion would have to be implemented in our VSCode extension (https://marketplace.visualstudio.com/items?itemName=iolevel.peachpie-vscode), and yes it is possible
@smx-smx basically there is no syntax for typeof in PHP. \System\Type::GetType() is the best you can have. In order to make it in compile-time, we would have to introduce our own typeof() function that would be well-known to the compiler, or we can have an extension to PHP's ReflectionClass
Jakub Míšek
@jakubmisek
but FYI :) you can specify CLR attributes in PHP and you can use typeof as the attribute parameter value https://docs.peachpie.io/net/attributes/
Calvin Baart
@calvinbaart
@jakubmisek Finally have some time to go through the issues, I noticed that I'm now getting a compile error though: https://travis-ci.com/calvinbaart/laravel-peachpie-sample/builds/127831082 any hints? Its not really clear whats going wrong here (except for a null-pointer exception)
Calvin Baart
@calvinbaart
I get the same error when compiling Laravel 6.0.3 locally
Jakub Míšek
@jakubmisek
Thanks, nullref exception will be fixed!
Jakub Míšek
@jakubmisek
@calvinbaart nullref is probably fixed, if it's not it would help to see line numbers in the exceptions :)
Calvin Baart
@calvinbaart
Just triggered a new build: https://travis-ci.com/calvinbaart/laravel-peachpie-sample/builds/127975520 Currently at work so can't really debug, how would I enable line numbers for the exceptions?
(I guess using the debug build for the compiler would do that...)
Jakub Míšek
@jakubmisek
thanks, yes the debug build
Calvin Baart
@calvinbaart
Got past the compile stage now (into a crash at runtime, I'll look into that at home)
Jakub Míšek
@jakubmisek
thanks, I see. It's a new one as well right?
Calvin Baart
@calvinbaart
Yea, I removed a few patches though so its probably related to that (Carbon had a patch related to getLastErrors and setLastErrors, so its probably that)
Jakub Míšek
@jakubmisek
maybe, but this one is about expecting an array as argument but getting something else when calling a method inside __construct
thanks, Creator2 seems to be that
Calvin Baart
@calvinbaart
getLastErrors in peachpie has the [return: CastToFalse] attribute, but according to the documentation getLastErrors should always return an array. Maybe thats the problem
Jakub Míšek
@jakubmisek
just found it! you're right. I'll double check but I think even PHP returns FALSE if none of date functions were called yet
Calvin Baart
@calvinbaart
With #535 closed can we now require non-compiled .php files?