Support ARMv6 (original Raspberry Pi), ARMv7 bugfixes #901

Merged
merged 1 commit into from Jan 30, 2016

Conversation

Projects
None yet
5 participants
@hpux735
Contributor

hpux735 commented Jan 7, 2016

this pull request adds support for ARMv6 (including the original Raspberry pi), and fixes several bugs encountered on ARMv7. I've been using this code for a few weeks, and is has been rather stable. My hope is that AMRv6 and ARMv7 on linux can be included in the Swift 2.2 release.

@jrose-apple

This comment has been minimized.

Show comment
Hide comment
@jrose-apple

jrose-apple Jan 7, 2016

Member

I'm not really the right person to review (just trying to get past the easy stuff), but what tests currently are and aren't passing?

Member

jrose-apple commented Jan 7, 2016

I'm not really the right person to review (just trying to get past the easy stuff), but what tests currently are and aren't passing?

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 7, 2016

Contributor

ARMv7 test results:


Testing Time: 754.18s


Failing Tests (28):
Swift :: 1_stdlib/ArrayCore.swift
Swift :: 1_stdlib/Interval.swift
Swift :: 1_stdlib/Optional.swift
Swift :: 1_stdlib/Range.swift
Swift :: 1_stdlib/Reflection.swift
Swift :: 1_stdlib/VarArgs.swift
Swift :: ClangModules/autolinking.swift
Swift :: DebugInfo/ASTSection_ObjC.swift
Swift :: DebugInfo/variables.swift
Swift :: Driver/Dependencies/one-way-external.swift
Swift :: Driver/subcommands.swift
Swift :: IRGen/c_layout.sil
Swift :: Interpreter/archetype_casts.swift
Swift :: Interpreter/formal_access.swift
Swift :: Interpreter/generic_class.swift
Swift :: Interpreter/generic_struct.swift
Swift :: Interpreter/protocol_extensions.swift
Swift :: Interpreter/protocol_lookup.swift
Swift :: Interpreter/slices.swift
Swift :: Interpreter/testability.swift
Swift :: Misc/expression_too_complex.swift
Swift :: Parse/BOM.swift
Swift :: Prototypes/CollectionsMoveIndices.swift
Swift :: Prototypes/FloatingPoint.swift
Swift :: Prototypes/MutableIndexableDict.swift
Swift :: Prototypes/TextFormatting.swift
Swift :: Serialization/autolinking.swift
Swift-Unit :: runtime/SwiftRuntimeTests/MetadataTest.getExistentialMetadata

Expected Passes : 1611
Expected Failures : 78
Unsupported Tests : 639
Unexpected Failures: 28

Contributor

hpux735 commented Jan 7, 2016

ARMv7 test results:


Testing Time: 754.18s


Failing Tests (28):
Swift :: 1_stdlib/ArrayCore.swift
Swift :: 1_stdlib/Interval.swift
Swift :: 1_stdlib/Optional.swift
Swift :: 1_stdlib/Range.swift
Swift :: 1_stdlib/Reflection.swift
Swift :: 1_stdlib/VarArgs.swift
Swift :: ClangModules/autolinking.swift
Swift :: DebugInfo/ASTSection_ObjC.swift
Swift :: DebugInfo/variables.swift
Swift :: Driver/Dependencies/one-way-external.swift
Swift :: Driver/subcommands.swift
Swift :: IRGen/c_layout.sil
Swift :: Interpreter/archetype_casts.swift
Swift :: Interpreter/formal_access.swift
Swift :: Interpreter/generic_class.swift
Swift :: Interpreter/generic_struct.swift
Swift :: Interpreter/protocol_extensions.swift
Swift :: Interpreter/protocol_lookup.swift
Swift :: Interpreter/slices.swift
Swift :: Interpreter/testability.swift
Swift :: Misc/expression_too_complex.swift
Swift :: Parse/BOM.swift
Swift :: Prototypes/CollectionsMoveIndices.swift
Swift :: Prototypes/FloatingPoint.swift
Swift :: Prototypes/MutableIndexableDict.swift
Swift :: Prototypes/TextFormatting.swift
Swift :: Serialization/autolinking.swift
Swift-Unit :: runtime/SwiftRuntimeTests/MetadataTest.getExistentialMetadata

