--- Log opened Sat Feb 25 00:00:16 2017 | ||
--- Log closed Sat Feb 25 00:14:27 2017 | ||
--- Log opened Sat Feb 25 00:14:34 2017 | ||
-!- Irssi: #openrisc: Total of 50 nicks [0 ops, 0 halfops, 0 voices, 50 normal] | 00:14 | |
-!- Irssi: Join to #openrisc was synced in 23 secs | 00:14 | |
shorne | psychotrope: I dont know of any random hardware on openrisc socs. But linux provides this 'drivers/char/random.c' | 01:04 |
---|---|---|
shorne | you can read about linux /dev/random | 01:04 |
psychotrope | okay thanks | 01:05 |
shorne | I am sure you could easily make one though, you can read about fpga/hdml random number generators | 01:06 |
shorne | i.e. forcing metastable state | 01:07 |
shorne | or, attach some kind of sensors | 01:07 |
psychotrope | or I could just dump good randoms into /dev/random | 01:07 |
psychotrope | yeah | 01:07 |
psychotrope | I have an old lava lamp project I could dust off and use for randoms | 01:08 |
shorne | well /dev/random works off of a bunch of ransom events from all over the kernel like keypresses etc | 01:08 |
shorne | so just hidding the keyboard would help add entropy | 01:09 |
psychotrope | and btw: thanks to everyone on #openrisc. people here have been really nice in helping noobs (like me) get started with openRISC | 01:09 |
psychotrope | yeah, but looking at lavalamps is more sexy | 01:09 |
shorne | it matters who is touching my keyboard ;) | 01:09 |
psychotrope | indeed | 01:10 |
shorne | olofk: stekern_: btw all our patched got merged upstream | 01:21 |
shorne | (for linux) | 01:22 |
shorne | I didn't honor most of Jonas's request let me know if you think any were things you were concerned with | 01:23 |
psychotrope | in https://github.com/openrisc/tutorials/blob/master/README.md#tutorials, what is the differnece between "building it here" and "downloading the prebuilt library" | 01:30 |
psychotrope | I think 2 or 3 steps off a "make *****-download" and a "make *****-build" | 01:31 |
psychotrope | curious what the difference was | 01:31 |
huanyu | I am playing with the virtio net via virtio MMIO with upstream QEMU with linux kernel with some minor change in the kernel and QEMU. I am able to get the virtio-net up and running. I am able to access the internet (wget file from ubuntu.com) but the problem is that starts to fail after few downloads and it behaves like a io stall. I did some search on the IRC, blueCmd has similar issue with QEMU virtio back in 2014-07-25. I am wonder | 01:45 |
huanyu | ing if anyone have a solution or found the cause of the problem. | 01:45 |
psychotrope | I have or1ksim running, how do I compile programs and run them from linux in this case? | 02:08 |
shorne | psychotrope: do you have a kernel built? | 02:25 |
psychotrope | shorne: I think so | 02:26 |
psychotrope | I followed the tutorial above and ran or1k-sim -f or1ksim.cfg ../vmlinux | 02:26 |
shorne | huanyu: are you running openrisc? I was having an issue with just doing ping localhost, it hung after about the 3rd ping. It didnt happen on any other emulators | 02:26 |
psychotrope | from the directory where I put all the tools ofc | 02:27 |
shorne | huanyu: but when I hit any key it returns, maybe stdout flush issue | 02:27 |
shorne | psychotrope: what happens when you run? | 02:27 |
psychotrope | it runs, and I get linux booting in an xterm window | 02:27 |
psychotrope | what I want to know, is how to get programs into that VM and compile / run them | 02:28 |
psychotrope | my quick pass of the documentation isn't shedding much light on the subject | 02:28 |
shorne | ok, what do you have set for CONFIG_INITRAMFS_SOURCE? | 02:28 |
psychotrope | I want to run under linux, not bare metal ofc | 02:28 |
shorne | probably something like CONFIG_INITRAMFS_SOURCE="../openrisc/openrisc_os/initramfs ../openrisc/openrisc_os/initramfs.devnodes" ??? | 02:29 |
psychotrope | um, how would I check *noob questions* | 02:29 |
shorne | Linux stores its config in '<linux>/.config' file | 02:29 |
shorne | also in 'make menuconfig' you can type '/' and then search | 02:30 |
psychotrope | so I should check from the VM I have booted I assume? | 02:30 |
shorne | check in your kernel source folder | 02:30 |
psychotrope | all I have is vmlinux from the tutorial instructions | 02:31 |
shorne | ok, well in order to put your own software in the image you will need to build the kernel | 02:31 |
shorne | (unless you have harddrive emulation and your vmlinux image supports it). I never did try that before | 02:32 |
psychotrope | I have already downloaded: https://github.com/openrisc/linux | 02:32 |
psychotrope | into the folder "linux" | 02:32 |
shorne | ok, do you have a toolchain? | 02:32 |
psychotrope | I think so | 02:32 |
shorne | do you have any binary called or1k-*-gcc? | 02:33 |
psychotrope | let me check | 02:33 |
psychotrope | where would I find it most likely? | 02:34 |
shorne | well, have you just been following the tutorial? | 02:35 |
psychotrope | my "toolchains" driectory from the tutorial I mentioned above only has the folder ork1k-elf within it | 02:35 |
psychotrope | yep | 02:35 |
psychotrope | this is what I was using: https://github.com/openrisc/tutorials/blob/master/README.md#tutorials | 02:35 |
shorne | well, you asked the questions about those commands | 02:35 |
shorne | https://github.com/openrisc/tutorials/blob/master/Makefile | 02:35 |
shorne | Do you know how to read makefiles? | 02:36 |
shorne | You can see the difference in the makefile | 02:36 |
shorne | if not... maybe we should explain a bit more clearly in the tutorial | 02:36 |
shorne | or1ksim-build - that will download the source from git and build | 02:36 |
psychotrope | no, I got a bit lost there | 02:36 |
psychotrope | this is all alot of new territory for me | 02:37 |
psychotrope | I defaulted to "make *-download in every case" | 02:37 |
shorne | or1ksim-download - that will just download the binary (i.e. executables) | 02:37 |
shorne | ok | 02:37 |
psychotrope | so should I should run make *-build instead ? | 02:38 |
shorne | well tutorials/or1k-elf/bin should have your gcc | 02:38 |
shorne | do you know what gcc is? | 02:38 |
psychotrope | yes | 02:38 |
psychotrope | there we go | 02:38 |
psychotrope | just one directory away | 02:38 |
shorne | no... binaries should be good enough as long as you dont have a problem | 02:38 |
shorne | How good are you with the command line in unix/bash? | 02:39 |
psychotrope | so make *-download downloads binaries while *-build downloads and builds from source | 02:39 |
shorne | yes | 02:39 |
psychotrope | if I'm not misreadin the makefile | 02:39 |
psychotrope | silly me | 02:39 |
psychotrope | I'd say I'm pretty good with bash | 02:40 |
psychotrope | I'm probably overthinking this | 02:40 |
psychotrope | okay now that I have or1k-elf-gcc I can compile the software I want | 02:40 |
shorne | well, if you want to find a toolchain binary that you downloaded it should be 'or1k- <tab>' | 02:40 |
psychotrope | now the question would be, how do I bundle that with the kernel I want to boot | 02:41 |
psychotrope | I want to compile a 3rd-party binary and run it from the or1ksim linux VM | 02:41 |
shorne | We can get to that, but first you should know where your toolchain is and it needs to be in your path | 02:42 |
psychotrope | from the project folder I have made, in /tutorials/toolchains/ork1k-elf/bin I'm seeing or1k-elf-gcc and a bunch of other stuff | 02:43 |
shorne | Also, for linux programs you would need MUSL to build them (read about them in recent release notes here http://openrisc.io/2017/02/18/gccreleaseandbins) | 02:43 |
shorne | ok is that in your PATH env variable too? | 02:43 |
psychotrope | let me check | 02:44 |
psychotrope | it would seem that user/tutorials/tools/or1ksim/bin is in my path enviroment variable | 02:45 |
psychotrope | so I should be good ther | 02:46 |
shorne | right, its puth there by environment.sh (you must have run that) you will have to run again if you login again | 02:47 |
huanyu | shorne: I am running openrisc qemu (qemu-system-or1k), upstream commit id: ad584d37f2a86b392c25f3f00cc1f1532676c2d1. | 02:47 |
psychotrope | shorne: yeah I noticed that | 02:47 |
psychotrope | shorne: had to log out of my SSH session so I ran . enviroment.sh from my project directory once I logged back in | 02:48 |
huanyu | shorne: ping was never a issue for me. Only when I try to downloading a file from the net | 02:48 |
shorne | huanyu: sorry , never had the issue yet. which kernel do you run? | 02:50 |
shorne | huanyu: I didnt think the mainline had a driver for the qemu net device | 02:51 |
shorne | huanyu: or are you running user mode? | 02:51 |
shorne | psychotrope: ok, so then go into the linux directory | 02:51 |
shorne | psychotrope: run 'make defconfig' | 02:51 |
psychotrope | shorne: okay | 02:51 |
psychotrope | thanks | 02:51 |
psychotrope | okay it finished | 02:52 |
psychotrope | "config written to .config" | 02:52 |
shorne | ok then 'make menuconfig' | 02:52 |
huanyu | shorne: i am using the openrisc/linux | 02:52 |
huanyu | shorne: I am using the virtio-net with virtio-mmio | 02:53 |
psychotrope | woah, an interactive menu | 02:53 |
huanyu | shorne: I am nto running the user mode | 02:53 |
psychotrope | fancy | 02:53 |
psychotrope | where should I start? | 02:53 |
shorne | huanyu: ok, understood, sorry as I said I didnt ever use the network in qemu, maybe wait for another answer? or ping others. Sorry I dont have time to look at now | 02:54 |
huanyu | shorne: Thanks for you help. | 02:54 |
shorne | Ill probably look into networking drivers on openrisc in a weeks | 02:54 |
shorne | I am planning to push the opencores ethernet driver upstream | 02:55 |
huanyu | shorne: :_) | 02:55 |
huanyu | shorne: :-) | 02:55 |
shorne | huanyu: but was working on SMP first, maybe networking driver is more important? | 02:55 |
shorne | but you are using the virtio maybe that a different driver, what is your qemu command line? | 02:56 |
shorne | and are you running a custom devicetree? | 02:56 |
huanyu | shorne: tbh, i am not sure either. netowrking is usefull for play around | 02:57 |
shorne | psychotrope: now from there you can setup some things | 02:57 |
shorne | but first you need '<esc>' and save | 02:57 |
psychotrope | so from the menu hit esc then tab over to save? | 02:58 |
huanyu | shorne: my qemu command- qemu-system-or1k -cpu or1200 -M or1k-sim -m 128 -netdev user,id=network1 -device virtio-net-device,netdev=network1 -serial mon:stdio -kernel vmlinux-initramfs-qemuopenrisc.bin -tftp img | 02:58 |
shorne | psychotrope: I forgot one thing, you need to do 'make ARCH=openrisc defconfig' | 02:58 |
shorne | yes, form menu just save or exit we need to redo | 02:58 |
huanyu | shorne: I am using a custom devicetree | 02:58 |
huanyu | shorne: which adds a virtio-mmio node | 02:59 |
psychotrope | shorne: okay I exited the menu with esc esc, I'll run make ARCH=openrisc defconfig before I do anything else | 02:59 |
shorne | huanyu: oh, cool so you dont need a special driver | 02:59 |
psychotrope | shorne: done | 02:59 |
shorne | huanyu: have your tried with mainline kernel? | 02:59 |
huanyu | shorne: there is a driver in the kernel already. but I think the QEMU virtio-mmio device modeling has some endianness issue | 03:00 |
huanyu | shorne: I have not test the mainline kernel yet | 03:00 |
shorne | psychotrope: then you can try 'make ARCH=openrisc menuconfig' | 03:01 |
psychotrope | okay I ran that, and am getting a differnet menu page | 03:01 |
shorne | then in the menu "General Setup", change the first compiler option to 'or1k-elf-' | 03:02 |
psychotrope | what exactly have I done so far BTW in the linux folder? | 03:02 |
shorne | psychotrope: this is the openrisc options, before you were on the x86 kernel config options | 03:02 |
psychotrope | I see | 03:02 |
shorne | for openrisc you need to cross compile | 03:02 |
shorne | huanyu: do you think the endianess issue might be with qemu itself? | 03:03 |
psychotrope | shorne: I'm not seeing any compiler options off bat | 03:03 |
huanyu | shorne: I believe so. I think it should be fixed in QEMU | 03:04 |
psychotrope | but there is alot to look athrough in the general setup menu | 03:04 |
shorne | huanyu: you mentioned minor change to get networking to work, that a qemu patch? | 03:04 |
shorne | psychotrope: what do you see on the first line ? | 03:04 |
psychotrope | oh | 03:04 |
psychotrope | yeah.... | 03:04 |
shorne | huanyu: and you are a qemu developer? | 03:04 |
psychotrope | sorry D: | 03:04 |
huanyu | shorne: that was kernel driver hacking for endianness swap. I am currently looking the QEMU and trying make it aware of the endianness | 03:05 |
psychotrope | okay I set the cross compiler tool prefix to or1k-elf-, so it should be using the righ toolchain now | 03:05 |
psychotrope | *right | 03:06 |
huanyu | shorne: unfortunately i am not a qemu developer | 03:06 |
shorne | psychotrope: so thats for telling the kernel to user commands like or1k-elf-gcc when compiling or other thing | 03:06 |
psychotrope | shorne: I figured as much | 03:06 |
psychotrope | I'm too dumb to realize that the first thing on tht list was interactive lol | 03:07 |
shorne | huanyu: well, ok I cant help now, maybe if you send a patch to the list and ask questions others will know | 03:07 |
psychotrope | I thought that was just a header or something | 03:07 |
psychotrope | silly me | 03:07 |
shorne | ok next... | 03:07 |
huanyu | shorne: sounds good, thanks for the help | 03:07 |
shorne | psychotrope: what does 'Initramfs source file()' say? | 03:07 |
shorne | its down a bit more? | 03:07 |
psychotrope | let me check | 03:08 |
psychotrope | string value under Initramfs source file(s) is /openrisc/support/initramfs arch/openrisc/support/initramfs.devnodes | 03:08 |
shorne | psychotrope: ok, thats what you want | 03:09 |
psychotrope | good | 03:09 |
shorne | now exit and save | 03:09 |
psychotrope | I assume save then exit | 03:10 |
psychotrope | saving to .config, correct? | 03:10 |
shorne | haha, yet | 03:10 |
shorne | yes | 03:10 |
psychotrope | okay I saved it to .config | 03:10 |
psychotrope | then exited | 03:10 |
shorne | now just type 'make ARCH=openrisc' | 03:11 |
psychotrope | I'm back on the command line in the linux folder | 03:11 |
psychotrope | errors... | 03:11 |
psychotrope | bin/sh: 1: bc: not found | 03:11 |
psychotrope | Kbuild:66: recipe for target 'include/generated/timeconst.h' failed | 03:11 |
psychotrope | make[1]: *** [include/generated/timeconst.h] Error 127 | 03:11 |
psychotrope | Makefile:986: recipe for target 'prepare0' failed | 03:11 |
psychotrope | make: *** [prepare0] Error 2 | 03:11 |
shorne | you have to install bc on your machine | 03:12 |
psychotrope | okay | 03:12 |
psychotrope | what does bd do? | 03:12 |
psychotrope | *bc | 03:12 |
shorne | binary calc I think | 03:12 |
psychotrope | okay I've got it installing | 03:12 |
shorne | its just something used in the build scripts | 03:12 |
psychotrope | thanks a billion for the help here, I've never compiled linux before from source and this would have taken me days to figure out | 03:13 |
psychotrope | okay its working along | 03:13 |
shorne | psychotrope: it probably will not, but you need to know a bit about make | 03:13 |
shorne | and then read the docs | 03:14 |
shorne | google ' compile kernel ' | 03:14 |
shorne | probably you dont even need to say linux | 03:14 |
shorne | and you will get a bunch of docs | 03:14 |
shorne | how many cores on your machine? | 03:15 |
psychotrope | its flipping out over unsigned ints but its continuing to compile | 03:15 |
psychotrope | I assume I shouldn't be concerned | 03:15 |
psychotrope | shorne: 4 | 03:15 |
shorne | yeah, the unsigned ints is a problem with newlib I think | 03:15 |
psychotrope | its old core 2 quad machine I made from scraps | 03:15 |
psychotrope | old PCs people were trying to get rid of lol | 03:16 |
shorne | alright, well you can do ctrl-c | 03:16 |
shorne | and 'make -j5 ARCH=openrisc' | 03:16 |
psychotrope | what does j5 fix? | 03:16 |
shorne | -j5 schedules 5 separate build jobs | 03:16 |
shorne | well, something like that | 03:16 |
shorne | do you get to use all your cores when compiling | 03:16 |
psychotrope | okay I aborted and I'm now running with -j5 | 03:17 |
psychotrope | much faster | 03:17 |
shorne | and we dont have to wait | 03:17 |
psychotrope | done | 03:17 |
psychotrope | that was fast | 03:17 |
shorne | ok... now you have your vmlinux in the directory | 03:17 |
psychotrope | I have a vmlinux now in that folder | 03:17 |
psychotrope | sweet :) | 03:17 |
shorne | right... so build works | 03:17 |
shorne | now how to get binaries? | 03:17 |
psychotrope | what about them | 03:18 |
psychotrope | I may have mentioned I wanted to use GPG on openrisc before, I have the binaries downloaded, but I'll need to read up on compiling GPG first | 03:18 |
shorne | just build your other programs and the up them under 'openrisc/support/initramfs' directory | 03:18 |
psychotrope | ? | 03:18 |
shorne | look in directory 'openrisc/support/initramfs' | 03:19 |
psychotrope | where would that be? | 03:19 |
shorne | in your current (linux) directory | 03:19 |
shorne | that has your root filesystem for you linux image | 03:19 |
psychotrope | i have no openrisc directory... | 03:20 |
shorne | oh.. I mean arch/openrisc/... | 03:20 |
psychotrope | in the linux folder | 03:20 |
psychotrope | okay | 03:20 |
psychotrope | so put my binaries in there and run make -j5 ARCH=openrisc again? | 03:21 |
shorne | so you can see things like... bin, etc, usr, var ? | 03:21 |
psychotrope | yeah | 03:21 |
shorne | when you build your binaries you can puth them there, and build linux again | 03:21 |
shorne | and your can them boot the vmlinux to run a emulator with your binaries | 03:22 |
shorne | (typos) | 03:22 |
shorne | soo. next you need to build gpg | 03:23 |
psychotrope | okay, and in that case, how would I take something massive like GPG, boil it down to one source with all the libraries included so I could put it in that folder as one source file? | 03:23 |
psychotrope | yeah... | 03:23 |
psychotrope | here is where going the scripting route rather than C is going to bite me in the ass | 03:23 |
psychotrope | I'm new to that as well | 03:23 |
shorne | well, you need another toochain read this: http://openrisc.io/2017/02/18/gccreleaseandbins | 03:24 |
shorne | You really need to have a good understanding of c, libc, linker, make , configure (autotools) to understand what you are doing when you want to cross compile something like gpg into a static binary | 03:25 |
shorne | psychotrope: do you have any digital design background? | 03:26 |
psychotrope | no D: | 03:26 |
psychotrope | well as in? | 03:26 |
psychotrope | probably no if I don't know | 03:26 |
psychotrope | I mess around with linux only as a hobby | 03:26 |
shorne | as in, flipflops, state machines | 03:26 |
psychotrope | a bit, but not much | 03:26 |
psychotrope | I think the fartherest I ever got was making a full adder | 03:27 |
shorne | ok, well thats good | 03:27 |
psychotrope | I don't remember if I ever got it to work | 03:27 |
psychotrope | so take note of that part | 03:27 |
shorne | I am just thinking of the full stack, and what you need to know to do this (embedded soc + software) on your own | 03:28 |
shorne | on hardware side | 03:28 |
psychotrope | well, I'm happy to try to learn | 03:29 |
shorne | [digital design: flip flops, state machine, adder etc ][hardare description language: VHDL, Verilog] | 03:29 |
psychotrope | I figure I now have some idea of how to compile linux for openrisc, and I can probably figure out how to get it onto my DE0 nano once I can save up and buy one | 03:30 |
psychotrope | since there are so many openrisc tutorials for the DE0 nano | 03:30 |
shorne | but then on top of that [system on chip: Busses, memory mapped io, interconnects, spi] | 03:30 |
shorne | If you want to modify any of the hardware you would need to know a bit about those | 03:31 |
psychotrope | shorne: I have worked with the SPI protocol when I played around with an 8-bit SPI LCD, and I have some *super* basic verilog knowledge | 03:31 |
shorne | psychotrope: thats good | 03:31 |
psychotrope | shorne: for now though, with the DE0-nano, how far can I get with FuseSOC | 03:31 |
psychotrope | the only thing I see missing in most of the DE0-nano setups I see are some form of storage controller | 03:32 |
shorne | with fusesoc you can get up and running and load your fpga with the openrisc CPU | 03:32 |
psychotrope | for the project I want to do I need someway to read / write keys and messages to work with in GPG | 03:32 |
psychotrope | but I'm super new to this stuff | 03:33 |
shorne | but then you need to run another program [openOCD] to connect to the DE0-nano via the jtag/debug interface and upload your kernel/software | 03:33 |
shorne | anyway, you can do this | 03:33 |
psychotrope | thats one thing I always wondered about, how can I run the DE0-nano without another PC to load from JTAG | 03:33 |
psychotrope | thanks :D | 03:33 |
psychotrope | I want this to be an independent system if I can | 03:34 |
shorne | psychotrope: well as said before by someone else, de0 nano start up is loads a bitstream from flash | 03:35 |
shorne | you will need to push the openriscsoc in there | 03:35 |
psychotrope | so it should be easy to put it in that same flash | 03:35 |
psychotrope | linux alongside the bitstream | 03:35 |
psychotrope | I see | 03:35 |
psychotrope | I just wondered if that would be a considerable challenge or not | 03:36 |
shorne | yeah, I think, I havent tried, I found a doc online about how to do it | 03:36 |
shorne | I think you can search, the kernel is about 3mb | 03:37 |
psychotrope | again I'm very new to this (I'm a high school student and do all my experimenting in my free time, so no formal training) | 03:37 |
psychotrope | but I'm happy to learn | 03:37 |
psychotrope | yeah the kernel I just compiled was 12mb | 03:38 |
shorne | was it 12? ok maybe no compression | 03:39 |
shorne | but I am not sure how bit gpg will be | 03:39 |
psychotrope | let me check | 03:40 |
psychotrope | its not small... | 03:40 |
shorne | ok, now go into the gpg source directory | 03:40 |
shorne | well, what are you checking? | 03:40 |
psychotrope | yeah let me check | 03:40 |
psychotrope | this is just the source I downloaded, I don't think it includes all the libraries I need | 03:40 |
psychotrope | I think its around a few mb | 03:41 |
psychotrope | 4.3mb compressed | 03:42 |
psychotrope | .tar.bz2 | 03:42 |
psychotrope | uncompressed I'd have to do some math; of course ls -lh lists everything inside the directory | 03:42 |
psychotrope | sorry I misread your message, I was checking how big the gnupg folder I downloaded was | 03:43 |
psychotrope | get a ballpark maximum for what I could be trying to put into ROM | 03:43 |
psychotrope | it can't be any bigger than that compiled I assume | 03:44 |
shorne | probably not, yes you just have source | 03:44 |
shorne | when compiled it will not be nearly as large | 03:45 |
psychotrope | yeah I would hope not | 03:45 |
shorne | but you also may need several libraries | 03:45 |
psychotrope | considering all the comments and notes / scripts in the source folder | 03:45 |
psychotrope | yeah | 03:45 |
shorne | so extract the tarball | 03:45 |
psychotrope | right now I'm trying to track down something with the vmlinux kernel I compiled earlier | 03:45 |
psychotrope | give me a second | 03:46 |
psychotrope | I moved vmlinux out of the linux folder into my project folder with mv vmlinux .. | 03:46 |
psychotrope | before from the or1ksim folder within my project folder I was using or1k-sim -f or1ksim.cfg ../vmlinux to run the simulation | 03:47 |
psychotrope | by moving vmlinux out of the linux folder into the project folder, did I just overwrite the vmlinux I was using before? | 03:47 |
psychotrope | *noob questions* | 03:48 |
shorne | probably | 03:50 |
psychotrope | oh well | 03:50 |
shorne | but it would have been the same as the one you built | 03:50 |
psychotrope | yeah | 03:50 |
shorne | you can always download it again too | 03:50 |
psychotrope | it was made 00:20 this morning so that must be it | 03:51 |
psychotrope | it boots using or1ksim, so it works for me | 03:51 |
psychotrope | anyway, back to gpg... | 03:51 |
psychotrope | I extracted everything already | 03:51 |
shorne | go into the folder what do you see? | 03:51 |
psychotrope | a bunch of stuff | 03:51 |
psychotrope | 2 makefiles | 03:52 |
psychotrope | well, just a ton of stuff | 03:52 |
psychotrope | ABOUT-NLS agent autogen.sh common configure.ac doc include kbx Makefile.am po scd tests tools | 03:52 |
psychotrope | acinclude.m4 am ChangeLog config.h.in COPYING g10 INSTALL keyserver Makefile.in README scripts THANKS VERSION | 03:52 |
psychotrope | aclocal.m4 AUTHORS ChangeLog-2011 configure COPYING.LIB gl jnlib m4 NEWS README.GIT sm TODO | 03:52 |
psychotrope | thats the output from ls | 03:52 |
shorne | so the file 'configure.ac' means its and autoconf managed project | 03:55 |
shorne | (very fundamental build tool for unix c projects) | 03:55 |
psychotrope | what does that mean in this case? | 03:55 |
psychotrope | I'm happy to go look it up and come back | 03:55 |
shorne | you dont need to care about it as a use | 03:55 |
shorne | as a user it doesnt matter | 03:56 |
shorne | it generated 'configure' | 03:56 |
shorne | The maintainer will generate that before they create the tarball for us' | 03:56 |
shorne | Also you see the Makefile.am... thats the automake makefile | 03:57 |
shorne | (automake is another essential tool) | 03:57 |
psychotrope | I see ./configure and make in alot in projects, whats the simplest breakdown of what those do? | 03:57 |
psychotrope | so makefile.am is automake, what about makefile.in? | 03:58 |
shorne | these together allow c programs to be portable (compile on any cpu architecture, compile for any os) | 03:58 |
shorne | makefile.am generates makefile.in | 03:58 |
shorne | makefile.in is generated same time as configure | 03:58 |
shorne | makefile.in is a "template" to make your make file | 03:59 |
psychotrope | why is this all pre generated in a source folder? | 03:59 |
shorne | so you can configure your build | 03:59 |
shorne | ... you can probably look this up on youtube or something | 03:59 |
shorne | anyway... | 03:59 |
psychotrope | if makefile.in is generated by makefile.am, why include makefile.in at all? | 04:00 |
psychotrope | okay, I can look this up later | 04:00 |
shorne | when you run ./configure (dont run) its just a shell script, it will figure out what you have on your system (do you have gcc? or something else?) (are you on linux) | 04:00 |
shorne | Then it will do a find and replace on makefile.in to output your mail file | 04:01 |
shorne | it will do that on all the *.in (input files) to generate your build | 04:01 |
shorne | ... output your makefile (for running make) | 04:01 |
psychotrope | I see | 04:02 |
shorne | anyway... you want to run './configure --target=or1k-linux-musl-' | 04:02 |
psychotrope | okay, I'll give that a shot | 04:03 |
psychotrope | *prepared for errors* | 04:03 |
shorne | by default ./configure by itself thinks you want to make your binary (executable) for x86, so you need target to tell you want openrisc | 04:03 |
shorne | I expect errors | 04:03 |
psychotrope | missing libraries | 04:03 |
psychotrope | to be expected | 04:03 |
shorne | because you do not have the 'linux' toolchain | 04:03 |
shorne | or libs | 04:04 |
psychotrope | I believe it needs libgcrypt according to the docs | 04:04 |
shorne | what does the error say? | 04:04 |
psychotrope | configure: error: | 04:04 |
psychotrope | *** | 04:04 |
psychotrope | *** Required libraries not found. Please consult the above messages | 04:04 |
psychotrope | *** and install them before running configure again. | 04:04 |
psychotrope | *** | 04:04 |
psychotrope | in short | 04:04 |
shorne | consule above messages | 04:04 |
shorne | what above? | 04:04 |
psychotrope | it mentions libgcrypt, libassuan, libgpg-error, libksba missing | 04:05 |
psychotrope | and gives FTP links to get them from | 04:05 |
psychotrope | looks like I better get to work with wget | 04:06 |
psychotrope | the question is, for the C noob like me, where do I put all these libraries once I download them so the compiler can find them | 04:06 |
psychotrope | also wants me to apt-get install libpth-dev | 04:07 |
psychotrope | for GNU portable threads library | 04:07 |
shorne | well, you cant do apt-get for those because that will download x86 binaries | 04:09 |
psychotrope | yeah.. | 04:09 |
psychotrope | I get an FTP link to | 04:09 |
shorne | you want source | 04:09 |
psychotrope | so I'll use that | 04:09 |
psychotrope | the question is, where do I put all that | 04:10 |
shorne | yeah, so get all those tar.bz2 / tar.xz 's downloaded | 04:10 |
psychotrope | okay | 04:10 |
psychotrope | should I do that in another folder> | 04:10 |
psychotrope | *? | 04:10 |
shorne | well another thing you will want to do with ./configure is setup a path | 04:10 |
shorne | i.e. | 04:10 |
shorne | I mean prefix | 04:11 |
shorne | so something like ./configure --target=or1k=linux-musl- --prefix=$HOME/openrisc/linux-root | 04:12 |
shorne | then you would run make && make install | 04:12 |
shorne | and install will put them into there | 04:12 |
psychotrope | so where should I put all these libraries exactly? | 04:13 |
shorne | Then when you build a library that depends on something you already installed, you need to tell it where to look | 04:13 |
psychotrope | maybe I'm missing the point entirely here... | 04:13 |
psychotrope | I made another folder for now outside of the GPG folder where I'm putting all these things I'm downloading | 04:14 |
psychotrope | *sigh* the ftp links are broken | 04:15 |
psychotrope | well, the GPG ones are | 04:15 |
shorne | you can search google the should be there | 04:15 |
psychotrope | yep | 04:15 |
psychotrope | thats what I'm doing | 04:15 |
psychotrope | give me a bit to track these down | 04:16 |
shorne | well where to put it is up to you | 04:16 |
psychotrope | thanks again for helping me out so much | 04:16 |
shorne | something like ~/work/tarballs | 04:16 |
shorne | then extract them to ~/work/pgp-openrisc | 04:16 |
shorne | or do it all under ~/work/openrisc | 04:16 |
psychotrope | I have massive folder that includes stuff for the project along with openRISC | 04:17 |
psychotrope | then I have a folder folder called "tutorials" with all my openRISC stuff | 04:18 |
psychotrope | and a folder GPG with the extracted GPG source | 04:18 |
shorne | But after you start to compile the binies you will need to link them together. You need to understand things like CFLAGS and LDFLAGS (which are used during build) to tell the compile and linker where to find your libraries. | 04:18 |
psychotrope | I made another folder in that massive general project folder for the libraries I'm downloading | 04:18 |
shorne | maybe there are better wayts to do it | 04:18 |
psychotrope | I'm just working through the list of downloads right now | 04:19 |
shorne | maybe get one to compile.. then go to bed :) | 04:22 |
shorne | also read this page.. http://openrisc.io/2017/02/18/gccreleaseandbins | 04:23 |
psychotrope | its friday, why go to sleep :P | 04:23 |
psychotrope | okay, I'll take a look | 04:23 |
shorne | ah... you are still in high school | 04:23 |
psychotrope | yeah... | 04:23 |
shorne | nice, I cant do that anymore | 04:23 |
shorne | wife and kids need me to make breakfast! | 04:23 |
psychotrope | last one.... | 04:26 |
psychotrope | okay I have all the tarballs | 04:26 |
psychotrope | I'll extract to another folder | 04:27 |
psychotrope | now if only school was this much fun... lol | 04:28 |
shorne | ok, extract them along side your gpg one | 04:32 |
shorne | i.e. tar -xf <file>.tar.x -C ../openrisc | 04:32 |
psychotrope | so go ahead and put the library folders in with the GPG folder? | 04:32 |
psychotrope | they all have different tar extensions so I still have one left to untar | 04:33 |
psychotrope | too bad I don't have dtrx on this box | 04:33 |
psychotrope | okay | 04:34 |
shorne | ok... well not in the GPG folder | 04:35 |
shorne | but just next to it | 04:35 |
psychotrope | I have everything extracted into a folder, but it isn't the GPG folder | 04:35 |
shorne | i.e. openrisc/gpg-xx | 04:35 |
psychotrope | okay what I've done fits the bill | 04:35 |
shorne | openrisc/libcrypt | 04:35 |
shorne | ok | 04:35 |
shorne | also... what about the openrisc.io page I linked you to? | 04:35 |
shorne | did you see anything there? | 04:35 |
psychotrope | didn't get a chance to take a look yet | 04:36 |
psychotrope | give me a second... | 04:36 |
psychotrope | okay so musl is the toolchain I want to be working with here | 04:37 |
psychotrope | it seems | 04:37 |
shorne | yes | 04:37 |
shorne | so you will need to download that | 04:37 |
shorne | luckily I created binaries | 04:37 |
shorne | there is a link there | 04:37 |
psychotrope | don't I already have that from the tutorial instructions? | 04:38 |
psychotrope | I assume not | 04:38 |
psychotrope | gcc-or1k-musl-5.4.0-20170218.patch? | 04:38 |
shorne | I think they just gave you newlib | 04:38 |
shorne | get the .tar.xz file | 04:38 |
psychotrope | okay | 04:38 |
psychotrope | where should I put that? | 04:39 |
psychotrope | I'll put it in the project folder | 04:39 |
psychotrope | okay I've extracted or1k-linux-musl | 04:41 |
psychotrope | why can't I just use the gcc from the toolchain I used to build the kernel? | 04:42 |
shorne | Because of linux | 04:44 |
psychotrope | okay, I'll take your word for it | 04:44 |
psychotrope | ofc | 04:44 |
shorne | The one you used for the kernel is for running straight on the CPU | 04:44 |
shorne | You want to run gpg on top of linux | 04:45 |
psychotrope | so its like running baremetal rather than under linux | 04:45 |
psychotrope | I see | 04:45 |
shorne | linux runs on the cpu | 04:45 |
shorne | directly | 04:45 |
psychotrope | yeah ofc | 04:45 |
psychotrope | so that other compiler used newlib, this used musl? | 04:45 |
shorne | anway, you should learn a bit about system calls and what linux does | 04:45 |
psychotrope | *uses | 04:46 |
shorne | yeah, so in c there is this thing called libc | 04:46 |
shorne | it allows programs to call functions like open(), close(), read() etc | 04:46 |
psychotrope | I think its just me being tired and jumping to stupid conclusions | 04:46 |
shorne | If you run a c program on newlib and run read() it may go directly to the hardware | 04:47 |
psychotrope | so I assume newlib does memory stuff that is otherwise handled by the kernel | 04:48 |
shorne | If you are on musl, and run read(), musl knows how to talk to Linux so linux will do the hardware read (via the right driver etc) | 04:48 |
psychotrope | I see | 04:48 |
shorne | yeah, same with things like malloc () "give me some memory" | 04:48 |
shorne | so you need musl | 04:48 |
psychotrope | okay, I have it downlaoded an extracted | 04:49 |
shorne | but you have it installed | 04:49 |
shorne | you need to add to your PATH | 04:49 |
psychotrope | how do I add musl to my path? | 04:49 |
shorne | not sure where you put it but 'export PATH=$PATH:<location of musl>/bin' | 04:49 |
shorne | that way when you run 'or1k-linux-musl-gcc' it will find it | 04:50 |
shorne | do you know what PATH is? | 04:50 |
psychotrope | roughly | 04:50 |
psychotrope | I come from a scripting background in most of my other projects, so the low-level C workflow is new to me | 04:51 |
shorne | http://www.linfo.org/path_env_var.html | 04:51 |
shorne | Well, PATH is basic scripting | 04:51 |
shorne | most basic scripting possible | 04:51 |
shorne | :) | 04:51 |
shorne | even on windows | 04:51 |
psychotrope | well, I never needed it with bash or python | 04:51 |
psychotrope | then again | 04:51 |
shorne | hmm, I would need it with bash or pythong | 04:52 |
psychotrope | I haven't done much besides script programs that I've already installled | 04:52 |
shorne | well, then how do you run the script? | 04:52 |
psychotrope | chmod and ./ | 04:52 |
psychotrope | very simple stuff | 04:52 |
shorne | you always type out... ./path/to/my/script/do-something-cool.sh | 04:52 |
shorne | thats not being lazy | 04:53 |
psychotrope | well generally its in a folder | 04:53 |
psychotrope | or I'll but it in some bin folder | 04:53 |
shorne | lazy programmers will do | 04:53 |
shorne | export PATH=$PATH:$HOME/path/to/my/scripts | 04:53 |
shorne | then just type 'do-something-cool.sh' | 04:53 |
psychotrope | hmm, so it makes it callable system-wide | 04:54 |
psychotrope | damn | 04:54 |
psychotrope | that is actually super helpful | 04:54 |
shorne | it makes it callable to your current shell | 04:54 |
psychotrope | I guess I don't know what I don't know | 04:54 |
psychotrope | well yeah | 04:54 |
shorne | to get it remembered every time you login you add to your '.bash_profile' | 04:55 |
psychotrope | but dang, I've been using linux for 3 years and never heard or use that other than blindly plugging it in to install something | 04:55 |
shorne | buy a linux book, that should be first chapter | 04:55 |
shorne | if its not buy another book :) | 04:55 |
shorne | environment variables, and setting up your profile | 04:56 |
shorne | very useful | 04:56 |
psychotrope | sounds like it | 04:57 |
psychotrope | meanwhile my mouse just died | 04:58 |
psychotrope | thats not helpful | 04:58 |
psychotrope | okay, back to musl | 04:59 |
psychotrope | I;ll go read up on path real quick | 04:59 |
psychotrope | so for export PATH=$PATH:<location of musl>/bin, should direction of musl be the folder or something within it? | 05:00 |
psychotrope | *location | 05:00 |
shorne | well, which folder under your extracted musl folder has or1k-linux-musl-gcc? | 05:03 |
psychotrope | its under bin | 05:05 |
shorne | yeah, so you need to put the full path in PATH, not relative path | 05:05 |
shorne | you can use $PWD | 05:05 |
shorne | thats the current working directory | 05:05 |
psychotrope | so $pwd/or1k-linux-gcc? | 05:06 |
psychotrope | it would appear so... | 05:07 |
shorne | well need CAPs for PWD | 05:07 |
psychotrope | well yeah | 05:08 |
shorne | and you need to include the BIN... and why does it day or1k-linux-gcc? | 05:08 |
shorne | like $PWD/or1k-linux-musl/bin | 05:08 |
shorne | you can always test with this | 05:08 |
shorne | 'ls $PWD/or1k-linux-musl/bin' | 05:08 |
shorne | if that lists the directory contents then its right | 05:08 |
shorne | and you see 'the *gcc bin' its good, if not you need to try again | 05:09 |
psychotrope | okay musl/or1k-linux-musl/bin is in my path enviroment variable | 05:12 |
psychotrope | cool | 05:12 |
psychotrope | I have no idea why that took me so long | 05:13 |
psychotrope | other than my mouse decided to die for no apparent reason | 05:13 |
shorne | ok, now you can just run 'or1k-linux-musl-gcc' in any directory and get something? | 05:14 |
psychotrope | yep | 05:15 |
psychotrope | no input files error ofc | 05:15 |
psychotrope | so it works | 05:15 |
shorne | good | 05:15 |
shorne | ok, now you can compile some binaries for the openrisc target | 05:15 |
shorne | linux | 05:15 |
psychotrope | cool | 05:15 |
shorne | it was just like 2 steps to do it :) | 05:16 |
shorne | 1. install the binary | 05:16 |
shorne | 2. setup your path | 05:16 |
psychotrope | yeah I'm being tired and making dumb mistakes that are slowing me down like crazy | 05:16 |
psychotrope | sorry about that | 05:16 |
shorne | next try to go into one of the library folders and see what you have | 05:17 |
shorne | is it an autoconf project> | 05:17 |
shorne | ? | 05:17 |
psychotrope | so what should I do about those libraries, how do I get them to so that I can use them while compiling GPG with musl? | 05:17 |
shorne | with configure and make? | 05:17 |
psychotrope | I'll check | 05:17 |
shorne | well, you have to compile them first too | 05:18 |
psychotrope | libgcrypt uses configure and make | 05:19 |
shorne | so try | 05:19 |
psychotrope | well these libraries seem dependent on eachother | 05:19 |
psychotrope | hmm... | 05:19 |
shorne | ./configure --target=or1k=linux-musl- --prefix=<place you want>/openrisc/musl-libs | 05:20 |
shorne | well it shouldn't be on eachother gpg-->libcrypt-->something | 05:20 |
shorne | you need to compile in reverse order | 05:20 |
psychotrope | yeah libgcrypt needed libgpg-error | 05:21 |
psychotrope | I assumed the libraries were independent | 05:21 |
psychotrope | if I leave out prefix, it just puts things in my current directory right? | 05:22 |
psychotrope | when I ./configure --target=or1k=linux-musl- , it finishes telling me my platform is X86 | 05:24 |
psychotrope | something isn't right here... | 05:24 |
shorne | hmm yeah | 05:24 |
shorne | well, which project did you try? | 05:25 |
psychotrope | libgpg-error | 05:25 |
psychotrope | it worked fine, but when I ran ./configure --target=or1k=linux-musl- --prefix=, it gave me X86 | 05:26 |
psychotrope | ...idk | 05:26 |
psychotrope | withouth the prefix part | 05:26 |
psychotrope | silly copy paste | 05:26 |
shorne | let ms see | 05:26 |
shorne | you might need ./configure --target=or1k=linux-musl- --host=or1k | 05:28 |
shorne | always look at ./configure --help | 05:28 |
psychotrope | okay | 05:28 |
shorne | Platform: or1k-unknown-none | 05:29 |
shorne | hmm, it seems there is an architecture specific layer here | 05:29 |
psychotrope | yeah under system types, ./configure --help says to use --host=HOST | 05:29 |
psychotrope | I assume you're trying things on your end with libgpg-error | 05:29 |
shorne | no I guess it works | 05:30 |
shorne | I just tried | 05:30 |
shorne | it builds fine | 05:30 |
psychotrope | so ./configure --target=or1k=linux-musl- --host=or1k? | 05:30 |
shorne | I did | 05:31 |
shorne | ./configure --target=or1k-linux-musl- --host=or1k --prefix=$HOME/openrisc/libs | 05:31 |
shorne | then make && make install | 05:31 |
psychotrope | seemed to work | 05:32 |
psychotrope | cool | 05:32 |
shorne | oh good they have -config binaries (like pkg config) | 05:32 |
shorne | that means library dependency basically works via $PATH too | 05:32 |
psychotrope | *sigh* I pointed it to my home directory with and no a folder there, now I have to find the output files lol | 05:34 |
psychotrope | I could not be more of a idiot | 05:34 |
shorne | you can fix the path and try again | 05:36 |
psychotrope | the outputs should have been "bin", "share", "lib" and "include" correct? | 05:36 |
shorne | yeah | 05:36 |
shorne | you can just remove those from your home | 05:36 |
psychotrope | I just moved them manually | 05:36 |
shorne | yeah | 05:36 |
shorne | hmm, target did not work on this build | 05:38 |
psychotrope | on what build? | 05:38 |
psychotrope | ./configure, make && make install worked for me | 05:38 |
psychotrope | for libgpgerror | 05:38 |
psychotrope | well I have the files from libgpgerror in a folder /home/project/compiledlibs/libgpgerror | 05:40 |
psychotrope | but now I need them for libgcrypt | 05:40 |
shorne | I was wrong | 05:42 |
shorne | ./configure --host=or1k-linux-musl | 05:42 |
shorne | need to use that | 05:42 |
psychotrope | so get rid of the old libgpgerror I assume | 05:42 |
shorne | what we did before installed binaries for x86 still | 05:42 |
shorne | yeah | 05:42 |
psychotrope | Revision: 82266de (33318) | 05:45 |
psychotrope | Platform: or1k-unknown-linux-musl | 05:45 |
psychotrope | sound right? | 05:45 |
shorne | yeah | 05:45 |
shorne | but... it wont build | 05:45 |
psychotrope | yeah... | 05:46 |
psychotrope | I can see | 05:46 |
shorne | there are host specific libs here src/syscfg/lock-obj-pub.* | 05:46 |
shorne | need to create code for openrisc specifically | 05:46 |
shorne | you can do it :) | 05:46 |
shorne | and send patches | 05:46 |
shorne | oh, its there | 05:46 |
shorne | lock-obj-pub.or1k-unknown-linux-gnu.h | 05:47 |
psychotrope | so... where should I start | 05:48 |
psychotrope | obviously that ./configure isn't getting anyone anywhere | 05:48 |
shorne | well I tried a hack | 05:49 |
shorne | cp src/syscfg/lock-obj-pub.or1k-unknown-linux-gnu.h src/syscfg/lock-obj-pub.or1k-unknown-linux-musl.h | 05:49 |
shorne | and make | 05:49 |
psychotrope | nope | 05:49 |
psychotrope | why is nios2 in src/syscfg | 05:51 |
shorne | I guess read README | 05:51 |
shorne | the syscfg seems to have details for system specifc locks | 05:51 |
shorne | i.e. each CPU needs different code (assembly level) for doing locks | 05:52 |
shorne | the README has a section on Cross Compiling | 05:53 |
shorne | I think I have to leave you there | 05:53 |
psychotrope | okay | 05:53 |
psychotrope | I'll read up and try some more tomorrow | 05:53 |
psychotrope | think you'll be around this weekend? | 05:53 |
shorne | hmm, maybe not much, its saturday night for me | 05:54 |
shorne | tomorrow big party | 05:54 |
psychotrope | okay, well thanks for all the help, I'll continue reading up on things and see if I can make progress | 05:54 |
psychotrope | thanks again for all the help | 05:54 |
shorne | psychotrope: btw, this is the device tree (system on chip description) of de0 nano https://github.com/openrisc/linux/blob/master/arch/openrisc/boot/dts/de0_nano.dts | 06:28 |
psychotrope | shorne: awesome | 06:29 |
shorne | notice the SPI bus is used for flash | 06:29 |
shorne | including FPGA image + bootloader | 06:29 |
psychotrope | how big is the flash in total? | 06:29 |
shorne | you can look it up | 06:30 |
shorne | also it says there | 06:30 |
psychotrope | yeah I noticed | 06:31 |
psychotrope | nvm | 06:31 |
psychotrope | in the flash notes | 06:31 |
psychotrope | "free space" | 06:31 |
shorne | 0x00700000 | 06:31 |
psychotrope | 64mbits total | 06:35 |
psychotrope | so thats only 8 megabyte | 06:36 |
psychotrope | excluding the bitstream and config tools | 06:36 |
psychotrope | I'll think about this later, I'm off to bed | 06:36 |
olofk | shorne: You're doing an absolutely fantastic work with all the maintenance. Big thanks for that | 17:08 |
olofk | shorne: And also, I just saw CONFIG_INITRAMFS_SOURCE reading through the backlog. So that's the way to use an initrams outside of the linux tree? I've been looking for that for years | 17:11 |
olofk | wbx: Regarding the things that shorne is trying to help psychotrope with, wouldn't buildroot be quite helpful here in collecting the dependencies and do lot of the heavy work? | 17:23 |
olofk | Also, poke53281 has a collection of scripts (like an ad-hoc buildroot/yocto) that he used to get packages compiled for jor1k. Maybe the pgp (or is it gpg?) stuff is in there somewhere? | 17:24 |
shorne | olofk: you can always redirect the initramfs to another place I do CONFIG_INITRAMFS_SOURCE="../openrisc/openrisc_os/initramfs ../openrisc/openrisc_os/initramfs.devnodes" | 17:48 |
shorne | thats what the builtroot stuff is for, it builds that directory I think, then you just point INITRAMFS to there | 17:48 |
shorne | olofk: I could commit the scripts I have in openrisc_os | 17:49 |
olofk | That's really useful. I've always found it a bit awkward to have to cram all your files into the linux build tree when creating custom initramfs | 17:49 |
shorne | but its not that great, I guess buildroot or whatever is what I should be trying to use there | 17:50 |
shorne | olofk: with regard to psychotrope buildroot is probably going to be better | 17:52 |
shorne | its good to know what PATH is and what ./configure does though | 17:52 |
olofk | sure, but anything involving multiple levels of library dependencies is going to be a pain :) | 17:56 |
olofk | If only something like FuseSoC existed for software :) | 17:56 |
olofk | oh well. Time to go now | 17:57 |
olofk | Almost forgot, happy birthday stekern_ :) | 17:57 |
olofk | Good night | 17:57 |
shorne | night | 17:58 |
shorne | stekern_: I rebased smp patches on the latest kernel (after openrisc merges) | 18:19 |
shorne | It compiles after some patches, but I have some work to do I think | 18:20 |
shorne | https://github.com/stffrdhrn/linux/wiki/OpenRISC-SMP-&-driver-branches | 18:20 |
shorne | I tried to document here, for SMP and Drivers are rebased and separated out to branches for easy integration, also they probably will not all to in through our tree | 18:20 |
--- Log closed Sun Feb 26 00:00:17 2017 |
Generated by irclog2html.py 2.15.2 by Marius Gedminas - find it at mg.pov.lt!