Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.21.0 #2379

Closed
jemc opened this issue Nov 27, 2017 · 27 comments
Closed

Release 0.21.0 #2379

jemc opened this issue Nov 27, 2017 · 27 comments

Comments

@jemc
Copy link
Member

jemc commented Nov 27, 2017

We want to issue another release soon, as we've merged one or more bug fixes that would trigger one.

@jemc
Copy link
Member Author

jemc commented Nov 27, 2017

@SeanTAllen has asked us to hold off on this so that Wallaroo Labs can prepare for the next release before we do it.

@SeanTAllen
Copy link
Member

Looks like I'll probably be doing this Thursday/Friday.

@winksaville
Copy link
Contributor

Are there rpm release candidates, I’d like to test on Arch Linux?

@SeanTAllen
Copy link
Member

@winksaville there are not. at this time we don't do release candidate releases. that would be master. if someone would be interested in setting up artifactory so that CI against master builds packages and uploads there, we'd be interested in assisting with that.

@winksaville
Copy link
Contributor

winksaville commented Dec 13, 2017 via email

@SeanTAllen
Copy link
Member

There's https://github.com/ponylang/ponyc/blob/master/RELEASE_PROCESS.md. However, it doesn't contain the automated steps that are taken to build packages. Those are in https://github.com/ponylang/ponyc/blob/master/.travis_script.bash

in particular:

https://github.com/ponylang/ponyc/blob/master/.travis_script.bash#L34

@winksaville
Copy link
Contributor

winksaville commented Dec 14, 2017

So it turned out "easy" to make the rpm file on my Ubuntu 17.10 machine after looking at ponyc-build-packages() in .travis_script.bash as @SeanTAllen suggested. I installed rvm, ruby 2.4.1, rpm and fpm and then ran make ... deploy:

make CC="gcc" CXX="g++" verbose=1 arch=x86-64 tune=intel package_name="ponyc" package_base_version="0.21.0" package_iteration="RC1" deploy

This results in the rpm, deb and tar.bz2 file in build/bin:

wink@vr-sv1:~/prgs/pony/ponyc (master)
$ ls -l build/bin/
total 4400
-rw-rw-r-- 1 wink wink 1601942 Dec 13 22:08 ponyc_0.21.0-RC1_amd64.deb
-rw-rw-r-- 1 wink wink 1298132 Dec 13 22:08 ponyc-0.21.0-RC1.tar.bz2
-rw-rw-r-- 1 wink wink 1597462 Dec 13 22:08 ponyc-0.21.0-RC1.x86_64.rpm

I then copied the rpm file to my Arch Linux and installed it, but it wouldn't run. If was missing libLLVM-3.9.so.1

$ ldd /usr/bin/ponyc
	linux-vdso.so.1 (0x00007ffd894d2000)
	libLLVM-3.9.so.1 => not found
	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f683dd41000)
	libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f683db3d000)
	libatomic.so.1 => /usr/lib/libatomic.so.1 (0x00007f683d935000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f683d5ae000)
	libm.so.6 => /usr/lib/libm.so.6 (0x00007f683d262000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f683d04b000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007f683cc93000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f683e29f000)

With 0.20.0 libLLVM is not shown as a dependency by ldd:

wink@wink-desktop:~/aur/ponyc-rpm/pkg/ponyc-rpm/usr/lib/pony/0.20.0-4003.0b2a2d2/bin
$ ldd ./ponyc 
	linux-vdso.so.1 (0x00007ffd8818f000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00007f14d7541000)
	libtinfo.so.5 => /usr/lib/libtinfo.so.5 (0x00007f14d72e0000)
	libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f14d70c2000)
	libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f14d6ebe000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f14d6b37000)
	libm.so.6 => /usr/lib/libm.so.6 (0x00007f14d67eb000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f14d65d4000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007f14d621c000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f14d7758000)

Is this dependency on libLLVM expected or is it an artifact of how the build occurs on my Ubuntu 17.10 machine?

There is one other difference, libz.so.1 is listed as a dependency in 0.20.0 but not in 0.21.0, is this expected?

@winksaville
Copy link
Contributor

winksaville commented Dec 14, 2017

I've built 0.20.0 on my Ubuntu 17.10 machine and ldd lists libLLVM-3.9.so-1:

$ ldd build/release/ponyc 
	linux-vdso.so.1 =>  (0x00007ffe6f9f6000)
	libLLVM-3.9.so.1 => /usr/lib/x86_64-linux-gnu/libLLVM-3.9.so.1 (0x00007ff2aac38000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff2aaa19000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff2aa815000)
	libatomic.so.1 => /usr/lib/x86_64-linux-gnu/libatomic.so.1 (0x00007ff2aa60d000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff2aa287000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff2a9f31000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff2a9d1a000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff2a993a000)
	libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007ff2a9732000)
	libedit.so.2 => /usr/lib/x86_64-linux-gnu/libedit.so.2 (0x00007ff2a94fb000)
	libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007ff2a92d2000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff2a90b5000)
	/lib64/ld-linux-x86-64.so.2 (0x00007ff2adb55000)

