Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 21:35
    crbrz opened #580
  • 17:07

    jakubmisek on master

    timezone db initialization made… (compare)

  • 17:02

    jakubmisek on master

    proper way of using MetadataNam… (compare)

  • 16:16

    jakubmisek on master

    "more" proper use of Name and M… (compare)

  • 16:02

    jakubmisek on master

    resolve generic types in compil… (compare)

  • 14:27
    jakubmisek closed #578
  • 14:27
    jakubmisek commented #578
  • 14:26
    jakubmisek commented #579
  • 14:26

    jakubmisek on master

    Initialize DateTimeZone with an… Fix DateTime ignores timezone Simplified timezone offset regex and 1 more (compare)

  • 14:26
    jakubmisek closed #579
  • 09:25
    Super-Chama starred peachpiecompiler/peachpie
  • 09:09
    crbrz synchronize #579
  • Nov 13 22:48
    crbrz opened #579
  • Nov 13 22:04
    crbrz opened #578
  • Nov 13 19:13

    jakubmisek on master

    datetime parsing fixes date_parse() for empty strings … (compare)

  • Nov 13 18:43

    jakubmisek on master

    updates to DateInterval and Dat… (compare)

  • Nov 13 15:07
    jakubmisek commented #577
  • Nov 13 15:07

    jakubmisek on master

    updates to issues with DateTime… (compare)

  • Nov 13 13:43

    jakubmisek on master

    date functions moved to "date" … (compare)

  • Nov 13 11:15

    jakubmisek on master

    date_create_immutable_from_form… (compare)

smx
@smx-smx
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?
Jakub Míšek
@jakubmisek

@calvinbaart we've changed the getLastError() implementation so it never returns FALSE. Note in PHP it does return FALSE sometimes but it is not documented and I think developers (and frameworks) do not expect it anyway.

The only scenario where it can be used would be if someone would like to check if any of date-parsing function were used already by checking getLastError() is FALSE.

Calvin Baart
@calvinbaart
Great! Just triggered a new build to see if this resolves the issue: https://travis-ci.com/calvinbaart/laravel-peachpie-sample/builds/127997383
Jakub Míšek
@jakubmisek
thanks!