Mirror directories between mc / github #4169
Conversation
0bd1671
to
b869371
| options: { | ||
| presets: ["react"], // require("babel-preset-react") | ||
| plugins: [["transform-object-rest-spread", {"useBuiltIns": true}]] | ||
| } |
dmose
May 25, 2018
Member
Is that supposed to be part of this PR?
Is that supposed to be part of this PR?
k88hudson
May 25, 2018
Author
Member
sorry, bad rebase – should be fixed now
sorry, bad rebase – should be fixed now
That's a reasonable approach too.
Nice; I like it.
+1
We could consider something like https://www.npmjs.com/package/watch-and-rsync I suppose. |
886c414
to
ddef1f2
|
Main issue is breaking m-c's eslint and .mcignore not being rooted. Maybe concerning is activity-stream's gitignore potentially causing a file to be skipped for mozilla-central (but we happen to be okay as files we care about are already checked in). |
| *.update.rdf | ||
| bin/prerender.js | ||
| bin/prerender.js.map | ||
| locales/ |
Mardak
May 31, 2018
Member
I tried running buildmc and noticed all the prerendered/locales directory shows up as deleted. Perhaps we should be explicit to ignore /locales/ and similarly other /root-directory-file?
I tried running buildmc and noticed all the prerendered/locales directory shows up as deleted. Perhaps we should be explicit to ignore /locales/ and similarly other /root-directory-file?
| system-addon/prerendered/ | ||
| data/content/activity-stream.bundle.js | ||
| data/content/*.js.map | ||
| data/locales.json |
Mardak
May 31, 2018
Member
I noticed locales.json being copied over, but I was initially confused why it didn't show up in mozilla-central's git status, and it's because m-c git recursively looks at sub .gitignores. We happen to be okay with existing checked-in-to-m-c files, but at least for right now, just because we don't want to check something in to activity-stream repository doesn't mean we also want to ignore it in mozilla-central, e.g., prerendered/ files.
It does look like the only ignored and untracked file is locales.json, so maybe we just make sure that's added to .mcignore?
I noticed locales.json being copied over, but I was initially confused why it didn't show up in mozilla-central's git status, and it's because m-c git recursively looks at sub .gitignores. We happen to be okay with existing checked-in-to-m-c files, but at least for right now, just because we don't want to check something in to activity-stream repository doesn't mean we also want to ignore it in mozilla-central, e.g., prerendered/ files.
It does look like the only ignored and untracked file is locales.json, so maybe we just make sure that's added to .mcignore?
k88hudson
Jun 4, 2018
Author
Member
I think probably the right thing to do here is not to copy over the .gitignore
I think probably the right thing to do here is not to copy over the .gitignore
| copy: cpx "system-addon/**/{,.}*" $npm_package_config_mc_dir/browser/extensions/activity-stream | ||
| pre: rimraf $npm_package_config_mc_dir/browser/extensions/activity-stream/ | ||
| bundle: => bundle | ||
| copy: rsync --exclude-from .mcignore -a . $npm_package_config_mc_dir/browser/extensions/activity-stream/ |
Mardak
May 31, 2018
Member
If we want the m-c version of the repository to be accurate, we do indeed want to copy over dot files including .eslintrc; however:
$ ./mach lint browser/extensions/activity-stream/
An error occurred running eslint. Please check the following error messages:
Oops! Something went wrong! :(
ESLint: 4.19.1.
ESLint couldn't find the plugin "eslint-plugin-import". This can happen for a couple different reasons:
1. If ESLint is installed globally, then make sure eslint-plugin-import is also installed globally. A globally-installed ESLint cannot find a locally-installed plugin.
2. If ESLint is installed locally, then it's likely that the plugin isn't installed correctly. Try reinstalling by running the following:
npm i eslint-plugin-import@latest --save-dev
I don't think we want to require m-c eslint to require our additional plugins yet. I suppose one simple fix is to have m-c/.eslintignore ignore all of browser/extensions/activity-stream ?? I believe @Standard8 has mentioned it's more acceptable for us as we run it ourselves. Although for anyone who tries to modify activity-stream directly from m-c won't get linting coverage…
If we want the m-c version of the repository to be accurate, we do indeed want to copy over dot files including .eslintrc; however:
$ ./mach lint browser/extensions/activity-stream/
An error occurred running eslint. Please check the following error messages:
Oops! Something went wrong! :(
ESLint: 4.19.1.
ESLint couldn't find the plugin "eslint-plugin-import". This can happen for a couple different reasons:
1. If ESLint is installed globally, then make sure eslint-plugin-import is also installed globally. A globally-installed ESLint cannot find a locally-installed plugin.
2. If ESLint is installed locally, then it's likely that the plugin isn't installed correctly. Try reinstalling by running the following:
npm i eslint-plugin-import@latest --save-dev
I don't think we want to require m-c eslint to require our additional plugins yet. I suppose one simple fix is to have m-c/.eslintignore ignore all of browser/extensions/activity-stream ?? I believe @Standard8 has mentioned it's more acceptable for us as we run it ourselves. Although for anyone who tries to modify activity-stream directly from m-c won't get linting coverage…
k88hudson
Jun 4, 2018
Author
Member
I tried ignoring .eslintrc.js, although for some reason i'm having trouble properly excluding files in .eslintignore (either a local one or the global one) when running ./mach lint
I tried ignoring .eslintrc.js, although for some reason i'm having trouble properly excluding files in .eslintignore (either a local one or the global one) when running ./mach lint
k88hudson
Jun 5, 2018
•
Author
Member
Applying this patch seems to ignore everything except node_modules; adding node_modules doesn't seem to work, and node_modules seems to be declared elsewhere anyway, which is weird:
diff --git a/.eslintignore b/.eslintignore
index a7846d0e5630..c19e4a2d497a 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -93,6 +93,10 @@ browser/extensions/pocket/content/panels/js/vendor/**
browser/extensions/activity-stream/data/content/activity-stream.bundle.js
browser/extensions/activity-stream/test/**
browser/extensions/activity-stream/vendor/**
+browser/extensions/activity-stream/*.js
+browser/extensions/activity-stream/bin/**
+browser/extensions/activity-stream/loaders/**
+browser/extensions/activity-stream/content-src/**
# The only file in browser/locales/ is pre-processed.
browser/locales/**
# imported from chromium
Applying this patch seems to ignore everything except node_modules; adding node_modules doesn't seem to work, and node_modules seems to be declared elsewhere anyway, which is weird:
diff --git a/.eslintignore b/.eslintignore
index a7846d0e5630..c19e4a2d497a 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -93,6 +93,10 @@ browser/extensions/pocket/content/panels/js/vendor/**
browser/extensions/activity-stream/data/content/activity-stream.bundle.js
browser/extensions/activity-stream/test/**
browser/extensions/activity-stream/vendor/**
+browser/extensions/activity-stream/*.js
+browser/extensions/activity-stream/bin/**
+browser/extensions/activity-stream/loaders/**
+browser/extensions/activity-stream/content-src/**
# The only file in browser/locales/ is pre-processed.
browser/locales/**
# imported from chromium
k88hudson
Jun 5, 2018
Author
Member
Ok, so looks like we also needed to update python lint configuration
diff --git a/.flake8 b/.flake8
index 4df557d37236..ff91d4f4e460 100644
--- a/.flake8
+++ b/.flake8
@@ -3,6 +3,7 @@
ignore = E121, E123, E126, E129, E133, E226, E241, E242, E704, W503, E402, E741
max-line-length = 99
exclude =
+ browser/extensions/activity-stream/node_modules/,
browser/extensions/mortar/ppapi/,
build/pymake/,
testing/mochitest/pywebsocket,
and cpplint?
diff --git a/tools/lint/cpp-virtual-final.yml b/tools/lint/cpp-virtual-final.yml
index 319e971ac68b..f8f8ccb12779 100644
--- a/tools/lint/cpp-virtual-final.yml
+++ b/tools/lint/cpp-virtual-final.yml
@@ -10,6 +10,7 @@ cpp-virtual-final:
- gfx/skia
- media/webrtc/trunk
- security/sandbox/chromium
+ - browser/extensions/activity-stream/node_modules
extensions: ['cpp', 'h', 'mm']
type: regex
#
Ok, so looks like we also needed to update python lint configuration
diff --git a/.flake8 b/.flake8
index 4df557d37236..ff91d4f4e460 100644
--- a/.flake8
+++ b/.flake8
@@ -3,6 +3,7 @@
ignore = E121, E123, E126, E129, E133, E226, E241, E242, E704, W503, E402, E741
max-line-length = 99
exclude =
+ browser/extensions/activity-stream/node_modules/,
browser/extensions/mortar/ppapi/,
build/pymake/,
testing/mochitest/pywebsocket,and cpplint?
diff --git a/tools/lint/cpp-virtual-final.yml b/tools/lint/cpp-virtual-final.yml
index 319e971ac68b..f8f8ccb12779 100644
--- a/tools/lint/cpp-virtual-final.yml
+++ b/tools/lint/cpp-virtual-final.yml
@@ -10,6 +10,7 @@ cpp-virtual-final:
- gfx/skia
- media/webrtc/trunk
- security/sandbox/chromium
+ - browser/extensions/activity-stream/node_modules
extensions: ['cpp', 'h', 'mm']
type: regex
#
Mardak
Jun 5, 2018
Member
What do we end up linting with that .eslintignore? If nothing, then browser/extensions/activity-stream should be enough to stop eslint?
What do we end up linting with that .eslintignore? If nothing, then browser/extensions/activity-stream should be enough to stop eslint?
k88hudson
Jun 5, 2018
Author
Member
we still lint all of lib/ and common/ I guess :P but if we're ok with ignoring the whole thing, that's probably fine too
we still lint all of lib/ and common/ I guess :P but if we're ok with ignoring the whole thing, that's probably fine too
| copy: =>buildmc:copy -- -w | ||
| pre: =>buildmc | ||
| # This copies only the system addon sub-folder; changing anything outside of it will need a full rebuild. | ||
| copy: cpx "{{,.}*,!(dist|logs|node_modules|ping-centre)/**/{,.}*}" $npm_package_config_mc_dir/browser/extensions/activity-stream/ -w |
Mardak
May 31, 2018
Member
If startmc is primarily to streamline development process, I think it's okay if we're a bit excessive in copying. So ignoring just node_modules will probably be good enough to keep this fast. Otherwise we might try too hard to keep this ignore list exact.
If startmc is primarily to streamline development process, I think it's okay if we're a bit excessive in copying. So ignoring just node_modules will probably be good enough to keep this fast. Otherwise we might try too hard to keep this ignore list exact.
|
Here's the files that are being linted from m-c:
I don't think we want the prerendered stuff linted. I see there's already:
So I think we're good to just ignore completely: |
|
For the other linters and node_modules.. I don't think we want to officially support people running We'll want to do this change in its own export commit to m-c, so we can do a normal export, export just this and fix up .eslintignore at the same time. |
|
Here's the list of changes for the export commit, and I've highlighted a few items: new file: browser/extensions/activity-stream/.mcignore
new file: browser/extensions/activity-stream/.nvmrc
new file: browser/extensions/activity-stream/.sass-lint.yml
new file: browser/extensions/activity-stream/.travis.yml
new file: browser/extensions/activity-stream/CHANGELOG.md
new file: browser/extensions/activity-stream/CODEOWNERS
new file: browser/extensions/activity-stream/LICENSE
modified: browser/extensions/activity-stream/README.md
new file: browser/extensions/activity-stream/bin/download-firefox-artifact
new file: browser/extensions/activity-stream/bin/download-firefox-travis.sh
new file: browser/extensions/activity-stream/bin/prepare-mochitests-dev
new file: browser/extensions/activity-stream/bin/process-system-addon-for-package.js
new file: browser/extensions/activity-stream/bin/render-activity-stream-html.js
new file: browser/extensions/activity-stream/bin/strings-import.js
new file: browser/extensions/activity-stream/bin/test-merges.js
new file: browser/extensions/activity-stream/bin/update-version.js
new file: browser/extensions/activity-stream/content-src/activity-stream-prerender.jsx
new file: browser/extensions/activity-stream/content-src/activity-stream.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/asrouter-content.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/components/Button/Button.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/components/Button/_Button.scss
new file: browser/extensions/activity-stream/content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/components/ModalOverlay/_ModalOverlay.scss
new file: browser/extensions/activity-stream/content-src/asrouter/components/SnippetBase/SnippetBase.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/components/SnippetBase/_SnippetBase.scss
new file: browser/extensions/activity-stream/content-src/asrouter/schemas/message-format.md
new file: browser/extensions/activity-stream/content-src/asrouter/schemas/provider-response.schema.json
new file: browser/extensions/activity-stream/content-src/asrouter/template-utils.js
new file: browser/extensions/activity-stream/content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/templates/OnboardingMessage/_OnboardingMessage.scss
new file: browser/extensions/activity-stream/content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx
new file: browser/extensions/activity-stream/content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.schema.json
new file: browser/extensions/activity-stream/content-src/asrouter/templates/SimpleSnippet/_SimpleSnippet.scss
new file: browser/extensions/activity-stream/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx
new file: browser/extensions/activity-stream/content-src/components/ASRouterAdmin/ASRouterAdmin.scss
new file: browser/extensions/activity-stream/content-src/components/Base/Base.jsx
new file: browser/extensions/activity-stream/content-src/components/Base/_Base.scss
new file: browser/extensions/activity-stream/content-src/components/Card/Card.jsx
new file: browser/extensions/activity-stream/content-src/components/Card/_Card.scss
new file: browser/extensions/activity-stream/content-src/components/Card/types.js
new file: browser/extensions/activity-stream/content-src/components/CollapsibleSection/CollapsibleSection.jsx
new file: browser/extensions/activity-stream/content-src/components/CollapsibleSection/_CollapsibleSection.scss
new file: browser/extensions/activity-stream/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx
new file: browser/extensions/activity-stream/content-src/components/ConfirmDialog/ConfirmDialog.jsx
new file: browser/extensions/activity-stream/content-src/components/ConfirmDialog/_ConfirmDialog.scss
new file: browser/extensions/activity-stream/content-src/components/ContextMenu/ContextMenu.jsx
new file: browser/extensions/activity-stream/content-src/components/ContextMenu/_ContextMenu.scss
new file: browser/extensions/activity-stream/content-src/components/ErrorBoundary/ErrorBoundary.jsx
new file: browser/extensions/activity-stream/content-src/components/ErrorBoundary/_ErrorBoundary.scss
new file: browser/extensions/activity-stream/content-src/components/LinkMenu/LinkMenu.jsx
new file: browser/extensions/activity-stream/content-src/components/ManualMigration/ManualMigration.jsx
new file: browser/extensions/activity-stream/content-src/components/ManualMigration/_ManualMigration.scss
new file: browser/extensions/activity-stream/content-src/components/Search/Search.jsx
new file: browser/extensions/activity-stream/content-src/components/Search/_Search.scss
new file: browser/extensions/activity-stream/content-src/components/SectionMenu/SectionMenu.jsx
new file: browser/extensions/activity-stream/content-src/components/Sections/Sections.jsx
new file: browser/extensions/activity-stream/content-src/components/Sections/_Sections.scss
new file: browser/extensions/activity-stream/content-src/components/StartupOverlay/StartupOverlay.jsx
new file: browser/extensions/activity-stream/content-src/components/StartupOverlay/_StartupOverlay.scss
new file: browser/extensions/activity-stream/content-src/components/TopSites/TopSite.jsx
new file: browser/extensions/activity-stream/content-src/components/TopSites/TopSiteForm.jsx
new file: browser/extensions/activity-stream/content-src/components/TopSites/TopSiteFormInput.jsx
new file: browser/extensions/activity-stream/content-src/components/TopSites/TopSites.jsx
new file: browser/extensions/activity-stream/content-src/components/TopSites/TopSitesConstants.js
new file: browser/extensions/activity-stream/content-src/components/TopSites/_TopSites.scss
new file: browser/extensions/activity-stream/content-src/components/Topics/Topics.jsx
new file: browser/extensions/activity-stream/content-src/components/Topics/_Topics.scss
new file: browser/extensions/activity-stream/content-src/lib/constants.js
new file: browser/extensions/activity-stream/content-src/lib/detect-user-session-start.js
new file: browser/extensions/activity-stream/content-src/lib/init-store.js
new file: browser/extensions/activity-stream/content-src/lib/link-menu-options.js
new file: browser/extensions/activity-stream/content-src/lib/section-menu-options.js
new file: browser/extensions/activity-stream/content-src/lib/snippets.js
new file: browser/extensions/activity-stream/content-src/styles/_activity-stream.scss
new file: browser/extensions/activity-stream/content-src/styles/_icons.scss
new file: browser/extensions/activity-stream/content-src/styles/_normalize.scss
new file: browser/extensions/activity-stream/content-src/styles/_theme.scss
new file: browser/extensions/activity-stream/content-src/styles/_variables.scss
new file: browser/extensions/activity-stream/content-src/styles/activity-stream-linux.scss
new file: browser/extensions/activity-stream/content-src/styles/activity-stream-mac.scss
new file: browser/extensions/activity-stream/content-src/styles/activity-stream-windows.scss
new file: browser/extensions/activity-stream/contributing.md
modified: browser/extensions/activity-stream/data/content/activity-stream.bundle.js
modified: browser/extensions/activity-stream/data/content/activity-stream.bundle.js.map
+ new file: browser/extensions/activity-stream/data/locales.json
new file: browser/extensions/activity-stream/docs/ISSUE_TEMPLATE.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/1.GETTING_STARTED.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/data_dictionary.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/data_events.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/mochitests.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/preferences.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/sections.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/snippets.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/telemetry.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/test-merges.md
new file: browser/extensions/activity-stream/docs/v2-system-addon/unit_testing_guide.md
modified: browser/extensions/activity-stream/install.rdf.in
new file: browser/extensions/activity-stream/karma.mc.config.js
modified: browser/extensions/activity-stream/lib/ActivityStream.jsm
new file: browser/extensions/activity-stream/loaders/inject-loader.js
new file: browser/extensions/activity-stream/package-lock.json
new file: browser/extensions/activity-stream/package.json
- deleted: browser/extensions/activity-stream/test/.eslintrc.js
- deleted: browser/extensions/activity-stream/test/functional/mochitest/.eslintrc.js
new file: browser/extensions/activity-stream/test/unit/content-src/components/Base.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/Card.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/CollapsibleSection.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/ComponentPerfTimer.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/ConfirmDialog.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/ContextMenu.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/ErrorBoundary.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/LinkMenu.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/ManualMigration.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/Search.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/SectionMenu.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/Sections.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/StartupOverlay.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/TopSites.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/components/Topics.test.jsx
new file: browser/extensions/activity-stream/test/unit/content-src/lib/detect-user-session-start.test.js
new file: browser/extensions/activity-stream/test/unit/content-src/lib/snippets.test.js
new file: browser/extensions/activity-stream/webpack.prerender.config.js
new file: browser/extensions/activity-stream/webpack.system-addon.config.js
new file: browser/extensions/activity-stream/yamscripts.ymlI suppose deleting the eslintrc files will be fine as they aren't being used in m-c anyway. The data/locales.json is a built file (like bin/prerender.js) that hasn't been checked in to m-c recently as it's not used by the add-on, so I think it should be skipped with mcignore as well. |
|
Looks like it's working good enough. Maybe some unnecessary files but nothing broken. We'll probably want to export this without any other changes while also fixing up eslintignore. |
| *.pyc | ||
| logs/ | ||
| dist/ | ||
| ping-centre/ |
Mardak
Jun 6, 2018
Member
Just making sure, this is intended to ignore both /ping-centre/ and /test/unit/ping-centre? I think it would be clearer if we were explicit about which things should be root vs matching anywhere. The /locales/ fix avoided the prerendered missing files. As noted elsewhere, skipping all .eslintrc.js files happens to be fine too. But it's unclear if that was actually intentional or not.
Maybe have all the "match anywhere" patterns first then separately all the / root patterns (e.g., .git, node_modules, logs, dist)
Just making sure, this is intended to ignore both /ping-centre/ and /test/unit/ping-centre? I think it would be clearer if we were explicit about which things should be root vs matching anywhere. The /locales/ fix avoided the prerendered missing files. As noted elsewhere, skipping all .eslintrc.js files happens to be fine too. But it's unclear if that was actually intentional or not.
Maybe have all the "match anywhere" patterns first then separately all the / root patterns (e.g., .git, node_modules, logs, dist)
k88hudson
Jun 6, 2018
Author
Member
Yep, that sounds good
Yep, that sounds good
k88hudson
Jun 6, 2018
•
Author
Member
I guess we do want to ignore ping centre tests if we aren't copying the source code
I guess we do want to ignore ping centre tests if we aren't copying the source code
| /locales/ | ||
| .gitignore | ||
| .eslintrc.js | ||
| .eslintignore |
Mardak
Jun 6, 2018
Member
Actually, when we ignore all of activity-stream/**, we can copy over these eslint files now without breaking ./mach lint
Actually, when we ignore all of activity-stream/**, we can copy over these eslint files now without breaking ./mach lint
|
|
||
| ## Where should I file bugs? | ||
|
|
||
| Although we regularly check the ActivityStream:NewTab component on Bugzilla, we generally | ||
| like to file bugs at https://github.com/mozilla/activity-stream/issues. | ||
| Although we regularly check the ActivityStream:NewTab component on Bugzilla. |
Mardak
Jun 6, 2018
Member
This is just a fragment. I guess just remove "Although" ;)
This is just a fragment. I guess just remove "Although" ;)
This PR is intended to make our github repository closer to a mirror of the browser/extensions/activity-stream/ folder in MC. It's based off @dmose's work in #4160 with a slightly different approach:
system-addon/subdirectory, I chose to move files in our github repository. The reason for this is that all the code that needs to be changed in mc for file moves (such as eslint, license files) are more distributed whereas all the changes to get rid ofsystem-addon/in github are local to our repo.bundletask that could be run from the mozilla central directory directly,buildmcstill works as it does nowrsyncand a.mcignorefile listing all files and directories to ignorecpxwith a glob there but having that in two places is not greatThe first commit here is a directory move commit, the second contains all path changes and new build tasks.
To test this, I would recommend:
mozilla-centraldirectory;npm install && npm run bundle && ./mach build browser/extensions/activity-stream && ./mach runto see if your change was compiled correctlyimportmcfrom github directory to see if the change was correctly imported