I then used readelf to look at the dynamic section and it seems when compiling on Ubuntu 17.10 with gcc 7.2.0 libLLVM is "NEEDED":

wink@vr-sv1:~/prgs/pony/ponyc/build/release
$ readelf --dynamic ponyc

Dynamic section at offset 0x130d88 contains 34 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libLLVM-3.9.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libatomic.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x22740
 0x000000000000000d (FINI)               0xfc124
 ...

Where as with ponyc 0.20.0 from bintray, which I assume was built on Travis with 14.04 and gcc 4.8, it's not "NEEDED":

wink@wink-desktop:~/aur/ponyc-rpm/pkg/ponyc-rpm/usr/lib/pony/0.20.0-4003.0b2a2d2/bin
$ readelf --dynamic ponyc

Dynamic section at offset 0x2157720 contains 32 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libz.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libtinfo.so.5]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [ld-linux-x86-64.so.2]
 0x000000000000000c (INIT)               0x617798
...

So why would LLVM not be needed when compiled on Travis?

This also looks to answer my second question, libz is "NEEDED" by ponyc 0.20.0 compiled on Travis, but it's not "NEEDED" directly when compiled on my Ubuntu 17.10 machine.

@winksaville
Copy link
Contributor

So I created a Ubuntu 14.04 machine with gcc 4.8 and compiled 0.20.0. I got the exact same results as on Ubuntu 17.10:

wink@vr-sv2:~/prgs/pony/ponyc (my-0.20.0)
$ readelf --dynamic ponyc.master 

Dynamic section at offset 0x136dc0 contains 30 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libLLVM-3.9.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libpthread.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libdl.so.2]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x41cfe8
 0x000000000000000d (FINI)               0x4fe3c4

So, again does anyone know why 0.20.0 from bintray isn't dependent upon libLLVM?

@mfelsche
Copy link
Contributor

I do remember this. The same happened to me when i installed llvm from their apt repository. Their apt package only contains the shared objects while the binary packages downloaded from the llvm homepage contain the .a files that get linked statically. So if you build against the shared objects ponyc will link them.

@mfelsche
Copy link
Contributor

The README was updated lately. I use to compile ponyc locally using the prebuilt binaries from llvm:

You should install LLVM 3.7.1, 3.8.1, or 3.9.1 from the LLVM download page (http://llvm.org/releases/download.html) under Pre-Built Binaries. Then you can extract that LLVM to /usr/local, for example.

This enables m to link the llvm parts statically and thus there are no runtime dependencies on libLLVM for ponyc. @winksaville is your ponyc binary compiling properly? Try a ponyc example. If so, is the created binary running well? Does is also depend on libLLVM?

I think we should discuss this in another separate issue.

@Praetonus
Copy link
Member

I'd like us to wait for my upcoming fix for #2308 before starting this release.

@SeanTAllen
Copy link
Member

@Praetonus im happy to do another release afterwards but our Wallaroo release that is in process and testing requires this release to happen in the next couple days. I will do the work do another release after your fix for #2308 is done.

@Praetonus
Copy link
Member

@SeanTAllen I've opened a PR for the fix: #2418.

@SeanTAllen
Copy link
Member

@Praetonus nice

@Praetonus
Copy link
Member

I've just merged #2418.

@SeanTAllen
Copy link
Member

@Praetonus awesome. i'm probably releasing either Sunday or Monday.

@SeanTAllen
Copy link
Member

I'll be doing this release on Sunday.

@SeanTAllen
Copy link
Member

Blessing fad7a87

@SeanTAllen
Copy link
Member

Release underway

@SeanTAllen
Copy link
Member

Homebrew PR opened: Homebrew/homebrew-core#21824

@SeanTAllen
Copy link
Member

@stefantalpalaru @kamilchm release underway

@stefantalpalaru
Copy link
Contributor

Gentoo ebuild updated.

@SeanTAllen
Copy link
Member

RPM and Debian packages are in bintray.

@SeanTAllen
Copy link
Member

Homebrew has been released. I'm working on release notes. It's a big release so that is going to take a while.

@SeanTAllen
Copy link
Member

Windows version is now in bintray

@SeanTAllen
Copy link
Member

Release post is up. IRC, mailing list, twitter informed. Posted to /r/ponylang. Also submitted to HN and lobste.rs.

Thanks for playing folks.

kamilchm added a commit to kamilchm/nixpkgs that referenced this issue Dec 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants