FLOSS Project Planets

KnackForge: How to update Drupal 8 core?

Planet Drupal - Sat, 2018-03-24 01:01
How to update Drupal 8 core?

Let's see how to update your Drupal site between 8.x.x minor and patch versions. For example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0. I hope this will help you.

  • If you are upgrading to Drupal version x.y.z

           x -> is known as the major version number

           y -> is known as the minor version number

           z -> is known as the patch version number.

Sat, 03/24/2018 - 10:31
Categories: FLOSS Project Planets

Chapter Three: How to Prevent Duplicate Terms During a Drupal 8 Migration

Planet Drupal - Mon, 2017-08-21 23:26

In this post I will show a custom process plugin that I created to migrate taxonomy terms. The plugin handles the creation of new terms and prevents duplicates.

Below is a portion of the migration template. In the example, I am migrating new terms into keywords vocabulary via field_keywords field.

field_keywords: - plugin: existing_term # Destination (Drupal) vocabulary name vocabulary: keywords # Source query should return term name source: term_name - plugin: skip_on_empty method: row

This is the source code for the process plugin.

Categories: FLOSS Project Planets

Thank you all!

Planet KDE - 1 hour 54 min ago

When we went public with our troubles with the Dutch tax office two weeks ago, the response was overwhelming. The little progress bar on krita.org is still counting, and we’re currently at 37,085 euros, and 857 donators. And that excludes the people who sent money to the bank directly. It does include Private Internet Access‘ sponsorship. Thanks to all you! So many people have supported us, we cannot even manage to send out enough postcards.

So, even though we’re going to get another accountant’s bill of about 4500 euros, we’ve still got quite a surplus! As of this moment, we have €29,657.44 in our savings account!

That means that we don’t need to do a fund raiser in September. Like we said, we’ve still got some features to finish. Dmitry and I are currently working on

  • Make Krita save and autosave in the background (done)
  • Improved animation rendering speed (done)
  • Improve Krita’s brush engine multi-core adaptability (under way)
  • Improve the general concurrency in Krita (under way)
  • Add touch functionality back (under way)
  • Implement the new text tool (under way)
  • Lazy brush: plug in a faster algorithm
  • Stacked brushes: was done, but needs to be redone
  • Replace the reference images docker with a reference images tool (under way)
  • Add patterns and filters to the vector support

All of that should be done before the end of the year. After that, we want to spend 2018 working on stability, polish and performance. So much will have changed that from 3.0 to 4.0 is a bigger step than from 2.9 to 3.0, even though that included the port to a new version of Qt! We will be doing new fund raisers in 2018, but we’re still discussing what the best approach would be. Kickstarters with stretch goals are very much feature oriented, and we’ve all decided that it’s time to improve what we have, instead of adding still more features, at least, for a while…

In the meantime, we’re working on the 3.2 release. We wanted to have it released yesterday, but we found a regression, which Dmitry is working hard on fixing right now. So it’ll probably be tomorrow.

Categories: FLOSS Project Planets

Bryan Pendleton: Spider Woman's Daughter: a very short review

Planet Apache - Tue, 2017-08-15 22:14

Over more than three decades, Tony Hillerman wrote a series of absolutely wonderful detective novels set on the Navajo Indian Reservation and featuring detectives Lieutenant Joe Leaphorn and Sergeant Jim Chee.

Recently, I learned that, after Hillerman's death, his daughter, Anne Hillerman, has begun publishing her own novels featuring Leaphorn, Chee, and the other major characters developed by her father, such as Officer Bernadette Manuelito.

So far, she has published three books, the first of which is Spider Woman's Daughter.

If you loved Tony Hillerman's books, I think you will find Anne Hillerman's books lovely, as well. Not only is she a fine writer, she brings an obvious love of her father's choices of setting, of character(s), and of the Navajo people and their culture.

I'm looking forward to reading the other books that she has written, and I hope she continues writing many more.

Categories: FLOSS Project Planets

