Monday, November 7, 2011

Building Growl 1.3.1

The new release of Growl is distributed in the App Store and is no longer free. The source code still is, and there are instructions on the Growl site to explain how to build it. Personally, I found the instructions a bit wordy. So, here the short version on how to download, compile, and install Growl from source:

1) If you don't have it, get and install Mercurial from this page: http://mercurial.selenic.com/downloads/

2) Open a Terminal window and enter the following commands
cd /tmp
hg clone https://code.google.com/p/growl/
cd growl
open Growl.xcodeproj

3) In the Xcode window that should have popped up disable code signing for the Growl project, as shown in this screenshot:


4) Back in the Terminal window enter these commands: (Don't enter the backslash, it's just there to indicate that the command continues on the next line.)
xcodebuild -project Growl.xcodeproj -target Growl.app \
-configuration Release
open build/Release

5) The Finder window that should have opened contains Growl.app, which you can copy to a folder of your choice and run.

Remember, due to the App Store Growl no longer checks for updates itself.

38 comments:

Fluffy Elmo said...

Thanks! This is just what I was looking for, if only to stop the upgrade notifications:)

One note, I also had to delete the line "CODE_SIGN_IDENTITY = 3rd Party Mac Developer Application: The Growl Project, LLC" from xcconfig/Release.xconfig in Xcode before it would build.

I may have caused this by building before all the code signing references were removed, or maybe it's been updated since this tutorial.

aisrael said...

I keep getting .../growl/Core/Source/GrowlApplicationController.m: error: Lexical or Preprocessor Issue: 'HgRevision.h' file not found

Whether I build using XCode or from the Terminal as per your instructions... The Growl page just says reboo^H^H^H^H^H try to build again and see if the problem goes away. It doesn't.

Mikhail said...

I'm created certificate named "3rd Party Mac Developer Application: The Growl Project, LLC" in Key Chanins. It takes about 5 seconds.

run Keychain Access.app -> Application's menu -> Certificate Assistant -> Create a certificate -> Paste certificate name and select type "code".

When xcodebuilder starts it asks for access, allow it always.

pr0ton said...

Latest source is only from 1.3, NOT 1.3.1..

Anonymous said...

I was finally able to get it built. It would not build through the xcode GUI I had to use the command line that was explained in this post. I did have to make that certificate for it to run correctly. I originally created a certificate that only had the first half of the name, not realized there was another part to it, and it wouldn't run. After deleting that one and creating a new one with the full correct name and building it through Terminal it all worked. Thanks for the info and help!

Anonymous said...

I have to apply this patch https://raw.github.com/gist/1374159/1978b5bd3eb4c7781e45e1e25cc1cfcd4401836d/no_sign.diff

skip said...
This comment has been removed by the author.
skip said...

I think the code *is* 1.3.1. The problem is that GrowlVersion.h has it as 1.3 To create a new GrowlVersion.h, delete or rename GrowlVersion.h, cd into Release, and type

CONFIGURATION=Release rake build:growl

To build everything, omit the build target:

CONFIGURATION=Release rake

--skip

togume said...

FYI - I was not able to pull down the latest version of the project. Looks like the OSS version is lagging from the current release. This is a shame, since the version available from the repo crashed when using growlnotify.

Prylux said...
This comment has been removed by the author.
Prylux said...

Created certificate named "3rd Party Mac Developer Application: The Growl Project, LLC"


Open Terminal:
cd ~/growl
>
sudo ./generateHgRevision.sh
>
xcodebuild -project Growl.xcodeproj -target Growl.app -configuration Release

John said...

I keep getting this error from the command line xcodebuild:

The following build commands failed:
CompileC build/Growl.build/Release/Growl.app.build/Objects-normal/x86_64/GrowlVersionUtilities.o Common/Source/GrowlVersionUtilities.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Anonymous said...

Thanks for the great explanation!

Anonymous said...

Having the same compile issues as stated above.

Anonymous said...

Had to patch the following to get it to build properly.