Expected Passes : 1611
Expected Failures : 78
Unsupported Tests : 639
Unexpected Failures: 28

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 8, 2016

Contributor

ARMv6 results:


Testing Time: 7199.76s


Failing Tests (30):
Swift :: 1_stdlib/ArrayCore.swift
Swift :: 1_stdlib/FloatingPointIR.swift
Swift :: 1_stdlib/Interval.swift
Swift :: 1_stdlib/Optional.swift
Swift :: 1_stdlib/Range.swift
Swift :: 1_stdlib/Reflection.swift
Swift :: 1_stdlib/VarArgs.swift
Swift :: ClangModules/autolinking.swift
Swift :: DebugInfo/ASTSection_ObjC.swift
Swift :: DebugInfo/variables.swift
Swift :: Driver/Dependencies/one-way-external.swift
Swift :: Driver/subcommands.swift
Swift :: IRGen/c_layout.sil
Swift :: IRGen/multithread_module.swift
Swift :: Interpreter/archetype_casts.swift
Swift :: Interpreter/formal_access.swift
Swift :: Interpreter/generic_class.swift
Swift :: Interpreter/generic_struct.swift
Swift :: Interpreter/protocol_extensions.swift
Swift :: Interpreter/protocol_lookup.swift
Swift :: Interpreter/slices.swift
Swift :: Interpreter/testability.swift
Swift :: Misc/expression_too_complex.swift
Swift :: Parse/BOM.swift
Swift :: Prototypes/CollectionsMoveIndices.swift
Swift :: Prototypes/FloatingPoint.swift
Swift :: Prototypes/MutableIndexableDict.swift
Swift :: Prototypes/TextFormatting.swift
Swift :: Serialization/autolinking.swift
Swift-Unit :: runtime/SwiftRuntimeTests/MetadataTest.getExistentialMetadata

Expected Passes : 1609
Expected Failures : 78
Unsupported Tests : 639
Unexpected Failures: 30

Contributor

hpux735 commented Jan 8, 2016

ARMv6 results:


Testing Time: 7199.76s


Failing Tests (30):
Swift :: 1_stdlib/ArrayCore.swift
Swift :: 1_stdlib/FloatingPointIR.swift
Swift :: 1_stdlib/Interval.swift
Swift :: 1_stdlib/Optional.swift
Swift :: 1_stdlib/Range.swift
Swift :: 1_stdlib/Reflection.swift
Swift :: 1_stdlib/VarArgs.swift
Swift :: ClangModules/autolinking.swift
Swift :: DebugInfo/ASTSection_ObjC.swift
Swift :: DebugInfo/variables.swift
Swift :: Driver/Dependencies/one-way-external.swift
Swift :: Driver/subcommands.swift
Swift :: IRGen/c_layout.sil
Swift :: IRGen/multithread_module.swift
Swift :: Interpreter/archetype_casts.swift
Swift :: Interpreter/formal_access.swift
Swift :: Interpreter/generic_class.swift
Swift :: Interpreter/generic_struct.swift
Swift :: Interpreter/protocol_extensions.swift
Swift :: Interpreter/protocol_lookup.swift
Swift :: Interpreter/slices.swift
Swift :: Interpreter/testability.swift
Swift :: Misc/expression_too_complex.swift
Swift :: Parse/BOM.swift
Swift :: Prototypes/CollectionsMoveIndices.swift
Swift :: Prototypes/FloatingPoint.swift
Swift :: Prototypes/MutableIndexableDict.swift
Swift :: Prototypes/TextFormatting.swift
Swift :: Serialization/autolinking.swift
Swift-Unit :: runtime/SwiftRuntimeTests/MetadataTest.getExistentialMetadata

Expected Passes : 1609
Expected Failures : 78
Unsupported Tests : 639
Unexpected Failures: 30

@gribozavr

View changes