myDropWizard.com: FREE migration to Drupal 8 for 10 nonprofits

Planet Drupal - Tue, 2017-08-15 22:01

Migrating your site to Drupal 8 isn't simple or cheap. Nor is maintaining it or getting support once your new Drupal 8 site is live!

This is a problem that affects all organizations using Drupal, but it's particularly hard on smaller nonprofits.

A couple weeks ago, I wrote a super long article detailing how Drupal 8 has left many small nonprofits behind. It also proposes a possible path for fixing it!

We're building an Open Source platform for nonprofit websites built on Drupal 8 and CiviCRM, available as a SaaS with hosting and support included.

That article was primarily about why - in this article I'd like to talk about the details of how!

There's a lot to discuss, but I'll try to make this article shorter. :-)

Oh, and we're looking for 10 adventurous nonprofits to join the BETA and help build it.

If you join the BETA, we'll migrate your existing site to the new Drupal 8 & CiviCRM platform for FREE!

Read more to learn about all the details we've got worked out so far...

Categories: FLOSS Project Planets

Healing clone tool first healed image

Planet KDE - Tue, 2017-08-15 19:15

This was the first time I used the new healing clone tool for the image editor in removing dust spots from a famous photo used in many online tutorials of similar programs, the user interface changed than the initially planed to be more user friendly, as the available functionality in the editor itself appeared to enable a more user friendly scenario than what I had on my head when I started coding, I will attach a screenshot of the tool and my trial to fix the image in this post. And document the journey with more details about the code and the tool usage in the next few days.

 


Categories: FLOSS Project Planets

Mediacurrent: Accessibility, Nachos, and a Responsibilities Document

Planet Drupal - Tue, 2017-08-15 15:17

I had this blog post written last week but didn’t publish because it felt wrong. It wasn’t until earlier today, when I was listening to one of my favorite public speakers, that I realized it was because I was talking at you, not to you. In truth, whenever I’ve discussed this document I keep talking about the what its purpose is and how it could bring value to our Drupal community but not why you should care.

Categories: FLOSS Project Planets

Stéphane Wirtel: PythonFOSDEM 2018

Planet Python - Tue, 2017-08-15 15:00
Because I want to be in advance this year for the organization of the PythonFOSDEM 2018, I have worked on the web site. The Call for Proposals will be announced once we have the “Go” from FOSDEM. In fact, for 2018, I do not know if we will have a room at FOSDEM, because during PythonFOSDEM 2017, we have received a sponsoring from Facebook and the organizers of FOSDEM were angry, because the sponsoring was for 1000 free beers ;-)
Categories: FLOSS Project Planets

Elevated Third: Decoupled Drupal Technologies and Techniques

Planet Drupal - Tue, 2017-08-15 14:17
Decoupled Drupal Technologies and Techniques Decoupled Drupal Technologies and Techniques Joe Flores Tue, 08/15/2017 - 12:17

Part 3 in this series is continued from a previous post, Decoupled Drupal: A 10,000ft View.

One of the main considerations when building the POWDR website was uniformity. POWDR is a holding company composed of many separate companies, all with individual websites. In order to ease the burden on content admins, we sought a solution that avoided multiple content types for each separate site. As a holding company with so many websites to maintain, managing many content types can become really complicated really quickly. It was our job to keep the content admins at top of mind in order to make their job updating the various websites as easy as possible.

Drupal Multisite for Easier Administration

The reason we ended up going with a multisite is that for each POWDR property there is a separate Drupal instance. In typical ski industry form, POWDR continues to acquire additional resorts and companies. They are constantly bringing on companies with different processes, different applications, and different third-party vendors. Many have different teams acting as admin. So, one of our first considerations was how people on the main POWDR team were going to administrate and edit all of this content.

We considered doing it all in one large API site though that plan quickly became too complicated when it came to permissions. Instead, it was decided that the project would be split up into multiple sites. Acquia made this process nice and easy. Using Acquia and Drupal 8, we were able to spin up a new multisite instance within the parent Drupal instance.

After some practice, we are now able to spin up a new instance in a matter of minutes. Using Drupal 8 and configuration, we copy the configuration from a parent skeleton site into a new site This allows the design team to start their development process with a basis on the API side without us having to reprogram and rebuild from the ground up.

Paragraphs Makes Complex Content Manageable

Working with Hoorooh Digital, we created an overarching entity structure using paragraphs that allowed us to make a baseline unit to build upon. Each paragraph was essentially a different piece of the website. They made components within Angular line up with paragraphs on the Drupal side. If you’re not familiar with paragraphs, in Drupal 8, their entities in and of themselves. This was nice for us because it allowed us to load and alter them programmatically, much like any other entity on the backend. They could be rearranged and served to the frontend from any site to meet design needs.

Implementation was one of the larger challenges of the POWDR project. The difficulty arose as we matched up the frontend to the Drupal backend. Custom code was required to ingest the paragraphs in the components. If you’re thinking about taking on this project, be sure to consider this step during the estimation process. In our experience, a good portion of the frontend development was required to render frontend components. We took the time to decide how componentry and paragraphs would be ingested from the Drupal platform, then matched up with the frontend framework. This allowed us to standardize all of the content coming out of the API so that frontends wouldn’t have to be rewritten for every site.

D8 and JSON REST API Decrease Development Time

The real power here was that, out-of-the-box, Drupal 8 does have a JSON REST API. We took that and ran with it. We realized early on that the Angular frontend and the out-of-the-box JSON API were going to require a lot of work to get them to work together. Instead of sacrificing this time, we extended the JSON encoder class in Drupal 8 and created our own POWDR format JSON encoder. This allowed us to create a serializer service and a bunch of custom entity normalizers. We then added related entities and some custom processing to meet the frontend needs. Out-of-the-box, the JSON API is built so that you’re requesting each related entity down the line. You get an entity ID and then you make another call to the API to get the content of that entity.

Essentially, what we did by extending the JSON encoder and all the entity normalizers was create an entity reference class. By using this structure we were able to load related entities, such as paragraphs and media, all on the same parent node, enabling the JSON encoder and all the entity normalizers to load the related entities and be served up as pieces on the API call. This gave POWDR the ability to create pages in much of the same structure that they’d be using on the frontend. The content admin sees a structure similar to the frontend and their API calls. POWDR is building pages on the backend in much the same way that they’re coming out on the frontend. This saves a lot of these extra extraneous API calls.

One of the great things about Drupal 8 is that it is built on Symfony, and incorporates a lot of modern PHP concepts, which helped our development of this custom API move quickly. Using Drupal 6/7, we would have to build from the ground up then figure out how the API was going to call itself. Instead, we just extended the class, extended a few other classes and, in a matter of days, had at least a working model for the design team to work from.

Overall, development was much faster for this project. Since everything was an entity point the back end API could load taxonomies, media, paragraphs in the same way and they also looked the same. This meant the design team could be presented something that is agnostic to the backend functionality but still utilizes Drupal’s media power.

To Be Continued...

In the next post of this series our hosting Partner, Acquia will cover the ins and outs of the POWDR project’s frontend design. Stay tuned!

Categories: FLOSS Project Planets

PyCharm: Support a Great Partnership: PyCharm and Django Team up Again

Planet Python - Tue, 2017-08-15 13:49

Last June (2016) JetBrains PyCharm partnered with the Django Software Foundation to generate a big boost to Django fundraising. The campaign was a huge success. Together we raised a total of $50,000 for the Django Software Foundation!

This year we hope to repeat that success. During the two-week campaign, buy a new PyCharm Professional Edition individual license with a 30% discount code, and all the money raised will go to the DSF’s general fundraising and the Django Fellowship program.

Promotion details

Up until Aug 28th, you can effectively donate to Django by purchasing a New Individual PyCharm Professional annual subscription at 30% off. It’s very simple:

1. When buying a new annual PyCharm subscription in our e-store, on the checkout page, сlick “Have a discount code?”.
2. Enter the following 30% discount promo code:
ISUPPORTDJANGO
Alternatively, just click this shortcut link to go to the e-store with the code automatically applied
3. Fill in the other required fields on the page and click the “Place order” button.

All of the income from this promotion code will go to the DSF fundraising campaign 2017 – not just the profits, but actually the entire sales amount including taxes, transaction fees – everything. The campaign will help the DSF to maintain the healthy state of the Django project and help them continue contributing to their different outreach and diversity programs.

Read more details on the special promotion page.

“Django has grown to be a world-class web framework, and coupled with PyCharm’s Django support, we can give tremendous developer productivity,” says Frank Wiles, DSF President. “Last year JetBrains was a great partner for us in support of raising money for the Django Software Foundation, on behalf of the community, I would like to extend our deepest thanks for their generous help. Together we hope to make this a yearly event!”

If you have any questions, get in touch with Django at fundraising@djangoproject.com or JetBrains at sales@jetbrains.com.

Categories: FLOSS Project Planets

Web Wash: Moving Forward with Webform in Drupal 8

Planet Drupal - Tue, 2017-08-15 13:00
In part two of our Webform tutorial, we’ll show you how to create multipage forms, apply conditional logic, create layouts and much more! We’ll take the simple newsletter signup form created in part one of this tutorial and add additional pages. Then we’ll demonstrate how to show or hide an element depending on the selection made on another element. We’ll also look at layouts and then finish off with an overview of some of the other great features Webform has to offer. For forms with many elements, it’s best to spread them across two or more pages. In this section, we’ll take the form we created in part one and move some of the elements to make a two page form. We’ll also add a preview page and make changes to the confirmation screen.
Categories: FLOSS Project Planets

Lisandro Damián Nicanor Pérez Meyer: Qt 4 removal in Debian testing (Buster)/unstable

Planet Debian - Tue, 2017-08-15 12:50
We have been announcing it: we are going to remove Qt 4 during the Buster cycle.

Or at least that's the best outcome we can expect. Removing a very highly used library is hard, as Qt4's Webkit has proved. Qt 4 is long dead upstream and we have already started to need to patch it with untested patches as in the OpenSSL 1.1 case (will be in experimental in a few hours after this post).

We will try to put as less effort as possible in keeping it alive meaning that from now on if we need to patch it to make it support a newer lib or alike we will simply remove its support if possible. Using the OpenSSL case as an example, if we need to support any version > 1.1 we will simply remove the SSL support. That means things will break.

So, if you depend on FLOSS which is still based on Qt 4 be sure to try to port it. If you depend on a proprietary vendor software which uses Qt 4 then you better start telling them it's really time to update it. Really.

We will soon start filing bugs against packages using Qt 4. I'll update this blog post later to add that info.

For the Qt/KDE team, Lisandro.
Categories: FLOSS Project Planets

GCompris- Digital Electricity Tutorial mode

Planet KDE - Tue, 2017-08-15 12:45

The last week was mostly spent in creating more tutorial levels, optimising the tutorial dataset, ability to create wires in the playArea for tutorial mode when the level loads and checking the correctness of the answer provided by the user.

The Dataset

The dataset for the tutorial mode is now updated to the following:

{ inputComponentList: [zero, one], playAreaComponentList: [orGate, digitalLight], determiningComponentsIndex: [1], wires: [ [0, 0, 1, 0] ], playAreaComponentPositionX: [0.4, 0.6], playAreaComponentPositionY: [0.3, 0.3], introMessage: [ qsTr("The OR Gate produces an output of 1 when at least one of the input terminal is of value 1"), qsTr("Turn the Digital light on using an OR gate and the inputs provided") ] }
  • The inputComponentList denotes the items that are provided to the user and can be used any number of times. It is present in the ListWidget component.
  • playAreaComponentList denotes the items which are provided to the user in the playArea. It’s position can be changed, but it cannot be deleted.
  • The wires is an array denoting the wires which should be pre-defined in the playArea, it is defined in the following manner: [from_component_index, from_component_terminal_number, to_component_index, to_component_terminal_number] from_component_index: The index of the component from the playAreaComponentList, from which the wire is to be drawn from_component_terminal_number: The terminal number of the above component from which the wire is to be drawn to_component_index: The index of the component from the playAreaComponentList, to which the wire is to be drawn to_component_terminal_number: The terminal number of the above component to which the wire is to be drawn
  • playAreaComponentPositionX/Y: The x/y position in the playArea where the component is to placed
  • introMessage: The message which is to be shown in the beginning of the tutorial level. If no message is required, it is kept blank.
Making playArea components indestructible

The components in the playArea is made indestructible by adding a property destructible (bool) to the electrical components, and the MouseArea is enabled via:

MouseArea { ... enabled: destructible ... }

This property is disabled for the playArea components, by adding:

"destructible": false

while creating.

Adding wires

Pre-defined wires in the playArea is added by traversing the wires[] array and creating wires accordingly by calling the createWire(from_component, to_component, destructible) method.

// creating wires for (i = 0; i < levelProperties.wires.length; i++) { var terminal_number = levelProperties.wires[i][1] var outTerminal = components[levelProperties.wires[i][0]].outputTerminals.itemAt(terminal_number) terminal_number = levelProperties.wires[i][3] var inTerminal = components[levelProperties.wires[i][2]].inputTerminals.itemAt(terminal_number) createWire(inTerminal, outTerminal, false) }

Similar to the previous topic destructible decides whether the wire can be deleted by the “delete” tool or not, which is set to false for playArea wires.

Checking answers

The answer checking process is divided into two parts:

  • The levels which only check if the bulb is on or not
  • The levels which asks the user to create a circuit so that the bulb glows only under certain conditions

The first case is very easy, which is achieved by checking the value of the bulb when the OK button is clicked.

if (determiningComponents[0].inputTerminals.itemAt(0).value == 1) items.bonus.good('tux') else items.bonus.bad('tux')

For the second case, we traverse through all the possible scenario for the input, check it with the output whether it passes the test. If the configuration passes all the tests, the answer is declared as correct, else it is marked as incorrect:

var digitalLight = determiningComponents[2] var switch1 = determiningComponents[0] var switch2 = determiningComponents[1] var switch1InitialState = switch1.imgSrc var switch2InitialState = switch2.imgSrc for (var A = 0; A <= 1; A++) { for (var B = 0; B <= 1; B++) { switch1.imgSrc = A == 1 ? "switchOn.svg" : "switchOff.svg" switch2.imgSrc = B == 1 ? "switchOn.svg" : "switchOff.svg" updateComponent(switch1.index) updateComponent(switch2.index) var operationResult = A ^ B if (operationResult != digitalLight.inputTerminals.itemAt(0).value) { switch1.imgSrc = switch1InitialState switch2.imgSrc = switch2InitialState updateComponent(switch1.index) updateComponent(switch2.index) items.bonus.bad('tux') return } } } items.bonus.good('tux') Future plans

For the next week, my plans are roughly:

  • Create more levels, with a proper difficulty curve for each of the components provided.
  • Add an option for “hint”, so that the user can seek help when they are stuck.
Relevant links
Categories: FLOSS Project Planets

Mediacurrent: Mediacurrent to Present at Decoupled Dev Days NYC

Planet Drupal - Tue, 2017-08-15 12:14

The Mediacurrent team is excited to be supporting the inaugural Decoupled Dev Days event in NYC this week (August 19-20) as organizers and sponsors! We hope you’ll be joining us, however, we know how busy summer weekends can be so we will be sharing session recordings after the event.
 

Categories: FLOSS Project Planets

The Licensing and Compliance Lab interviews David Rosca of QupZilla

FSF Blogs - Tue, 2017-08-15 11:55

QupZilla, currently at version 2.1.2, is a free software Web browser using the new and very fast QtWebEngine browser. It aims to be a lightweight Web browser available through all major platforms. This project was originally started only for educational purposes by a lone developer, David Rosca, and since then, QupZilla has grown into a feature-rich browser. QupZilla has all of the standard functions you expect from a Web browser. It includes bookmarks, history (including a sidebar view), and tabs. Above that, it has ad-blocking enabled by default with a built-in plugin. Over time, this one-man project has grown to include numerous contributors.

What was the educational purpose that QupZilla was started for?

When I started working on QupZilla (before it actually had a name), I had no prior experience with programming desktop applications. In fact, my only experience with programming involved simple websites written in PHP. I decided to learn how to write desktop apps, and with that, I needed some project to work on. At that time, I had some performance issues with GNU/Linux Web browsers, so I decided to try creating my own browser.

I didn't have much hopes for it to take off, so I didn't even think much about its name. Users sometimes wonder what does the QupZilla name mean, and if it has some association with Mozilla. The truth is, my imagination for these things is not great, so I just made a bizarre combination of Qt (qute) and zilla. Maybe it would be better if I had come up with different name, but it's too late now.

How are people using QupZilla?

Even though QupZilla uses a modern rendering engine and displays most of the pages correctly, there are of course compatibility issues, whether it's incompatibility with the specific site (changing User-Agent may help in this case) or a problem on the QupZilla side. While there are users that use QupZilla as their primary browser, I myself see its potential as a secondary browser due to its speed. But I can't really tell how people are using it, because there is no tracking/telemetry or anything like that in QupZilla. I don't like any form of spying on users, and I'm sure QupZilla's users feel the same about it. Since the beginning, some GNU/Linux distributions decided to ship QupZilla as their default Web browser. Chances are, there are users reading this article from QupZilla without actually knowing about it.

What features do you think really sets QupZilla apart from other browsers?

One thing that makes QupZilla appealing for GNU/Linux users is that it is based on Qt framework and thus integrates very well in Qt desktops, unlike other "big" browsers that all are based on GTK. Another feature, which is now being discussed by other big browsers but wasn't the case in the last few years, is an advertisement blocker included and enabled by default. This makes the Web pages clean, but most importantly speeds up loading noticeably. With regards to the ability to customize the browser to each user's tastes, it provides a lot of options in preferences. I won't be naming them here, but users should discover them for themselves. It also supports extensions, although it doesn't have compatibility with extensions from other browsers. Despite that, there are very useful extensions available, including the AutoScroll plugin, a TabManager plugin allowing you to effectively move tabs to the side, and also the very popular GreaseMonkey plugin for userscripts.

Why did you choose the GPLv3 as QupZilla's license?

Well, I'm not really experienced in legal stuff. I simply chose GPLv3 because of its popularity, and it perfectly suiting my needs. It is important for me that it enforces copyleft, by giving all users the freedom to redistribute and change the software.

How can users (technical or otherwise) help contribute to QupZilla?

The first thing is, naturally, by contributing code, but of course the majority of QupZilla users are non-technical. As with other projects, users can help by reporting bugs and cooperate in the bug reports. Some bugs are not easily reproduced, so being able to communicate with the reporter is required to resolve them. With reporting bugs comes hand-in-hand also requesting new features or proposing new ideas. Another thing is contributing to the graphical side of the browser, be it icons, themes or even a completely new concept of some UI part. There was a contest for the new QupZilla logo some time ago, where quite a lot of users proposed their ideas, and the final logo came out really great. But that was just a logo, there are other parts that could be improved, including internal pages like speed dial. On the documentation side, it's not great either, and translations are always appreciated. There is a wiki with some info scattered around, some of it being outdated. So there is always much to do even for users who can't contribute code. And finally, users can also donate money.

What's the next big thing for QupZilla?

The next big thing is definitely a recently-announced move under the KDE project. QupZilla will become part if the KDE project and replace Konqueror as a web browser there. I already mentioned that a better name would help the project, and this transition is a perfect opportunity to change it. Search for a new name is currently ongoing, and I hope this time we will pick a great one. Feature-wise, I wouldn't say there is going to be something really big, unless something radically changes in the near future.

I plan to continuously work on QupZilla and move it forward, but instead of having some big milestone, I'll rather call it an evolution. Of course there will be new features, for example upcoming version 2.3 to be released in following months will have a session manager, an often-requested feature from users.

Enjoy this interview? Check out our previous entry in this series, featuring Jonathan Thomas of the OpenShot Video Editor.

QupZilla logo and Maintainer images are licensed under the Creative Commons Attribution-ShareAlike 4.0 International.

Categories: FLOSS Project Planets

Running applications and unittests without "make install"

Planet KDE - Tue, 2017-08-15 11:03
KDE Project:

In our Akademy presentation, Kévin and I showed the importance for a better developer story to be able to work on a KDE module without having to install it. Running unittests and running applications without installing the module at all is possible, it turns out, it just needs a bit of effort to set things up correctly.

Once you require ECM version 5.38 (using find_package(ECM 5.38)), your libraries, plugins and executables will all go to the builddir's "bin" directory, instead of being built in the builddir where they are defined.
Remember to wipe out your builddir first, to avoid running outdated unit tests!
This change helps locating helper binaries, and plugins (depending on how they are loaded).

After doing that, see if this works:

  • make uninstall
  • ctest . (or run the application)

Oops, usually it doesn't work. Here's what you might have to do to fix things.

  • XMLGUI files: since KDE Frameworks 5.4, they can be embedded into a qrc file so that they can be found without being installed.
    The qrc should put the xmlgui file under ":/kxmlgui5/". You can use the script kde-dev-scripts/kf5/bundle_data_files.pl to automate most of this change.
  • Uninstalled plugins can be found at runtime if they are installed into the same subdir of the "bin" dir as they will be in their final destination. For instance, the cmake line install(TARGETS kio_file DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf5/kio) indicates that you want the uninstalled plugin to be in builddir/bin/kf5/kio, which can be done with the following line:
    set_target_properties(kio_file PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/kf5/kio")
    Qt uses the executable's current directory as one of the search paths for plugins, so this then works out of the box.
  • If ctest complains that it can't find the unittest executable, the fix is very simple: instead of the old syntax add_test(testname myexec) you want to use the newer syntax add_test(NAME testname COMMAND myexec)
  • Helper binaries for libraries: look for them locally first. Example from KIO:
    QString kioexec = QCoreApplication::applicationDirPath() + "/kioexec"; if (!QFileInfo::exists(kioexec)) kioexec = CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/kioexec"; // this was the original line of code
  • Helper binaries for unittests: an easy solution is to just change the current directory to the bin dir, so that ./myhelper continues to work. This can be done with QDir::setCurrent(QCoreApplication::applicationDirPath());

There are two issues I didn't solve yet: trader queries that should find uninstalled desktop files, and QML components, like in kirigami. It seems that the only solution for the latter is to reorganize the source dir to have the expected layout "org/kde/kirigami.2/*"?

Update: this howto is now a wiki page.

Categories: FLOSS Project Planets

Django Weblog: Support a Great Partnership: PyCharm and Django Team up Again

Planet Python - Tue, 2017-08-15 10:38

Last June (2016) JetBrains PyCharm partnered with the Django Software Foundation to generate a big boost to Django fundraising. The campaign was a huge success. Together we raised a total of $50,000 for the Django Software Foundation!

This year we hope to repeat that success. During the two-week campaign, buy a new PyCharm Professional Edition individual license with a 30% discount code, and all the money raised will go to the DSF’s general fundraising and the Django Fellowship program.

Promotion details

Up until Aug 28th, you can effectively donate to Django by purchasing a New Individual PyCharm Professional annual subscription at 30% off. It’s very simple:

  1. When buying a new annual PyCharm subscription in our e-store, on the checkout page, сlick “Have a discount code?”.
  2. Enter the following 30% discount promo code:
    IDONATETODJANGO

Alternatively, just click this shortcut link to go to the e-store with the code automatically applied

Fill in the other required fields on the page and click the “Place order” button.

All of the income from this promotion code will go to the DSF fundraising campaign 2017 – not just the profits, but actually the entire sales amount including taxes, transaction fees – everything. The campaign will help the DSF to maintain the healthy state of the Django project and help them continue contributing to their different outreach and diversity programs.

Read more details on the special promotion page.

“Django has grown to be a world-class web framework, and coupled with PyCharm’s Django support, we can give tremendous developer productivity,” says Frank Wiles, DSF President. “Last year JetBrains was a great partner for us in support of raising money for the Django Software Foundation, on behalf of the community, I would like to extend our deepest thanks for their generous help. Together we hope to make this a yearly event!”

If you have any questions, get in touch with Django at fundraising@djangoproject.com or JetBrains at sales@jetbrains.com.

Categories: FLOSS Project Planets

InternetDevels: The Entity Browser module in Drupal 8: mission and configuration

Planet Drupal - Tue, 2017-08-15 10:01

Creating unique content is a direct way both to Google’s and your customers’ hearts, and Drupal 8 is making the road much smoother and the journey more enjoyable! Creating interactive HTML5 content and content modelling in Drupal 8 are just a couple of examples we’ve already described.

Read more
Categories: FLOSS Project Planets

Drupal Modules: The One Percent: Drupal Modules: The One Percent — Pagerer (video tutorial)

Planet Drupal - Tue, 2017-08-15 08:23
Drupal Modules: The One Percent — Pagerer (video tutorial) NonProfit Tue, 08/15/2017 - 07:23 Episode 31

Here is where we bring awareness to Drupal modules running on less than 1% of reporting sites. Today we'll consider Pagerer, a module which offers many options when customizing your pagers.

Categories: FLOSS Project Planets

Fabio Zadrozny: PyDev 5.9.2 released (Debugger improvements, isort, certificate)

Planet Python - Tue, 2017-08-15 07:34
PyDev 5.9.2 is now available for download.
This version now integrates the performance improvements which were done in PyDev.Debugger for 3.6 (which use the new hook available by Python and changes bytecode to add calls to the debugger so that there's less overhead during the debugging -- note that this only really takes place if breakpoints are added before a given code is loaded, adding or removing breakpoints afterwards falls back to the previous approach of tracing).
Another nice feature in this release is that isort (https://github.com/timothycrosley/isort) can be used as the default engine for sorting imports (needs to be configured in preferences > PyDev > Editor > Code Style > Imports -- note that at that same preferences dialog you may save the settings to a project, not only globally).
There were also a number of bug-fixes... in particular one that prevented text searches from working if the user had another plugin which also used Lucene in a different version was really nasty... http://www.pydev.org has more details on the changes.
This is also the first release which is signed with a proper certificate (provided by Comodo) -- so, it's nice that Eclipse won't complain that the plugin is not signed when it's being installed, although I discovered that it isn't as useful as I thought... it does work as intended for Eclipse plugins, but for Windows, even signing the LiClipse installer will show a dialog for users (there's a more expensive version with extended validation which could be used, but I didn't go for that one) and on Mac OS I haven't even tried to sign as it seems Comodo certificates are worthless there (the only choice is having a development subscription from Apple and using a certificate Apple gives you... the verification they do seems compatible with what Comodo gives, which uses a DUNS number, so, it's apparently just a point of them wanting more $$$/control, not really being more secure), so, currently Mac users will still use unsigned binaries (the sha256 is provided for users which want to actually check that what they download is what's being distributed).
Categories: FLOSS Project Planets
Syndicate content