Git Product home page Git Product logo

go-overlay's Introduction

Go Overlay

Build Status

The Go Overlay is intended as a Portage collection of Go related ebuilds — mainly applications and tools written in Go. This repository offers Go packages that can be compiled in a reproducible way, without the need of recompiling wacky and obscure Go dependencies, or placing weird Go libraries inside your system GOROOT, and then ending up with a polluted and screwed up Go environment.

The primary reason why Go packages cannot be reproducibly built is because the import statement(which drives go get) does not contain sufficient information to identify which revision of a Go package it should fetch. Additionally, if the source code of a Go package changes in an incompatible way, there is no way for ebuild that consumes that import path to indicate that it does not want to blindly build against the latest revision of the code. Head over there for more information about reproducible builds in Go.

The Go Overlay main purpose is to create an easy way for the Go community to use Gentoo. This overlay strives to maintain a large set of Go packages as well as wide configuration options that users of Gentoo have come to expect.

User's Guide

Installing The Overlay

In order to manage overlays, the package app-portage/layman must be installed into your Gentoo environment:

emerge -av app-portage/layman

If the installation of layman was successfully completed, then you are ready to sync the content of this repository:

layman -a go-overlay

If you use eix you may need to execute:

eix-update

Updating The Overlay

Keep the overlay up to date with the following command:

layman -s go-overlay

Removing The Overlay

The process of removing this overlay from your Gentoo environment is quite straightforward:

layman -d go-overlay

Contributing

I welcome issue reports, feedbacks, and ebuild requests; I encourage you to use the issues list on GitHub to provide them.

Code contributions and bug fixes are welcome too, and I encourage the use of pull requests to discuss and review your ebuild code changes. Before proposing a large change, please discuss it by raising an issue.

Before You Begin

This overlay assumes that you have read, and properly understood, the Gentoo Developer Manual.

Code of Conduct

Help me to keep this overlay open and inclusive for everyone. Please, read and follow the Code of Conduct.

Making and Submitting Changes

To make the process of pull requests submission as seamless as possible, I ask for the following:

  1. Go ahead and fork this project and make your changes.

  2. When your code changes are ready, make sure to run repoman fix -d, repoman full -d, and repoman -vx full in the root of the repository to ensure that all the Gentoo's QA tests pass. This is necessary to assure nothing was accidentally broken by your changes; for the purpose this GitHub repository integrates Travis for Continuous Integration of repoman tests. I only take pull requests with passing repoman tests.

  3. Squash your commits into a single one with git rebase -i. It's okay to force update your pull request.

  4. Make sure your git commit messages are in the proper format to make reading history easier. Commit message should look like:

    [category/package-name] Short description
    
    Long description
    

    If you have questions about how to write the short / long descriptions, please read these blog articles: How to Write a Commit Message, 5 Useful Tips For A Better Commit Message. Both of them are excellent resources for learning how to write a well-crafted git commit message. If your commit references one or more GitHub issues, always end your commit message body with See #1234 or Fixes #1234 (replace 1234 with the desired GitHub issue ID).

  5. GPG signing your changes is a good idea, but not mandatory.

  6. Push your changes to your branch in your fork, and then submit a pull request agains this repository.

  7. Comment in the pull request when you are ready for the changes to be reviewed: PR ready for review.

At this point you are waiting for my feedbacks. I look at pull requests within few days. I may suggest some improvements or alternatives.

go-overlay's People

Contributors

bpinto avatar br1ght0ne avatar cgroschupp avatar cogitri avatar donat-b avatar dr-terrible avatar firegurafiku avatar flowdalic avatar ganto avatar hlein avatar ixti avatar justusranvier avatar linxon avatar oskar456 avatar pefoley2 avatar pigfoot avatar r7l avatar rdnetto avatar svoop avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

go-overlay's Issues

[dev-util/go-tools] File collision with /usr/bin/bundle from dev-ruby/bundler

When trying to install dev-util/go-tools from your overlay and having dev-ruby/bundler installed, emerge will abort with a file collision error:

>>> Installing (1 of 1) dev-util/go-tools-20151230::go-overlay
 * checking 21 files for package collisions
[...]
 * Detected file collision(s):
 *
 *      /usr/bin/bundle
 *
 * Searching all installed packages for file collisions...
 * 
 * Press Ctrl-C to Stop
 *
 * dev-ruby/bundler-1.10.6:0::gentoo
 *      /usr/bin/bundle
 * 
 * Package 'dev-util/go-tools-20151230' NOT merged due to file
 * collisions. If necessary, refer to your elog messages for the whole
 * content of the above message.

Maybe you could rename it to something like go-bundle?

Gogs v0.9.71 released

Hi,

I was wondering if you could update the gogs ebuild to the latest version available. Thanks :)

[app-admin/unik]

It would be nice to have a working ebuild for UniK at some point.
At least rump kernels should be supported as a starting point.

[net-misc/syncthing] go build failing

When emerging syncthing, the build fails. I can't find any clue why. The error message is:

[...]
github.com/syncthing/syncthing/lib/model
github.com/syncthing/syncthing/lib/connections
github.com/syncthing/syncthing/cmd/syncthing
# github.com/syncthing/syncthing/cmd/syncthing
usage: 6l [options] main.6
  -1    use alternate profiling code
  -8    assume 64-bit addresses
  -B info
        define ELF NT_GNU_BUILD_ID note
  -C    check Go calls to C code
  -D addr
        data address
  -E sym
        entry symbol
  -I interp
        set ELF interp
  -L dir
        add dir to library path
  -H head
        header type
  -K    add stack underflow checks
  -O    print pc-line tables
  -Q    debug byte-register code gen
  -R rnd
        address rounding
  -S    check type signatures
  -T addr
        text address
  -V    print version and exit
  -W    disassemble input
  -X name value
        define string data
  -Z    clear stack frame on entry
  -a    disassemble output
  -c    dump call graph
  -d    disable dynamic executable
  -extld ld
        linker to run in external mode
  -extldflags ldflags
        flags for external linker
  -f    ignore version mismatch
  -g    disable go package data checks
  -installsuffix suffix
        pkg directory suffix
  -k sym
        set field tracking symbol
  -linkmode mode
        set link mode (internal, external, auto)
  -n    dump symbol table
  -o outfile
        set output file
  -r dir1:dir2:...
        set ELF dynamic linker search path
  -race
        enable race detector
  -s    disable symbol table
  -shared
        generate shared object (implies -linkmode external)
  -tmpdir dir
        leave temporary files in this directory
  -u    reject unsafe packages
  -v    print link trace
  -w    disable DWARF generation
 * ERROR: net-misc/syncthing-0.12.11::go-overlay failed (compile phase):
 *   (no error message)
 * 
 * Call stack:
 *     ebuild.sh, line  133:  Called src_compile
 *   environment, line 2519:  Called golang-single_src_compile
 *   environment, line 1458:  Called golang-single_do_build_ '-v' '-p' '5' '-a' '-o' '/var/tmp/portage/net-misc/syncthing-0.12.11/work/gobin/syncthing' 'github.com/syncthing/syncthing/cmd/syncthing'
 *   environment, line 1428:  Called die
 * The specific snippet of code:
 *       ${EGO} build -ldflags "${GOLANG_PKG_LDFLAGS}" -tags "${GOLANG_PKG_TAGS}" $* || die
 * 
 * If you need support, post the output of `emerge --info '=net-misc/syncthing-0.12.11::go-overlay'`,
 * the complete build log and the output of `emerge -pqv '=net-misc/syncthing-0.12.11::go-overlay'`.
 * The complete build log is located at '/var/tmp/portage/net-misc/syncthing-0.12.11/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/net-misc/syncthing-0.12.11/temp/environment'.
 * Working directory: '/var/tmp/portage/net-misc/syncthing-0.12.11/work/gopath/src/github.com/syncthing/syncthing'
 * S: '/var/tmp/portage/net-misc/syncthing-0.12.11/work/gopath/src/github.com/syncthing/syncthing'

How can I help to fix this?

[dev-vcs/hub] v2.2.3

I have pushed some enhancements for dev-vcs/hub with commit 67c3256, but I need feedbacks from people using this tool. Is hub working correctly? Is there something missing?

Any kind of feedback is welcome.

cc: @ganto if I remember correctly, you're using hub, right?

[dev-vcs/gitql] libgit2.so.21 => not found

gitql is linked to the shared library libgit2.so.21 instead of being statically linked to the bundled libgit2.a. Unfortunately, gitql uses libgit2 v0.21.0 which doesn't support static compilation properly.

To fix the issue we:

  • force compilation of the bundle libgit2 as a shared library;
  • force installation of libgit2 into /usr/lib*/gitql; to avoid file collisions with libraries provided by dev-libs/libgit2:0;
  • force the dynamic linking of gitql to the bundled libgit2.so.21, and then we change the rpath of the executable to point to /usr/lib*/gitql;

Create a specific @set for Bíogo project

Bíogo is a bio-informatics library collection: https://github.com/biogo

For every bíogo's component there should be a proper ebuild:

  • bíogo - a bioinformatics library for Go
  • hts - High Throughput Sequencing repository
  • ragel utilities repository
  • RNAseq utilities repository
  • graphics - genomic graphics repository
  • illumina utilities repository
  • ncbi utilities repository
  • external command interface repository
  • undirected graph analysis repository
  • data clustering repository
  • wrapper for libbam
  • data store repository

[dev-go/go-bindata] Repository switch

Apparently, the original maintainer of go-bindata is no more active¹ on GitHub since 2015. As a result, go-bindata has been forked by several people in attempt to fix the overwhelming number of pending issues and bugs.

Unfortunately, none of those forks are API compatible with the original package, or with each others, leaving behind a hell to deal with for distro's packagers.

Unless this situation improve drastically in the next days, I'm going to remove dev-go/go-bindata from this overlay and rewrite the few ebuilds depending on it to rely on a bundled copy. People wishing to use the tool can still install it from portage.

¹- he is active on other web sites, so he is well and sound and I'm glade of that.

no ebuilds satisfy "www-apps/hugo"

Wow...I thought I had things squared away with the overlay setup.
I can see "go-overlay" in a local listing (layman -l )
emerge has been sync'd and updated.
However,...
no setup of unmasking or keyword change will allow the package to be found or emerged.
I must be missing something very simple here.

Help?

[www-apps/hugo] 0.20.5

Hugo has been updated to 0.20.5 (https://github.com/spf13/hugo/releases)

I am trying to make the changes necessary to update the ebuild by reading the developer's guide, but it is very extense.

Could you give me some hints on how to update an ebuild? Maybe I could create a PR if you do not have time to update Hugo.

Thanks and best regards.

[app-text/go-md2man] "dev-go/go-md2man" is blocking app-text/go-md2man-1.0.6

Since a few weeks I have a blocker when trying to update docker:

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] app-text/go-md2man-1.0.6::go-overlay  USE="-debug {-test}" 40 KiB
[ebuild   R    ] sys-devel/gcc-4.9.3:4.9.3::gentoo  USE="cxx fortran gcj go* (multilib) nls nptl openmp sanitize vtv (-altivec) (-awt) -cilk -debug -doc (-fixed-point) -graphite (-hardened) (-libssp) -nopie -nossp -objc -objc++ -objc-gc -regression-test -vanilla" 0 KiB
[ebuild  N     ] app-emulation/runc-1.0.0_rc2-r50::go-overlay  USE="seccomp -apparmor -debug (-selinux) {-test}" 0 KiB
[ebuild  N    ~] app-emulation/containerd-0.2.4::gentoo  USE="seccomp" 0 KiB
[ebuild     U ~] app-emulation/docker-1.12.2::gentoo [1.12.2_rc1::gentoo] USE="btrfs device-mapper seccomp -apparmor -aufs -experimental -overlay" 0 KiB
[blocks B      ] dev-go/go-md2man ("dev-go/go-md2man" is blocking app-text/go-md2man-1.0.6)

Total: 5 packages (1 upgrade, 3 new, 1 reinstall), Size of downloads: 40 KiB
Conflict: 1 block (1 unsatisfied)

 * Error: The above package list contains packages which cannot be
 * installed at the same time on the same system.

  (app-text/go-md2man-1.0.6:0/0::go-overlay, ebuild scheduled for merge) pulled in by
    app-text/go-md2man required by (app-emulation/runc-1.0.0_rc2-r50:0/0::go-overlay, ebuild scheduled for merge)

  (dev-go/go-md2man-1.0.3:0/0::gentoo, installed) pulled in by
    dev-go/go-md2man required by (app-emulation/docker-1.12.2:0/0::gentoo, ebuild scheduled for merge)

Shouldn't your go-md2man ebuild belong to dev-go too? Thanks for looking at it.

[app-misc/fzf]: ebuild request

Hi,
I'd appreciate it if you could add an ebuild for fzf. I've had a go at doing so myself, but it doesn't seem to follow the normal package layout for Go (the source is in a src subdirectory), and I didn't know enough about Go to make it half-work without some truly terrible hacks.

[eclass/golang-single] nested dependencies

Go1.5+ allows to vendor dependencies inside other vendored dependencies, such as ${S}/vendor/*/vendor. The eclass should be able to detect all of them and export them as $GOLANG_PKG_VENDOR items.

Package dev-vcs/hub is affected by this bug.

Create a specific @set for the Gonum project

Gonum is a collection of libraries for scientific and numeric computing: https://github.com/gonum

For every gonum's component there should be a proper ebuild:

  • Matrix - matrix packages
  • Optimize - package for finding the optimum value of functions
  • Stat - statistics package
  • Plot - a repository for plotting and visualizing data
  • Lapack - a lapack implementation for Go
  • Blas - a BLAS implementation for Go
  • Graph - graph packages for Go
  • Diff - a set of tools for computing derivatives of a function
  • Floats - operations on slices of floats
  • Unit - package for converting between scientific units
  • internal - internal routines for the gonum project
  • root - algorithms for calculating the zero value of functions
  • general - general purpose functions for other gonum repositories

[net-p2p/syncthing] v0.12.20

With commit decdf4b I have made some tweaks to the ebuild, especially to the openrc init files. Please, can you confirm that I didn't break anything in the process?

[www-apps/gogs] build failing

I tried to compile gogs on both amd64 and arm machines but it didn't compile:
build.log has only this error:

modules/setting/setting.go:257: undefined: bindata.MustAsset

go install net: open /usr/lib/go/pkg/linux_amd64/net.a: permission denied

This compilation error happens because you have dev-go/go-net::gentoo-0_pre20150804 installed in your system. It's a very well known bug.

That ebuild is stale and broken by design; uninstall it with emerge -C dev-go/go-net, and your package should be able to successfully continue the compilation.

If the error persists after you have removed dev-go/go-net, then chances are that those files in /usr/lib/go/pkg/linux_amd64/* are leftovers from a previous broken session of sys-apps/portage, hence they are still present in your filesystem despite the uninstall of dev-go/go-net.

In case, run this command¹ from your terminal: qfile /usr/lib/go/pkg/linux_amd64/net.a. If qfile doesn't shows you an output such as: dev-go/go-net (/usr/lib/go/pkg/linux_amd64/net.a), then that file is an orphan cluttering your system. Just manually remove it.

Unfortunately there is nothing I can do to fix this scenario, or to prevent it, since I'm not the maintainer of that ebuild. Feel free to enquiry Gentoo developers for a proper solution.

¹- qfile is provided by package app-portage/portage-utils;

I'll leave this bug report open as a reminder for future users.

[app-emulation/packer] Filesize does not match recorded size

When trying to emerge app-emulation/packer from the go-overlay, it will abort with the following error message:

Location: https://codeload.github.com/GoogleCloudPlatform/google-cloud-go/tar.gz/5a3b06f8b5da3b7c3a93da43163b872c86c509ef [following]
--2016-09-18 23:06:07--  https://codeload.github.com/GoogleCloudPlatform/google-cloud-go/tar.gz/5a3b06f8b5da3b7c3a93da43163b872c86c509ef
Resolving codeload.github.com (codeload.github.com)... 192.30.253.121
Connecting to codeload.github.com (codeload.github.com)|192.30.253.121|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 206704 (202K) [application/x-gzip]
Saving to: ‘/usr/portage/distfiles/github.com-GoogleCloudPlatform-gcloud-golang-5a3b06f.tar.gz’

/usr/portage/distfi 100%[===================>] 201.86K   379KB/s    in 0.5s    

2016-09-18 23:06:08 (379 KB/s) - ‘/usr/portage/distfiles/github.com-GoogleCloudPlatform-gcloud-golang-5a3b06f.tar.gz’ saved [206704/206704]

!!! Fetched file: github.com-GoogleCloudPlatform-gcloud-golang-5a3b06f.tar.gz VERIFY FAILED!
!!! Reason: Filesize does not match recorded size
!!! Got:      206704
!!! Expected: 206678
Refetching... File renamed to '/usr/portage/distfiles/github.com-GoogleCloudPlatform-gcloud-golang-5a3b06f.tar.gz._checksum_failure_.04gbxqse'

!!! Couldn't download 'github.com-GoogleCloudPlatform-gcloud-golang-5a3b06f.tar.gz'. Aborting.
 * Fetch failed for 'app-emulation/packer-0.10.1', Log file:
 *  '/var/tmp/portage/app-emulation/packer-0.10.1/temp/build.log'

>>> Failed to emerge app-emulation/packer-0.10.1, Log file:

>>>  '/var/tmp/portage/app-emulation/packer-0.10.1/temp/build.log'

I guess the Manifest is not up-to-date. Could you please verify and fix?

[app-editors/liteide] v33

LiteIDE's ebuild should be updated and force the use of Qt5 eclasses (Qt4 is deprecated and soon will be removed from portage).

[golang-single.eclass] Make use of $T

Instead to clutter the ${WORKDIR} with a GoLang workspace, the eclass should take advantage of ${T} and store the entire workspace there (es: ${T}/gopath and ${T}/gobin).

[WIP] Re-factoring of golang-single eclass

The actual eclass golang-single will undergo a deep refactoring to better suit new features from Go 1.8+ and future releases.

The new eclasses will allow shorter ebuilds and will be easier to use, or understand.

  • split the eclass in two different eclasses, one for each Go's workspace type:
    • single package
    • multiple package
    • library

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.