cmake/modules/AddSwift.cmake
@@ -159,7 +159,7 @@ function(_add_variant_link_flags
result)
if("${sdk}" STREQUAL "LINUX")
- list(APPEND result "-lpthread" "-ldl")
+ list(APPEND result "-lpthread" "-ldl" "-Wl,-Bsymbolic")

This comment has been minimized.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

-Bsymbolic seems to be a big hammer (and it might be just a workaround for what is an LLVM or a linker bug). Could you scope it as narrowly as possible, just to armv6?

@gribozavr

gribozavr Jan 8, 2016

Collaborator

-Bsymbolic seems to be a big hammer (and it might be just a workaround for what is an LLVM or a linker bug). Could you scope it as narrowly as possible, just to armv6?

This comment has been minimized.

@hpux735

hpux735 Jan 8, 2016

Contributor

Yes, it is. After 2.2 is forked, I'm going to work with @tienex on a different (probably better) solution based upon the gold linker. I'll restrict this to arm-linux.

@hpux735

hpux735 Jan 8, 2016

Contributor

Yes, it is. After 2.2 is forked, I'm going to work with @tienex on a different (probably better) solution based upon the gold linker. I'll restrict this to arm-linux.

@gribozavr

View changes

lib/Driver/ToolChains.cpp
@@ -1047,6 +1047,9 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
break;
case LinkKind::DynamicLibrary:
Arguments.push_back("-shared");
+ if (getTriple().getArch() == llvm::Triple::ArchType::arm) {
+ Arguments.push_back("-Wl,-Bsymbolic");

This comment has been minimized.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

Same here.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

Same here.

This comment has been minimized.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

And, this change needs a test (test/Driver directory).

@gribozavr

gribozavr Jan 8, 2016

Collaborator

And, this change needs a test (test/Driver directory).

This comment has been minimized.

@hpux735

hpux735 Jan 8, 2016

Contributor

Do you have a good reference for how to write these tests, I looked, but I couldn't find any good docs.

@hpux735

hpux735 Jan 8, 2016

Contributor

Do you have a good reference for how to write these tests, I looked, but I couldn't find any good docs.

This comment has been minimized.

@hpux735

hpux735 Jan 9, 2016

Contributor

I'm hesitant to add a test for this as once 2.2 is released my plan is to transition to the gold linker for arm-linux, which not only will not require -Bsymbolic, it will expect other options. Given that, as per my comment below re. early bail from linker.swift, these test aren't executed anyway, it makes sense to me to hold off until those other changes are made.

@hpux735

hpux735 Jan 9, 2016

Contributor

I'm hesitant to add a test for this as once 2.2 is released my plan is to transition to the gold linker for arm-linux, which not only will not require -Bsymbolic, it will expect other options. Given that, as per my comment below re. early bail from linker.swift, these test aren't executed anyway, it makes sense to me to hold off until those other changes are made.

@gribozavr

View changes

test/Driver/linker.swift
+// LINUX-armv6-DAG: -lswiftCore
+// LINUX-armv6-DAG: -L [[STDLIB_PATH:[^ ]+/lib/swift]]
+// LINUX-armv6-DAG: -Xlinker -rpath -Xlinker [[STDLIB_PATH]]
+// LINUX-armv6-DAG: -Xlinker -T /{{[^ ]+}}/linux/armv7/swift.ld

This comment has been minimized.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

Why does the line say armv7 in the path?

@gribozavr

gribozavr Jan 8, 2016

Collaborator

Why does the line say armv7 in the path?

@@ -1082,6 +1085,8 @@ toolchains::GenericUnix::constructInvocation(const LinkJobAction &job,
Arguments.push_back("-L");
Arguments.push_back(context.Args.MakeArgString(RuntimeLibPath));
+ Arguments.push_back(context.Args.MakeArgString("--target=" + getTriple().str()));

This comment has been minimized.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

This change needs a driver test, too.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

This change needs a driver test, too.

@gribozavr

View changes

lib/Driver/Driver.cpp
+ triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v7) {
+ triple.setArchName("armv7");
+ }
+ if (triple.getArch() == llvm::Triple::arm &&

This comment has been minimized.

@gribozavr

gribozavr Jan 8, 2016

Collaborator

LLVM code style does not prescribe aligning equal signs here. Could you remove the extra whitespace?

@gribozavr

gribozavr Jan 8, 2016

Collaborator

LLVM code style does not prescribe aligning equal signs here. Could you remove the extra whitespace?

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 8, 2016

Collaborator

@hpux735 The general approach is to run %target-swiftc_driver -### and add appropriate options that you would expect to trigger this behavior. The driver in -### will print the command line, but not execute it. I think in this case the changes you made will affect the linker options, so the tests should go into test/Driver/linker.swift -- or you might just need to add a few extra CHECK lines.

Collaborator

gribozavr commented Jan 8, 2016

@hpux735 The general approach is to run %target-swiftc_driver -### and add appropriate options that you would expect to trigger this behavior. The driver in -### will print the command line, but not execute it. I think in this case the changes you made will affect the linker options, so the tests should go into test/Driver/linker.swift -- or you might just need to add a few extra CHECK lines.

@hpux735

View changes

test/Driver/linker.swift
+// LINUX-armv6-DAG: [[OBJECTFILE]]
+// LINUX-armv6-DAG: -lswiftCore
+// LINUX-armv6-DAG: -L [[STDLIB_PATH:[^ ]+/lib/swift]]
+// LINUX-armv6-DAG: --target=junk-unknown-linux-gnueabihf

This comment has been minimized.

@hpux735

hpux735 Jan 9, 2016

Contributor

While attempting to add testing for whether --target is added to the clang++ invocation, this seems like the correct approach. However, this does not cause a failure as expected.

@hpux735

hpux735 Jan 9, 2016

Contributor

While attempting to add testing for whether --target is added to the clang++ invocation, this seems like the correct approach. However, this does not cause a failure as expected.

This comment has been minimized.

@hpux735

hpux735 Jan 9, 2016

Contributor

When lit is running a test on a file with more than one test (such as linker.swift), it looks like it bails when it finds the first failure, right? I deleted the tests relating to macos and the relative linker and verified that the tests for providing --target to clang functions as intended.

@hpux735

hpux735 Jan 9, 2016

Contributor

When lit is running a test on a file with more than one test (such as linker.swift), it looks like it bails when it finds the first failure, right? I deleted the tests relating to macos and the relative linker and verified that the tests for providing --target to clang functions as intended.

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 23, 2016

Contributor

I'm almost done with a patch that will do away with the swift.ld linker script, but in the spirit of small changes, can we get this moved forward so I can open up a new PR? In your opinion (@gribozavr )? what are the remaining issues that need to be addressed?

Thanks!!

Contributor

hpux735 commented Jan 23, 2016

I'm almost done with a patch that will do away with the swift.ld linker script, but in the spirit of small changes, can we get this moved forward so I can open up a new PR? In your opinion (@gribozavr )? what are the remaining issues that need to be addressed?

Thanks!!

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 25, 2016

Collaborator

Sure! Could you rebase the patch? (there are conflicts)

It also seems that @jckarter added -Wl,-Bsymbolic to the build anyway.

Collaborator

gribozavr commented Jan 25, 2016

Sure! Could you rebase the patch? (there are conflicts)

It also seems that @jckarter added -Wl,-Bsymbolic to the build anyway.

lib/Driver/Driver.cpp
+ triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6) {
+ triple.setArchName("armv6");
+ }
+ }

This comment has been minimized.

@modocache

modocache Jan 25, 2016

Collaborator

nit-pick: Perhaps combine some of these conditionals, and use else if? For example:

if (triple.getOS() == llvm::Triple::Linux && triple.getArch() == llvm::Triple::arm) {
  if (triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v7) {
    triple.setArchName("armv7");
  } else if (triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6) {
    triple.setArchName("armv6");
  }
}

Personally I find this more readable, but that's just my two cents. 😄

@modocache

modocache Jan 25, 2016

Collaborator

nit-pick: Perhaps combine some of these conditionals, and use else if? For example:

if (triple.getOS() == llvm::Triple::Linux && triple.getArch() == llvm::Triple::arm) {
  if (triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v7) {
    triple.setArchName("armv7");
  } else if (triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6) {
    triple.setArchName("armv6");
  }
}

Personally I find this more readable, but that's just my two cents. 😄

This comment has been minimized.

@hpux735

hpux735 Jan 25, 2016

Contributor

Totally agree.

@hpux735

hpux735 Jan 25, 2016

Contributor

Totally agree.

+ getTriple().getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v6) {
+ Arguments.push_back("-Wl,-Bsymbolic");
+ }
+ }

This comment has been minimized.

@modocache

modocache Jan 25, 2016