diff -r 193986cc6493 Common/Source/GrowlVersionUtilities.m
--- a/Common/Source/GrowlVersionUtilities.m Mon Nov 07 10:48:13 2011 -0600
+++ b/Common/Source/GrowlVersionUtilities.m Tue Mar 13 03:13:44 2012 -0400
@@ -251,4 +251,5 @@
}

return compareVersions(v_a, v_b);
-}
\ No newline at end of file
+}
+
diff -r 193986cc6493 Common/Source/NSStringAdditions.m
--- a/Common/Source/NSStringAdditions.m Mon Nov 07 10:48:13 2011 -0600
+++ b/Common/Source/NSStringAdditions.m Tue Mar 13 03:13:44 2012 -0400
@@ -127,4 +127,5 @@
return [[[self mutableCopy] autorelease] escapeForHTML];
}

-@end
\ No newline at end of file
+@end
+
diff -r 193986cc6493 Core/Source/GroupController.m
--- a/Core/Source/GroupController.m Mon Nov 07 10:48:13 2011 -0600
+++ b/Core/Source/GroupController.m Tue Mar 13 03:13:44 2012 -0400
@@ -32,6 +32,7 @@
{
[groupID release];
[groupArray release];
+ [super dealloc];
}

-(NSComparisonResult)compare:(id)obj2
diff -r 193986cc6493 Core/Source/GrowlMenu.h
--- a/Core/Source/GrowlMenu.h Mon Nov 07 10:48:13 2011 -0600
+++ b/Core/Source/GrowlMenu.h Tue Mar 13 03:13:44 2012 -0400
@@ -32,8 +32,8 @@
- (void)stopPulse;
- (void)pulseStatusItem;

-- (void) openGrowlPreferences:(id)sender;
-- (void) startStopGrowl:(id)sender;
+- (IBAction) openGrowlPreferences:(id)sender;
+- (IBAction) startStopGrowl:(id)sender;
- (NSMenu *) createMenu:(BOOL)forDock;
- (void) setImage:(NSNumber*)state;
- (BOOL) validateMenuItem:(NSMenuItem *)item;
diff -r 193986cc6493 Core/Source/GrowlNotificationRowView.h
--- a/Core/Source/GrowlNotificationRowView.h Mon Nov 07 10:48:13 2011 -0600
+++ b/Core/Source/GrowlNotificationRowView.h Tue Mar 13 03:13:44 2012 -0400
@@ -16,4 +16,5 @@

-(void)drawRoundedRectInRect:(NSRect)rect;

-@end
\ No newline at end of file
+@end
+
diff -r 193986cc6493 Growl.xcodeproj/project.pbxproj
--- a/Growl.xcodeproj/project.pbxproj Mon Nov 07 10:48:13 2011 -0600
+++ b/Growl.xcodeproj/project.pbxproj Tue Mar 13 03:13:44 2012 -0400
@@ -4008,9 +4008,8 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 315C88BB1068F9A200880530 /* Localization.xcconfig */;
buildSettings = {
- CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
+ CODE_SIGN_IDENTITY = "";
MACOSX_DEPLOYMENT_TARGET = 10.7;
- PROVISIONING_PROFILE = "";
};
name = Localization;
};
@@ -4896,9 +4895,8 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 93EA7FFD136908B100AB89AE /* Debug.xcconfig */;
buildSettings = {
- CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
+ CODE_SIGN_IDENTITY = "";
MACOSX_DEPLOYMENT_TARGET = 10.7;
- PROVISIONING_PROFILE = "";
};
name = Debug;
};
@@ -4906,9 +4904,8 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 93EA7FFE136908B100AB89AE /* Release.xcconfig */;
buildSettings = {
- CODE_SIGN_IDENTITY = "3rd Party Mac Developer Application";
+ CODE_SIGN_IDENTITY = "";
MACOSX_DEPLOYMENT_TARGET = 10.7;
- PROVISIONING_PROFILE = "";
};
name = Release;
};

Anonymous said...

thanks, worked for me after creating a certificate, I posted snapshots here: http://www.quora.com/Growl-app/How-do-I-build-Growl-1-3-3-from-source-on-Mac-OS-X-Lion-10-7-2

TC said...

Thanks for the nice introduction! As other people already stated, there are a few problems setting this up from scratch.
I wanted to build Growl 1.3 and HardwareGrowler.

Let's start with Growl.
There are generally the following problems to be prepared for:
1) Code signing: You can either remove the Code Sign Identity from the Release.xconfig, remove all code signing manually by clicking into all targets in XCode (not just the framework or the app) or create a self signed certificate with the right name as described by other people. The self signed certificate did not work for me, I just disabled the signing in XCode.
2) Growl 1.3 was originally compiled with an older version of XCode, compiler settings in 4.3 are a bit more strict. You will need to change the following files:
- Common/Source/GrowlVersionUtilities.m: add a newline to end of file
- Common/Source/NSStringAdditions.m: add a newline to end of file
- Core/Source/GroupController.m: add "[super dealloc];" to the end of the dealloc method
- Core/Source/GrowlMenu.h: change "(void) openGrowlPreferences:(id)sender;" and "(void) startStopGrowl:(id)sender;" to "(IBAction) openGrowlPreferences:(id)sender;" and "(IBAction) startStopGrowl:(id)sender;"
- Core/Source/GrowlNotificationRowView.h: add a newline to end of file
3) Continue with step 4 (xcodebuild -project Growl.xcodeproj -target Growl.app -configuration Release)
open build/Release), there is a better chance of it working now.

Hardwaregrowler requires you to disable code signing again (only one target this time), it is contained in the Extras/HardwareGrowler folder with an equivalent XCode project. Dependencies to the main Growl project can get a bit messy, make sure you build the Growl Framework in the Growl project first and then close that XCode window. For me the dependencies were resolved automatically although "Growl.framework" as well as "com.growl.hardwaregrowler.GNTPClientService.xpc" were marked red. This worked only if built through XCode - simply add a new build scheme with target "Release" or you will get a debug build by default (which doesn't hurt). The app is built and by default saved in your Library/Developer/Xcode/DerivedData/HardwareGrowlersomething/Build/Products/[Release|Debug] - just copy it to your Applications folder.

Good luck! ;)

Jack said...

Thanks Erik & TC, it works!

Pat said...
This comment has been removed by the author.
Pat said...

Have yet to try it, but this might solve the certificate issue, and even allow it to be built without openning xcode (ie. all command line):

http://stackoverflow.com/questions/11034133/building-ios-applications-using-xcodebuild-without-codesign

Anita Romanenko said...

You always can publish something absorbing that does not waste minutes of your life like what you see on countless other sites. This is very interesting and I will be back for more. Thanks for sharing http://awriter.org/bestessayscom

Karthika Shree said...

Excellent and very cool idea and the subject at the top of magnificence and I am happy to this post..Interesting post! Thanks for writing it.What's wrong with this kind of post exactly? It follows your previous guideline for post length as well as clarity.

IOS Training in Chennai

Freddie King said...

Thank you for taking the time and sharing this information with us. It was indeed very helpful and insightful while being straight forward and to the point.
http://www.mcdonaldsgutscheine.net/ | http://www.Startlr.com/ | http://www.SaludLimpia.com/

Afshin said...

Nice article, thanks for sharing.
طراحی سایت
طراحی وب سایت
سئو
طراحی سایت شرکتی
طراحی سایت ارزان
طراحی سایت فروشگاهی
بازاریابی اینترنتی
طراحی لوگو
طراحی اسلایدر
طراحی اپلیکیشن
طراحی سایت تهران

Jason Borne said...

We are a third party technical support service. Avast Customer Support is here to help you out with the whole procedure to Download Avast Antivirus online, We not only fix your Avast Support related issues but will guide with how to get started with your new Avast product once it gets installed successfully.We at Avast Tech Support provides service to protect your PC from potential online threats and external attacks like viruses, Trojans, malwares, spywares and phishing scams. And Avast Refund. Call on our Avast Phone Number.

Gmail Customer service is a third party technical support service for Gmail users when they face any technical issue or error in their Gmail account. Our Gmail Customer Support team solves issues like forgot Gmail account password, Gmail configuration or Sync issues, recover deleted emails and many more.

Norton Tech Support is a third party service provider and not in any way associated with Norton or any of its partner companies. At Norton Support we offer support for Norton products and sell subscription based additional warranty on computer and other peripheral devices.

roni zapplerepair said...

Why iMac Macbook production before Maverick Osx no internet recovery
This an answer

ajay kumar said...

Norton.com/setup Online Help – Step by Step guide for Norton Setup, Download & complete installation online. We are providing independent support service if in case you face problem to activate or Setup Norton product.
norton.com/setup

office.com/setup Online Help – Step by Step guide for Office Setup, Download & complete installation online. We are providing independent support service if in case you face problem to activate or Setup Office product.
office.com/setup

mcafee.com/activate Online Help – Step by Step guide for mcafee activate, Download & complete installation online. We are providing independent support service if in case you face problem to activate or Setup mcafee product.
mcafee.com/activate

Pogo Support - Call 1-844-456-8733 (US/CA) or 01444 39 0119 (UK) for Pogo-related issues. Any errors or issues will be fixed by us related to Pogo Games.
pogo support


Norton Reinstall – Norton has developed a Norton reinstall and removal tool to provides the ease of Un-installation and Re-installation. The Norton Antivirus offers you the protection from the malware, viruses, and other online threats like identity theft and data theft while shop online.
Norton Reinstall

Norton.com/setup Online Help – Step by Step guide for Norton Setup, Download & complete installation online. We are providing independent support service if in case you face problem to activate or Setup Norton product.
norton.com/setup

paul william said...

www.mcafee.com/activate
www.mcafee.com/activate
www.mcafee.com/activate
roku.com/link

office setup com said...

Before you plan to install the Office 2016 or Office 365 on your device be
it a Computer, Laptop, Mobile Phone or a Tablet, you are required to take
few important steps on of them is to remove any existing Office
installations from your PC. Just like the previous Office products, Office
2016 & 365 will conflict with the previously installed versions. So, it
becomes necessary to remove the previous office files properly.



setup.office.com

www.office.com set up said...

To Setup retail card please visit official website.
Office Retail Cards allow you to download your security product from the
internet instead of installing from a CD, ensuring recent versions.


www.office.com/myaccount

Obat Vertigo paling Ampuh said...

This information is very useful. thank you for sharing. and I will also share information about health through the website

Cara Menyembuhkan Nyeri Punggung
Pengobatan Alami untuk Tipes
Cara Mengobati Kuku Cantengan
Cara Menyembuhkan Sakit Maag Kronis
Obat Penghilang Stretch mark
Cara Mengobati Epilepsi

regina razz said...


In case any message saying ‘Stop’ pops up while installing Microsoft Office 365 due to a compatibility issue, contact our live chat support.Our online Experts through live chat will guide you through the entire process of Office setup, covering all steps and issues.Keep your 25 characters long product key with you.


Office Com Setup
office com/setup
www.office.com/setup

regina razz said...


with your entire process to setup office product online. Have you Just bought Microsoft Office product ? If yes then you can complete your Office Setup online with your product key code. You just need open office.com/setup , Install Office , Install Microsoft Office or setup.office.com into your web browser.

office setup
www.office.com/setup
office.com/setup

Anonymous said...

imo for pc

Rohit Sharma said...

Garmin Download at www.garmin.com/express. Register, Update and sync your Garmin Express today and get started with your Garmin Maps.
garmin.com/express

MCAfree support phone number said...

McAfee Support - With the growing demand for technology, the hackers and spammers are creating new ways to steal your important data. They can attack your device, steal access to your device and later ask for money in exchange for information.

McAfee Support

HP Support phone number said...

HP Support - Hewlett Packard is a world-renowned American International Company which makes Information Technology Products like PC, Laptop, Printer, Scanner and their Hardware & Software. HP products are robust and easy to use, as confirmed by many users around the world.


HP Support

Roku & Echo Device said...

If your echo won't connect to wifi Or having any problem to setup Alexa to Wifi then Don't Worry we are here to help you just follow the simple steps which is given on our website. We'll help you to connect Alexa to wifi, connect echo to wifi and amazon echo not connecting to wifi and other problems. For instant help, call us at our amazon echo help number +1-888-745-1666.
Setup echo
Setup Echo Dot