I am trying to generate client code using k8s.io/code-generator.
These are the instructions that I am following: https://itnext.io/how-to-generate-client-codes-for-kubernetes-custom-resource-definitions-crd-b4b9907769ba
My question is, does my go module need to be present on a repository or can I simply run the generate-groups.sh script on a go module that is ONLY present on my local system and not on any repository?
I have already tried running it and from what I understand, there needs to be a repository having ALL the contents of my local go module. Is my understanding correct?
You CAN run kubernetes/code-generator's generate-groups.sh on a go module that is only present on your local system. Neither code-generator nor your module needs to be in your GOPATH.
Verification
Cloned kubernetes/code-generator into a new directory.
$HOME/somedir
├── code-generator
Created a project called myrepo and mocked it with content to resemble sample-controller. Did this in the same directory to keep it simple.
somedir
├── code-generator
└── myorg.com
└── myrepo # mock of sample-controller
├── go.mod
├── go.sum
└── pkg
└── apis
└── myorg
├── register.go
└── v1alpha1
├── doc.go
├── register.go
└── types.go
My go.mod looked like
module myorg.com/myrepo
go 1.14
require k8s.io/apimachinery v0.17.4
Ran generate-group.sh. The -h flag specifies which header file to use. The -o flag specifies the output base which is necessary here because we're not in GOPATH.
$HOME/somedir/code-generator/generate-groups.sh all myorg.com/myrepo/pkg/client myorg.com/myrepo/pkg/apis "myorg:v1alpha1" \
-h $HOME/somedir/code-generator/hack/boilerplate.go.txt \
-o $HOME/somedir
Confirmed code generated in correct locations
myrepo
├── go.mod
├── go.sum
└── pkg
├── apis
│ └── myorg
│ ├── register.go
│ └── v1alpha1
│ ├── doc.go
│ ├── register.go
│ ├── types.go
│ └── zz_generated.deepcopy.go
└── client
├── clientset
│ └── versioned
│ ├── clientset.go
│ ├── doc.go
│ ├── fake
│ ├── scheme
│ └── typed
├── informers
│ └── externalversions
│ ├── factory.go
│ ├── generic.go
│ ├── internalinterfaces
│ └── myorg
└── listers
└── myorg
└── v1alpha1
Sources
Go modules support https://github.com/kubernetes/code-generator/issues/57
Documentation or support for Go modules https://github.com/kubernetes/sample-controller/issues/47
First of all I should say I am a complete newbie to the Yocto world.
I have a working environment that produces my uboot+kernel+rootfs.
I need to add a (complex) driver I have as a subdirectory.
This driver can be compiled natively in the standard way:
here=$(pwd)
make -C /lib/modules/$(uname -r)/build M=$here/bcmdhd modules CONFIG_BCMDHD_PCIE=y CONFIG_BCMDHD=m CONFIG_BCM4359=y
I have seen Integrate out-of-tree driver in kernel and rebuild yocto project image and I have read Yocto Kernel Development Manual.
I tried to follow directions:
Created a directory in .../recipes-kernel beside linux dir.
Copied the source directory in it.
Created a .bb file.
The resulting source tree is:
recipes-kernel/
├── kernel-modules
│ ├── kernel-module-bcmdhd
│ │ └── bcmdhd
│ │ ├── include
│ │ │ ├── include files
│ │ ├── Kconfig
│ │ ├── Makefile
│ │ └── other source files
│ └── kernel-module-bcmdhd_0.1.bb
└── linux
├── linux-imx-4.1.15
│ └── imx
│ └── defconfig
└── linux-imx_4.1.15.bbappend
My BCM89359-mod_0.1.bb contains:
SUMMARY = "Integration of Cypress BCMDHD external Linux kernel module"
LICENSE = "Proprietary"
inherit module
SRC_URI = "file://bcmdhd"
S = "${WORKDIR}"
Unfortunately this doesn't seem to be enough as running bitbake results in no compilation attempted.
I am quite plainly missing something, but I'm unable to understand what.
Any help welcome.
You should have the following source tree:
recipes-kernel/
├── kernel-modules
│ ├── kernel-module-bcm89359_0.1.bb
│ └── kernel-module-bcm89359
│ └ bcmdhd
│ ├ Kconfig
└── linux
├── ...
(For the record)
You can add your module to MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "kernel-module-bcm89359" to local.conf or machine configuration. Also, you can add KERNEL_MODULE_AUTOLOAD = "bcm89359" to load your module automatically.
I'm learning Heroku. I tried to deploy a Node.js app on Heroku. Build seems to be successful, but the browser shows App-error.
https://warm-coast-28316.herokuapp.com/
Why?
Here is the log. Is there something suspicios?
-----> Node.js app detected
-----> Creating runtime environmen
NPM_CONFIG_LOGLEVEL=error
NPM_CONFIG_PRODUCTION=true
NODE_ENV=production
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): >=0.12.7 <0.13
engines.npm (package.json): ~2.11.3
Resolving node version >=0.12.7 <0.13 via semver.io...
Downloading and installing node 0.12.18...
Resolving npm version ~2.11.3 via semver.io...
Downloading and installing npm 2.11.3 (replacing version 2.15.11)...
-----> Restoring cache
Skipping cache restore (new runtime signature)
-----> Building dependencies
Installing node modules (package.json)
> ws#0.4.32 install /tmp/build_beb218743747080f27aa5afd85781f8f/vheinitz-reatha-7a0950a/node_modules/node-hl7/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
make: Entering directory `/tmp/build_beb218743747080f27aa5afd85781f8f/vheinitz-reatha-7a0950a/node_modules/node-hl7/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/obj.target/bufferutil.node
COPY Release/bufferutil.node
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/obj.target/validation.node
COPY Release/validation.node
make: Leaving directory `/tmp/build_beb218743747080f27aa5afd85781f8f/vheinitz-reatha-7a0950a/node_modules/node-hl7/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws/build'
module#0.0.1 node_modules/module
periodic-task#0.1.2 node_modules/periodic-task
cookie-parser#1.3.5 node_modules/cookie-parser
├── cookie#0.1.3
└── cookie-signature#1.0.6
debug#2.2.0 node_modules/debug
└── ms#0.7.1
jsonfile#2.4.0 node_modules/jsonfile
└── graceful-fs#4.1.11
morgan#1.5.3 node_modules/morgan
├── basic-auth#1.0.4
├── depd#1.0.1
└── on-finished#2.2.1 (ee-first#1.1.0)
string#3.3.3 node_modules/string
node-mv#0.1.3 node_modules/node-mv
├── progress#1.1.8
├── async#0.9.2
└── commander#2.9.0 (graceful-readlink#1.0.1)
serve-favicon#2.2.1 node_modules/serve-favicon
├── fresh#0.2.4
├── parseurl#1.3.1
├── ms#0.7.1
└── etag#1.6.0 (crc#3.2.1)
gm#1.23.0 node_modules/gm
├── array-series#0.1.5
├── array-parallel#0.1.3
└── cross-spawn#4.0.2 (lru-cache#4.0.2, which#1.2.12)
express#4.12.4 node_modules/express
├── cookie-signature#1.0.6
├── fresh#0.2.4
├── merge-descriptors#1.0.0
├── parseurl#1.3.1
├── content-type#1.0.2
├── utils-merge#1.0.0
├── cookie#0.1.2
├── methods#1.1.2
├── escape-html#1.0.1
├── range-parser#1.0.3
├── vary#1.0.1
├── finalhandler#0.3.6
├── serve-static#1.9.3
├── content-disposition#0.5.0
├── path-to-regexp#0.1.3
├── depd#1.0.1
├── on-finished#2.2.1 (ee-first#1.1.0)
├── qs#2.4.2
├── etag#1.6.0 (crc#3.2.1)
├── send#0.12.3 (destroy#1.0.3, ms#0.7.1, mime#1.3.4)
├── proxy-addr#1.0.10 (forwarded#0.1.0, ipaddr.js#1.0.5)
├── type-is#1.6.14 (media-typer#0.3.0, mime-types#2.1.14)
└── accepts#1.2.13 (negotiator#0.5.3, mime-types#2.1.14)
body-parser#1.16.0 node_modules/body-parser
├── bytes#2.4.0
├── content-type#1.0.2
├── depd#1.1.0
├── on-finished#2.3.0 (ee-first#1.1.1)
├── raw-body#2.2.0 (unpipe#1.0.0)
├── http-errors#1.5.1 (setprototypeof#1.0.2, inherits#2.0.3, statuses#1.3.1)
├── qs#6.2.1
├── debug#2.6.0 (ms#0.7.2)
├── type-is#1.6.14 (media-typer#0.3.0, mime-types#2.1.14)
└── iconv-lite#0.4.15
request#2.79.0 node_modules/request
├── is-typedarray#1.0.0
├── aws-sign2#0.6.0
├── oauth-sign#0.8.2
├── forever-agent#0.6.1
├── tunnel-agent#0.4.3
├── caseless#0.11.0
├── stringstream#0.0.5
├── isstream#0.1.2
├── json-stringify-safe#5.0.1
├── extend#3.0.0
├── aws4#1.5.0
├── uuid#3.0.1
├── combined-stream#1.0.5 (delayed-stream#1.0.0)
├── qs#6.3.0
├── form-data#2.1.2 (asynckit#0.4.0)
├── mime-types#2.1.14 (mime-db#1.26.0)
├── tough-cookie#2.3.2 (punycode#1.4.1)
├── har-validator#2.0.6 (pinkie-promise#2.0.1, commander#2.9.0, chalk#1.1.3, is-my-json-valid#2.15.0)
├── hawk#3.1.3 (cryptiles#2.0.5, sntp#1.0.9, boom#2.10.1, hoek#2.16.3)
└── http-signature#1.1.1 (assert-plus#0.2.0, jsprim#1.3.1, sshpk#1.10.2)
multer#0.1.6 node_modules/multer
├── qs#1.2.2
├── mkdirp#0.3.5
└── busboy#0.2.14 (readable-stream#1.1.14, dicer#0.2.5)
connect-busboy#0.0.2 node_modules/connect-busboy
└── busboy#0.2.14 (readable-stream#1.1.14, dicer#0.2.5)
nodemon#1.11.0 node_modules/nodemon
├── ignore-by-default#1.0.1
├── undefsafe#0.0.3
├── es6-promise#3.3.1
├── minimatch#3.0.3 (brace-expansion#1.1.6)
├── touch#1.0.0 (nopt#1.0.10)
├── lodash.defaults#3.1.2 (lodash.restparam#3.6.1, lodash.assign#3.2.0)
├── ps-tree#1.1.0 (event-stream#3.3.4)
├── update-notifier#0.5.0 (is-npm#1.0.0, semver-diff#2.1.0, string-length#1.0.1, chalk#1.1.3, repeating#1.1.3, configstore#1.4.0, latest-version#1.0.1)
└── chokidar#1.6.1 (inherits#2.0.3, path-is-absolute#1.0.1, async-each#1.0.1, glob-parent#2.0.0, is-binary-path#1.0.1, is-glob#2.0.1, readdirp#2.1.0, anymatch#1.3.0)
jade#1.11.0 node_modules/jade
├── character-parser#1.2.1
├── void-elements#2.0.1
├── commander#2.6.0
├── mkdirp#0.5.1 (minimist#0.0.8)
├── jstransformer#0.0.2 (is-promise#2.1.0, promise#6.1.0)
├── constantinople#3.0.2 (acorn#2.7.0)
├── with#4.0.3 (acorn-globals#1.0.9, acorn#1.2.2)
├── clean-css#3.4.24 (commander#2.8.1, source-map#0.4.4)
├── transformers#2.1.0 (promise#2.0.0, css#1.0.8, uglify-js#2.2.5)
└── uglify-js#2.7.5 (uglify-to-browserify#1.0.2, async#0.2.10, yargs#3.10.0, source-map#0.5.6)
moment#2.17.1 node_modules/moment
execsql#0.0.3 node_modules/execsql
├── underscore#1.5.2
├── optimist#0.6.0 (wordwrap#0.0.3, minimist#0.0.10)
└── mysql#2.0.0-rc2 (require-all#0.0.3, bignumber.js#1.0.1)
node-hl7#0.1.3 node_modules/node-hl7
├── xmlbuilder#0.4.3
├── chai#1.4.2
├── xml2js#0.2.8 (sax#0.5.8)
└── socket.io#0.9.17 (base64id#0.1.0, policyfile#0.0.4, redis#0.7.3, socket.io-client#0.9.16)
-----> Caching build
Clearing previous node cache
Saving 2 cacheDirectories (default):
- node_modules
- bower_components (nothing to cache)
-----> Build succeeded!
├── body-parser#1.16.0
├── connect-busboy#0.0.2
├── cookie-parser#1.3.5
├── debug#2.2.0
├── execsql#0.0.3
├── express#4.12.4
├── gm#1.23.0
├── jade#1.11.0
├── jsonfile#2.4.0
├── module#0.0.1
├── moment#2.17.1
├── morgan#1.5.3
├── multer#0.1.6
├── node-hl7#0.1.3
├── node-mv#0.1.3
├── nodemon#1.11.0
├── periodic-task#0.1.2
├── request#2.79.0
├── serve-favicon#2.2.1
└── string#3.3.3
-----> Discovering process types
Procfile declares types -> web
-----> Compressing...
Done: 20.2M
-----> Launching...
Released v3
https://warm-coast-28316.herokuapp.com/ deployed to Heroku
Your log contents only show your most recent deploy of your application to Heroku. You need to retrieve the later log messages to see what happened.
I know this because every single Heroku web request generates a log entry, and your logs show none.
What you can do is this:
Visit your Heroku app. Get the error.
Run the heroku logs command to view the most recently logs (and errors).
If you want to keep your logs running while you are testing your app so you don't have to constantly repeat the heroku logs command, you can say:
$ heroku logs --tail
This will open a 'stream' of logs that you can continue viewing in real-time.
I'm having trouble to import a generated package with Intellij, however without any changes to the default settings it works on Eclipse.
Here is my architechture:
├── build.properties
├── pom.xml
├── README.md
├── src
│ ├── main
│ │ ├── java
│ │ └── mypackage
│ └── test
└── target
├── classes
│ └── mypackage
| └── generated
├── generated-sources
├── generated-test-sources
├── APP.jar
└── test-classes
I have most of my classes in com.mypackage however some of them are generated in
└── target
├── classes
└── mypackage
named as com.mypackage.generated and i have to use these classes in com.mypackage:
├── src
├── main
├── java
└── mypackage
However intellij cannot resolve symbol generated when I'm doing
import com.mypackage.generated
I tried to make it work by looking at the project structure/modules/dependencies menu but it seems to be for external modules. How can I do this ?
Actually it was very simple, I only was about marking classes as sources root. I don't know why marking generated as sources root did not work.
I am working on a Beaglebone Black, using Yocto.
Using this implementation of a PWM driver as a guide, I am unable to add my PWMs to the device tree.
The best solution would be to create a device tree overlay as Mr. Saad Ahmad is doing, but I don't understand how to do this using Yocto.
I am not using capemgr, but I am using meta-bbb. I also have custom layer meta-tfe which currently holds the pwm-driver and some examples. This layer also defines a new bitbake image recipe:
include recipes-core/images/core-image-base.bb
IMAGE_INSTALL += "\
helloworld \
hellokernel \
bbb-pwm \
"
KERNEL_MODULE_AUTOLOAD += "\
hellokernel \
bbb-pwm \
"
export IMAGE_BASENAME = "tfe-image-base"
Following is the .bb file of the pwm-driver:
DESCRIPTION = "PWM kernel module"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=d41d8cd98f00b204e9800998ecf8427e"
PR = "r0"
inherit module
SRC_URI = "file://bbb-pwm.c \
file://Makefile \
file://COPYING \
"
S = "${WORKDIR}"
Does anyone know how to do this?
Edit:
A colleague hinted that I could use a .bbappend file, appending to the kernel build-rules in meta-bbb. Hence this is what I did, and now my recipes-kernel directory now looks like this:
.
├── bbb-pwm
│ ├── bbb-pwm.bb
│ └── files
│ ├── bbb-pwm.c
│ ├── COPYING
│ └── Makefile
├── hellokernel
│ └── {...}
└── linux
├── linux-stable_4.1
│ └── {...}
├── linux-stable_4.1.bbappend
├── linux-stable_4.4
│ └── {...}
├── linux-stable_4.4.bbappend
├── linux-stable_4.5
│ └── dts
│ ├── bbb-pwm.dts
│ └── sc_pwm_P8_13-00A0.dtsi
└── linux-stable_4.5.bbappend
The directories linux-stable_4.*/ all have the same structure, to reflect the mirrored structure in meta-bbb.
My .bbappend files look like this:
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}/dts:"
KERNEL_DEVICETREE_beaglebone += " \
bbb-pwm.dtb \
"
However, when bitbaking, an error occurs saying there are no build rules for bbb-pwm.dtb:
| make[3]: *** No rule to make target 'arch/arm/boot/dts/bbb-pwm.dtb'. Stop.
| arch/arm/Makefile:333: recipe for target 'bbb-pwm.dtb' failed
Edit: Here is sc_pwm_P8_13-00A0.dtsi
When you want to use a custom device tree and edit the KERNEL_DEVICETREE variable, the device tree sources (*.dts files and *.dtsi files) are searched in arch/arm/boot/dts (according to your architecture).
In your example your files are placed in a separate folder and not fetched by the bbappend file. The correct layer structure would be following:
└── linux
├── linux-stable_4.5
│ └── git
│ └── arch
│ └── arm
│ └── boot
│ └── dts
│ ├── bbb-pwm.dts
│ └── sc_pwm_P8_13-00A0.dtsi
└── linux-stable_4.5.bbappend
To make bitbake sensible for those new files they have to be added via the SRC_URI variable in the bbappend file:
SRC_URI += "file://git/arch/arm/boot/dts/bbb-pwm.dts"
SRC_URI += "file://git/arch/arm/boot/dts/sc_pwm_P8_13-00A0.dtsi"