Collaborator

Another nit-pick: Above in lib/Driver/Driver.cpp you check for triple.getArch() == llvm::Triple::arm before checking whether getSubArch() is equal to ARMSubArch_v7 or ARMSubArch_v6. Is the check for arm redundant in lib/Driver/Driver.cpp? If not, should it be added here? I think either is fine, as long as the checks are consistent.

@modocache

modocache Jan 25, 2016

Collaborator

Another nit-pick: Above in lib/Driver/Driver.cpp you check for triple.getArch() == llvm::Triple::arm before checking whether getSubArch() is equal to ARMSubArch_v7 or ARMSubArch_v6. Is the check for arm redundant in lib/Driver/Driver.cpp? If not, should it be added here? I think either is fine, as long as the checks are consistent.

This comment has been minimized.

@hpux735

hpux735 Jan 25, 2016

Contributor

Good find. I'll check the llvm sources again and make sure that that getArch can only be arm when those subarch's are set then remove the redundant check for it.

@hpux735

hpux735 Jan 25, 2016

Contributor

Good find. I'll check the llvm sources again and make sure that that getArch can only be arm when those subarch's are set then remove the redundant check for it.

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 27, 2016

Contributor

I has conflicts with apple/master and resulting regressions. I'm working on resolving them at the moment.

Contributor

hpux735 commented Jan 27, 2016

I has conflicts with apple/master and resulting regressions. I'm working on resolving them at the moment.

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 29, 2016

Contributor

I believe that all the regression issues have been resolved. I think this is ready to go, finally.

Contributor

hpux735 commented Jan 29, 2016

I believe that all the regression issues have been resolved. I think this is ready to go, finally.

@modocache

This comment has been minimized.

Show comment
Hide comment
@modocache

modocache Jan 29, 2016

Collaborator

@hpux735 Fantastic! Are all tests passing? If not, could you post a list of which aren't? I'd like to help if possible.

Also, I have a feeling someone on the core team will ask you to squash these commits--or at least rebase onto master, to get rid of intermediate commits like these:

screen shot 2016-01-29 at 9 12 56 am

But I'm not sure, so don't take my word for it. 😛

Collaborator

modocache commented Jan 29, 2016

@hpux735 Fantastic! Are all tests passing? If not, could you post a list of which aren't? I'd like to help if possible.

Also, I have a feeling someone on the core team will ask you to squash these commits--or at least rebase onto master, to get rid of intermediate commits like these:

screen shot 2016-01-29 at 9 12 56 am

But I'm not sure, so don't take my word for it. 😛

+// LINUX-armv6-DAG: [[OBJECTFILE]]
+// LINUX-armv6-DAG: -lswiftCore
+// LINUX-armv6-DAG: -L [[STDLIB_PATH:[^ ]+/lib/swift]]
+// LINUX-armv6-DAG: --target=armv6-unknown-linux-gnueabihf

This comment has been minimized.

@hpux735

hpux735 Jan 29, 2016

Contributor

Here's the test you asked for, @gribozavr

@hpux735

hpux735 Jan 29, 2016

Contributor

Here's the test you asked for, @gribozavr

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 29, 2016

Collaborator

@swift-ci Please test

Collaborator

gribozavr commented Jan 29, 2016

@swift-ci Please test

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 29, 2016

