Magento : 2 “Argument passed must be an instance of Customeractivation” - magento2

I have one module, as "Customeractivation".
In "customeractivation" Observer file, I want to call some methods of helper class of "customeractivation" module.
But when i injected dependencies to construct method i am getting following error.
Argument passed must be an instance of Customeractivation”

Try to remove an old generated files using rm -rf var/generation/* command in magento versions less than 2.2 and use rm -rf generated/* for the Magento greater than 2.2 from the magento root directory.

Related

Install an executable created by another recipe in Yocto

On Yocto, I have a recipe (application_1.0.0.bb) with a dependency to Poco package (poco_1.11.2.bb):
DEPENDS = "poco"
In the configure step of application_1.0.0.bb, I need to use arc.
This is an executable that the Poco recipe generates. In the poco/1.11.2-r0 workdir, I can see it under poco/1.11.2-r0/package/usr/bin/arc. However, it is not transfered to the application workdir.
I need a bbappend recipe but I cannot seem to make it work, poco_%.bbappend:
do_install:append() {
install -d ${D}${bindir}
install -m 0755 ${WORKDIR}/package/usr/bin/arc ${D}${bindir}
This gives an already stripped error, so I added INSANE_SKIP:${PN}:append = "already-stripped" but arc is still not present in application_1.0.0 WORKDIR.
do_install is a task where files are copied from build system to build target. Hence, it is mandatory to use variable FILES_PN to install files in your target.
Then, I advice you to add in your .bbappend:
FILES_PN += "/usr/bin/arc"
Note that do_install:append is a deprecated method. Use do_install_append instead. Also, you can remove this task if arc executable is already inside your workdir. You need to read documentation https://docs.yoctoproject.org/

Installing a shim library with yocto

So as the title indicates, I am trying install a shim library with Yocto. There are several recipes that are dependent on a base library (we'll call it libA.so), so the base recipe installs it in /usr/lib64. To satisfy a system requirement, the shim library allows for reading/writing an "enable" bitmask that allows or denies access to a single API call, and otherwise uses dlopen() to provide runtime access to the rest of the base library APIs.
My current attempt at doing this is to add a .bbappend for the recipe that installs the "base" libA.so, moving it to a directory outside default linker paths (we'll call it arb_path). A separate recipe then puts the shim in it's place.
The applicable excerpt from base_lib.bbappend for the base library recipe:
...
FILES_${PN} += "{arb_path}libA.so"
FILES_${PN}_remove = "${libdir}libA.so"
do_install_append() {
install -d ${D}${arb_path}
install -m 0755 ${S}/libA.so ${D}${arb_path}
#rm ${D}${libdir}/libA.so
}
And an excerpt from the shim.bb
DEPENDS = "base_lib"
RDEPENDS_${PN} = "base_lib"
FILES_${PN} = "${libdir}/libA.so"
#Compiles shim library to ${WORKDIR}/bin
do_install () {
install -d ${D}${libdir}
install -m 0755 ${WORKDIR}/bin/libA.so ${D}${libdir}
}
With the rm line commented in the .bbappend I get an error stating that "shim is trying to install to a shared area when the files already exist. With that line uncommented, I get a bunch of "Undefined references to" functions in the base libA.so because my shim doesn't expose them at compile time, but at runtime by dlopen()ing the base library.
So my question is, how in yocto would I go about making the base library available to dependencies during compilation, but having them go through the shim at runtime (without having to provide compile time definitions for 100s of APIs the base library declares)?

AppBundle symfony 4

I have a problem with Symfony 4, I want generate entities from an existing database with the command :
php bin/console doctrine:mapping:import --force AppBundle xml
But an error appears :
Bundle "AppBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your App\Kernel.php file?
I try to import in the file kernel.php in registerBundles() :
new AppBundle/AppBundle();
but undefined class and when I create it in src/AppBundle/AppBundle.php :
<?php
namespace AppBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AppBundle extends Bundle
{
}
nothing change and when I retry the command :
PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "AppBundle" from namespace "App".
Did you forget a "use" statement for another namespace? in /var/www/html/symfony/Mission3/src/Kernel.php:30
I would like to know if it's possible to create a bundle like that or if it exists an other command to generate entities from an existing database.
in SF4, The main application component is named 'App' by default and is not a bundle.
You have to manually create a dummy bundle under src\ directory in order to use old doctrine:command related to bundle.
see how to manually create a bundle here
After that, you can import/generate mappings/entities using doctrine:commands and use them in the App main module space, or in those bundles.
The SF4 maker tool don't provide bundle creation yet ... But I suppose the SF4 developers consider it's not an urge must have requirement, because they want us to focus on putting most code in the bundle less App main module.
In symfony 4 'AppBundle' is doesn't exist anymore. Try use 'App' instead 'AppBundle'

Cannot read property 'then' of undefined when installing ember-cli-coffeescript

Upon installing ember-cli i wanted to install the coffeescript add on using:
ember install ember-cli-coffeescript
as shown in the documentation but I get the error:
WARNING: Skipping npm install: package.json not found
package.json not found
Cannot read property 'then' of undefined
TypeError: Cannot read property 'then' of undefined
at Class.run (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/lib/tasks/addon-install.js:43:7)
at Class.run (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/lib/commands/install.js:39:25)
at Class.<anonymous> (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/lib/models/command.js:241:20)
at initializePromise (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:588:5)
at PromiseExt.Promise (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1076:31)
at new PromiseExt (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/lib/ext/promise.js:32:8)
at Class.validateAndRun (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/lib/models/command.js:195:12)
at /home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/lib/cli/cli.js:130:22
at tryCatch (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:538:12)
at invokeCallback (/home/daniel/.nvm/versions/node/v7.6.0/lib/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:553:13)
I don't understand what this means. I have seen this question asked in different contexts for Angular.js but those questions are related to peoples code. This question is related to the installation itself. this is a brandnew project and install.
Any ideas?
package.json file usually in the project root, called package.json - this file holds various metadata relevant to the project. This file is used to give information to npm that allows it to identify the project as well as handle the project's dependencies.
Make sure you have a proper inited Ember project. If you do not have a package.json file. Try to re-init your project using Ember init inside your project folder.
Attention: the init process may overwrite the existing files in your project. Backup if it is important.
Have you tried adding a package.json file? Easily done by running npm init

Solaris package upgrade

I'm having a lot of trouble wrapping my head around how Solaris 11 does packaging. I understand that there is a yum type packaging approach, but I would expect there to be a rpm -i and rpm -U approach that allows a package to be delivered and then installed or upgrade.
For now I have tracked down how to make a package, ie pkgmk and pkgtrans. Given this I can create a "foo_1.0.pkg" file that can be installed like this:
pkgadd -d foo_1.0.pkg
However I can not figure out how to upgrade this package with "foo_2.0.pkg":
root#hostname # pkgadd -d foo_2.0.pkg
The following packages are available:
1 foo foo
(x86) private_build
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Processing package instance <foo> from </root/foo_2.0.pkg>
foo(x86) private_build
Current administration requires that a unique instance of the <foo>
package be created. However, the maximum number of instances of the
package which may be supported at one time on the same system has
already been met.
No changes were made to the system.
What am I doing wrong? It would appear that i should use pkg update, but this seems to imply that I need to release my pkg in a repo.
First, you aren't using Solaris 11 packaging (IPS) but the legacy SVR4 packaging.
With the latter, you cannot upgrade a custom package. The only way is then simply to remove the old package and install the newer one, which is what rpm -U is doing under the hood anyway.
pkgrm foo
pkgadd -d foo_2.0.pkg foo
I had the same problem, but I was able to workaround it by passing a config file into the cmd. This is especially useful in a script when used with the "echo |" as it bypasses the confirmation prompt as well. The config file overwrites the default install properties which are located in a file here: /var/sadm/install/admin/default. The key is the instance=overwrite line. I changed some of the others as well, to avoid any other prompts that may come up. As an alternate solution you can change the default file directly and not have to reference the additional config file.
with myprog1.0 (or 2.0) already installed run the following command.
echo | pkgadd -a /opt/myprog/install.conf -d myprog2.0
contents of /opt/myprog/install.conf file:
mail=
instance=overwrite
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=ask
setuid=ask
conflict=nocheck
action=nocheck
networktimeout=60
networkretries=3
authentication=quit
keystore=/var/sadm/security
proxy=
$UPDATE
This variable does not exist under most installation environments. If it does exist (with the value yes), it means that a PKG with the same name, version and architecture is already installed on the system or that the installing PKG will overwrite an installed PKG. The original BASEDIR is then used.
So, this variable you can use in preinstall or postinstall script for any updation.