Collaborator

@hpux735 Sorry, this failed on OS X:

TEST 'Swift :: Driver/linker.swift' FAILED
swift/test/Driver/linker.swift:135:17: error: expected string not found in input
// LINUX-armv6: swift
                ^
<stdin>:4:1: note: scanning from here

Do you have access to an OS X machine to investigate?

Collaborator

gribozavr commented Jan 29, 2016

@hpux735 Sorry, this failed on OS X:

TEST 'Swift :: Driver/linker.swift' FAILED
swift/test/Driver/linker.swift:135:17: error: expected string not found in input
// LINUX-armv6: swift
                ^
<stdin>:4:1: note: scanning from here

Do you have access to an OS X machine to investigate?

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 29, 2016

Contributor

Sorry about that! I just fixed an issue and ran it on my OSX machine. I think it will pass this time, it did for me.

Contributor

hpux735 commented Jan 29, 2016

Sorry about that! I just fixed an issue and ran it on my OSX machine. I think it will pass this time, it did for me.

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 29, 2016

Collaborator

@swift-ci Please test

Collaborator

gribozavr commented Jan 29, 2016

@swift-ci Please test

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 29, 2016

Contributor

Is there a list of machines/platforms used for CI and the arguments used? I definitely don't want to waste people's time with these problems, if it can be avoided. I just tried it again on my mac and the tests completed without error.

Contributor

hpux735 commented Jan 29, 2016

Is there a list of machines/platforms used for CI and the arguments used? I definitely don't want to waste people's time with these problems, if it can be avoided. I just tried it again on my mac and the tests completed without error.

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 30, 2016

Collaborator

@hpux735 It failed because of infrastructure reasons. Linux passed, we don't know about OS X. We'll get it fixed and I will re-run.

Collaborator

gribozavr commented Jan 30, 2016

@hpux735 It failed because of infrastructure reasons. Linux passed, we don't know about OS X. We'll get it fixed and I will re-run.

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 30, 2016

Collaborator

@swift-ci Please test

Collaborator

gribozavr commented Jan 30, 2016

@swift-ci Please test

@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 30, 2016

Collaborator

It failed with:

Failing Tests (1):
    Swift :: IDE/crashers_fixed/019-swift-vardecl-emitlettovarnoteifsimple.swift

which I fixed.

Collaborator

gribozavr commented Jan 30, 2016

It failed with:

Failing Tests (1):
    Swift :: IDE/crashers_fixed/019-swift-vardecl-emitlettovarnoteifsimple.swift

which I fixed.

gribozavr added a commit that referenced this pull request Jan 30, 2016

Merge pull request #901 from hpux735/master
Support ARMv6 (original Raspberry Pi), ARMv7 bugfixes

@gribozavr gribozavr merged commit b51bc1c into apple:master Jan 30, 2016

0 of 2 checks passed

swift-PR-all Build #19 failed in 1 hr 13 min
Details
Swift Test All Platform Build finished. 0 tests run, 0 skipped, 0 failed.
Details
@gribozavr

This comment has been minimized.

Show comment
Hide comment
@gribozavr

gribozavr Jan 30, 2016

Collaborator

@hpux735 Thank you for working on the Linux arm port!

Collaborator

gribozavr commented Jan 30, 2016

@hpux735 Thank you for working on the Linux arm port!

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Jan 30, 2016

Contributor

Awesome!!! Thanks so much Dmitri!

Contributor

hpux735 commented Jan 30, 2016

Awesome!!! Thanks so much Dmitri!

@MacMeDan

This comment has been minimized.

Show comment
Hide comment
@MacMeDan

MacMeDan Feb 1, 2016

@hpux735 you are my hero.

MacMeDan commented Feb 1, 2016

@hpux735 you are my hero.

@hpux735

This comment has been minimized.

Show comment
Hide comment
@hpux735

hpux735 Feb 1, 2016

Contributor

LOL, Glad I could help, @peterdan

Contributor

hpux735 commented Feb 1, 2016

LOL, Glad I could help, @peterdan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment